热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:elasticsearch2.4升级elasticsearch6.2心得

本文由编程笔记#小编为大家整理,主要介绍了elasticsearch2.4升级elasticsearch6.2心得相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了elasticsearch2.4升级elasticsearch6.2心得相关的知识,希望对你有一定的参考价值。



elasticsearch2.4升级elasticsearch6.2心得

服务端部分:

一、升级前准备

jdk1.8+;

二、安装步骤



  1. 下载地址
    目前最高版本6.4,谨慎起见目前使用的是6.4之前最新的一个小版本6.3

    https://www.elastic.co/guide/en/elasticsearch/reference/6.3/parent-join.html



  2. 创建elasticsearch用户和用户组(elasticsearch为了安全起见禁止了root操作权限)



  3. tar -zxvf elasticsearch-6.3.2.tar.gz



  4. 创建 data和logs目录(为后面的数据存储和日志存储的目录,所有创建的目录最后都必须所属elasticsearch用户和 用户组,不然会报没有写的权限错误) elasticsearch对系统每个进程最大同时打开文件数和进程可以拥有的VMA(虚拟内存区域)的数量有要求需要修改以下 两个文件 /etc/security/limits.conf soft nproc 65536 hard nproc 65536 /etc/sysctl.conf(修改完后需要执行sysctl -p 使之生效) vm.max_map_count=262144



  5. 修改配置文件



# 集群的名字
cluster.name: cunjk
# 节点名字
node.name: node-1
# 数据存储目录(刚刚我们创建的目录的绝对地址)
path.data: /opt/elasticsearch/data
# 日志目录
path.logs: /opt/elasticsearch/logs
#本机的ip地址
network.host: xxx.xxx.x.xxx
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["xxx.xxx.x.xxx]
# 设置节点间交互的tcp端口(集群),(默认9300)
transport.tcp.port: 9300
# 监听端口(默认)
http.port: 9200
# 增加参数,使head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"
# 开启内联脚本
script.allowed_types: inline

三、注意事项 启动的时候必须使用elasticsearch用户,且安装的elasticsearch先关文件必须是elasticsearch的用户和用户组所属权限

elasticsearch是根据cluster.name来判别集群的,如果服务器上有多个集群必须区分
elasticsearch集群启动必须先启动主节点

代码部分:

一、pom依赖



  1. lucene依赖7以上,elasticsearch为选定的6.x版本,jdk1.8+

二、API



  1. 5.x以上废弃父子文档关系,改为使用join连接详见文档https://www.elastic.co/guide/en/elasticsearch/reference/6.3/parent-join.html

{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 0
},
"mappings": {
"_doc": {
"properties": {
"t_join_field": {
"type": "join",
"relations": {
"account": "drug_sale"
}
}
}
}
}
}


  1. javaAPI参照 https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html



  2. restfulAPI参照 https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html



三、应用部分值得注意的重要更改



  1. 创建连接客户端已取消TransportClient.builder()直接构建改为更安全的PreBuiltTransportClient()构建



  2. 返回的field信息已不支持addField方法,API入口仍然保留但已弃用,github源码声明会在更高的版本完全弃用



  3. join结构的父子关系不在使用parent(parent_id)指定,理由同addField,此处需借鉴restul接口,直接声明json串



  4. 5.x以后restful的调用需要声明请求类型 请求需要加上



-H "Content-Type:application/json"
例如 curl -X GET -H "Content-Type:application/json" ‘http://xxx.xxx.x.xxx:9200/xxxx/_search?pretty‘ -d
‘{"query": {"has_child": {"type": "drug_sale","query": {"term": {"card_id": "80048540"}}}},"_source":["card_id","name"]}‘


  1. 单次最大查询量,创建索引后需执行,不然会影响滚动查询和全量查询(暂未找到对应配置)

curl -XPUT -H "Content-Type:application/json" ‘http://xxx.xxx.xx.xxx:9200/_all/_settings?preserve_existing=true‘ -d ‘{"index.max_result_window" : "30000"}‘

其他聚合及删除查询API的更改不再赘述

较与版本2.4的比较

一、速度上有了提升,尤其是删除方面6比2多了指定查询删除,在elasticsearch2.4时只能先查后删进行滚动删除比较影响数据更新的速度,6.xz之后的指定删除功能速度提高了好几倍,这样大大的提高了需要删除来进行更新的功能 其次在直接更新的速度上6较与2也有提升

二、在聚合查询和大数据量查询上,elasticsearch6.x 的Sliced Scroll的并行特性可以加快大数据量或需要大量筛查的数据的速度

升级心得

elasticsearch6.3.2的升级和测试持续了三周,在升级过程中遇到一些坑,由于elasticsearch官网对javaAPI的支持并不友好,主要还是restful接口的 描述上述标注的地方有的并未写在文档中,需要去javaAPI翻查源代码对比restful接口调试elasticsearch官网对javaAPI的支持并不全,优先功能建议先 调试restful接口,然后翻查源码,javaAPI的底层仍是调用的restful接口



推荐阅读
  • 本文详细探讨了在ASP.NET环境中通过加密数据库连接字符串来提升数据安全性的方法。加密技术不仅能够有效防止敏感信息泄露,还能增强应用程序的整体安全性。文中介绍了多种加密手段及其实施步骤,帮助开发者在日常开发过程中更好地保护数据库连接信息,确保数据传输的安全可靠。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 在《Linux高性能服务器编程》一书中,第3.2节深入探讨了TCP报头的结构与功能。TCP报头是每个TCP数据段中不可或缺的部分,它不仅包含了源端口和目的端口的信息,还负责管理TCP连接的状态和控制。本节内容详尽地解析了TCP报头的各项字段及其作用,为读者提供了深入理解TCP协议的基础。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
author-avatar
多米音乐_34216717
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有