设为首页 收藏本站
查看: 1290|回复: 0

[经验分享] ElasticSearch2.3/2.4升级到ElasticSearch5.0

[复制链接]

尚未签到

发表于 2019-1-29 06:12:02 | 显示全部楼层 |阅读模式
  ElasticSearch2.3/2.4升级到ElasticSearch5.0
  

  参考文档(排名不分先后)
https://www.elastic.co/guide/en/elasticsearch/reference/5.0/setup-upgrade.html
elasticsearch5.0变更
https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking-changes-5.0.html
logstash5.0变更
https://www.elastic.co/guide/en/logstash/5.0/breaking-changes.html
kibana5.0变更
https://www.elastic.co/guide/en/kibana/5.0/breaking-changes-5.0.html
beats5.0变更
https://www.elastic.co/guide/en/beats/libbeat/5.0/breaking-changes.html
https://www.elastic.co/guide/en/logstash/5.0/breaking-changes.html
https://github.com/elastic/elasticsearch-migration/
http://www.infoq.com/cn/news/2016/08/Elasticsearch-5-0-Elastic
http://hnr520.blog.运维网.com/4484939/1867033  

  

  注意最好用elasticsaerch-migration跑一下注意事项,我这里是抱着丢数据index的目的来升级的。
  

  近日,Elastic在官方博客中宣布,Elasticsearch 5.0正式发布。该版本基于Lucene 6.2.0,已经在Elastic Cloud上完成了部署。据称,这是迄今为止最快、最安全、最易用的版本。
  

  Elasticsearch 5.0带来了许多增强功能和新特性,主要包括:
  

  索引性能:得益于多项改进,其中包括更好的数值型数据结构,索引吞吐量大幅提升。根据应用场景的不同,索引吞吐量提升在25%到80%之间。
  Ingest节点:向Elasticsearch添加数据更简单了。Logstash是一个强大的工具,而一些较小的用户只需要过滤器,不需要它所提供的众多路由选项。因此,Elastic将一些最流行的Logstash过滤器(如grok、split)直接在Elasticsearch中实现为处理器。多个处理器可以组合成一个管道,在索引时应用到文档上。
  Painless脚本:Elasticsearch中很多地方用到了脚本,而出于安全考虑,脚本在默认情况下是禁用的,这令人相当失望。为此,Elastic开发了一种新的脚本语言Painless。该语言更快、更安全,而且默认是启用的。不仅如此,它的执行速度是Groovy的4倍,而且正在变得更快。Painless已经成为默认脚本语言,而Groovy、Javascript和Python都遭到弃用。要了解有关这门新语言的更多信息,请点击这里。
  新数据结构:Lucene 6带来了一个新的Points 数据结构K-D树,用于存储数值型和地理位置字段,彻底改变了数值型值的索引和搜索方式。基准测试表明,Points将查询速度提升了36%,将索引速度提升了71%,而占用的磁盘和内存空间分别减少了66%和85%(参见“在5.0中搜索数值”)。
  搜索和聚合:借助即时聚合,Kibana图表生成速度显著提升。Elastic用一年的时间对搜索API进行了重构,Elasticsearch现在可以更巧妙地执行范围查询,只针对已经发生变化的索引重新计算聚合,而不是针对每个查询从头开始重新计算。在搜索方面,默认的相关性计算已经由TF/IDF换成了更先进的BM25。补全建议程序经过了完全重写,将已删除的文档也考虑了进来。
  更友好:Elasticsearch 5.0更安全、更易用。他们采用了“尽早提示”的方法。如果出现了问题,则新版本会及早给出提示。例如,Elasticsearch 5.0会严格验证设置。如果它不能识别某项设置的值,就会给出提示和建议。不仅如此,集群和索引设置现在可以通过null进行解除。此外,还有其他的一些改进,例如,rollover和shrink API启用了一种新的模式来管理基于时间的索引,引入新的cluster-allocation-explain API,简化索引创建。
  弹性:Elasticsearch分布式模型的每一部分都被分解、重构和简化,提升了可靠性。集群状态更新现在会等待集群中的所有节点确认。如果一个“复制片(replica shard)”被“主片(primary)”标记为失败,则主片会等待“主节点(master)”的响应。索引现在使用数据路径中的UUID,而不是索引名,避免了命名冲突。另外,Elasticsearch现在进行启动检查,确保系统配置没有问题。配置比较麻烦,但如果只是试用,开发人员也可以选择localhost-only模式,避免繁琐的配置。另外,新版本还增加了断路器及其他一些软限制,限制请求使用的内存大小,保护集群免受恶意用户***。
  此外,该版本还提供了一个底层的Java REST/HTTP客户端,可以用于监听、日志记录、请求轮询、故障节点重试等。它使用Java 7,将依赖降到了最低,比Transport客户端的依赖冲突少。而在基准测试中,它的性能并不输于Transport客户端。不过,这是一个底层客户端,目前还没有提供任何查询构建器或辅助器。它的输入参数和输出结果都是JSON。
  

  需要注意的是,该版本引入了许多破坏性更改,好在他们提供了一个迁移辅助插件,可以帮助开发人员从Elasticsearch 2.3.x/2.4.x迁移到Elasticsearch 5.0。如果是从更早的Elasticsearch版本向最新的5.0版本迁移,则请查阅升级文档。
  

  1,卸载原软件安装新软件
  cd /usr/local/src
  rpm -e elasticsearch
  rpm -e kibana
  rpm -ivh elasticsearch-5.0.0.rpm kibana-5.0.0-x86_64.rpm
  

  2,大概看了下配置文件没什么改动就直接用原来的
  diff elasticsearch.yml elasticsearch.yml.rpmsave
  mv elasticsearch.yml elasticsearch.yml.default
  cp -f elasticsearch.yml.rpmsave elasticsearch.yml
  chown elasticsearch:elasticsearch /etc/elasticsearch/elasticsearch.yml
  

  3,根据官网建议添加了如下配置到elasticsearc.yml主配置文件
  http.cors.enabled: true
  http.cors.allow-origin: "*"
  

  4,启动新的elasticsearch
  

  启动过程一直失败,通过查看错误日志发现如下问题总结如下:
  

  问题一
  [2016-11-07T11:37:54,191][WARN ][o.e.b.JNANatives         ] Unable to lock JVM Memory: error=12, reason=Cannot allocate memory
  [2016-11-07T11:37:54,191][WARN ][o.e.b.JNANatives         ] This can result in part of the JVM being swapped out.
  [2016-11-07T11:37:54,191][WARN ][o.e.b.JNANatives         ] Increase RLIMIT_MEMLOCK, soft limit: 65536, hard limit: 65536
  [2016-11-07T11:37:54,191][WARN ][o.e.b.JNANatives         ] These can be adjusted by modifying /etc/security/limits.conf, for example:
  # allow user 'elasticsearch' mlockall
  elasticsearch soft memlock unlimited
  elasticsearch hard memlock unlimited
  

  解决方法:
  /etc/security/limits.conf
  elasticsearch  soft  memlock  unlimited
  elasticsearch  hard  memlock  unlimited
  

  

  问题二
  Found index level settings on node level configuration.
  

  Since elasticsearch 5.x index level settings can NOT be set on the nodes
  configuration like the elasticsearch.yaml, in system properties or command line
  arguments.In order to upgrade all indices the settings must be updated via the
  /${index}/_settings API. Unless all settings are dynamic all indices must be closed
  in order to apply the upgradeIndices created in the future should use index templates
  to set default values.
  

  解决方法:
  注释主配置文件里面的,官方建议生成索引时再设置
  # index.number_of_shards: 5
  # index.number_of_replicas: 1
  

  Please ensure all required values are updated on all indices by executing:
  

  curl -XPUT 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
  "index.number_of_replicas" : "1",
  "index.number_of_shards" : "10"
  }'
  

  

  问题三
  java.lang.IllegalArgumentException: unknown setting [node.rack] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
  

  解决方法:
  这个是diff时唯一不同的地方,至于为啥这样改官网有介绍
  # node.rack: r1
  node.attr.rack: r1
  

  问题四
  [2016-11-07T12:26:05,957][ERROR][o.e.b.Bootstrap          ] Exception
  java.lang.IllegalArgumentException: unknown setting [script.indexed] did you mean any of [script.inline, script.ingest]?
  

  解决方法:
  目前我注释了,这个应该是语法错误,后续再查官网
  #script.inline: true
  #script.indexed: true
  

  问题五,
  max file descriptors [65535] for elasticsearch process likely too low, increase to at least [65536]
  max number of threads [1024] for user [elasticsearch] likely too low, increase to at least [2048]
  

  解决方法:
  报错信息直接提示了修改limits.conf的相关参数
  elasticsearch  soft  nofile   65536
  elasticsearch  hard  nofile   131072
  elasticsearch  soft  nproc    2048
  elasticsearch  hard  nproc    4096
  

  

  5,优化elasticsearch配置文件
  grep 'Xm' /etc/elasticsearch/jvm.options
  ## -Xms4g
  ## -Xmx4g
  # Xms represents the initial size of total heap space
  # Xmx represents the maximum size of total heap space
  -Xms20g
  -Xmx20g
  

  6,logstash安装文件位置有变动
  /usr/share/logstash/
  启动
  bin/logstash --path.settings /etc/logstash/logstash.yml
  配置logstash-input-kafka时报错
  [2016-11-11T11:17:35,740][ERROR][logstash.inputs.kafka    ] Unknown setting 'zk_connect' for kafka
  [2016-11-11T11:17:35,742][ERROR][logstash.inputs.kafka    ] Unknown setting 'topic_id' for kafka
  [2016-11-11T11:17:35,742][ERROR][logstash.inputs.kafka    ] Unknown setting 'reset_beginning' for kafka
  检查语法没有错误
  vim /usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-kafka-5.0.5/DEVELOPER.md
  进排查发现是缺少依赖
  * Apache Kafka version 0.8.1.1
  * jruby-kafka library(这个缺乏导致,坑爹rpm安装的logstash5.0竟然缺东西)
  

  7,kibana安装配置等变动不大
  

  8,filebat配置精简不少




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668839-1-1.html 上篇帖子: elasticsearch优化 下篇帖子: 基于elasticsearch的图片相似搜索
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表