27号收到了官方发的Elastic Stack 5.0正式发布的邮件,我就去踩坑了。

先说结论,做好测试,谨慎操作。



• ES5简介

这次是个大升级,统一了全家桶版本号,升级了Lucene,发布了对于官方来说非常重要的X-Pack,等等。详见Elastic Stack 5.0.0 Released、Breaking changes in 5.0、What's new in Elasticsearch 5.0。

关于Elastic Search本体,一些值得关注的:

1. Lucene升级到了6.2,搜索方面会有巨大的性能提升。


2. 优化Indexing过程,性能会更加稳定。

3. 新增Ingest Node,用于数据转换,相当于Elastic Search里内置了一个Logstash。或许有比bulk更好的Indexing性能,有待测试。



• 踩到的坑



1. Copy2.X的elasticsearch.yml到5.0里,大量报错


1)踩了个"node settings must not contain any index level settings",报错提示是所有index配置(例如 index.mapper.dynamic)都需要在ES启动之后通过接口来改。

2)script开头的配置项也没了。

3)一些配置项的名字改了,例如 bootstrap.mlockall 改成了 bootstrap.memory_lock。

建议直接在5.0的elasticsearch.yml上面改配置。

另外,./config/ 里面新增了 jvm.options 和 log4j2.properties,取消了logging.yml。关于内存的配置可以直接在 jvm.options 里面设,不需要折腾环境变量了。



2. 启动报错,提示调高JVM线程数限制

bootstrap checks failed

max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解法:

vi /etc/sysctl.conf

vm.max_map_count=262144 #添加这一行



3. 搜索报错,默认Scripting语言从groovy改成了painless

这个坑藏得好深,让我困惑了一段时间(卖二手QQ都怪我没有看完What's New就去折腾升级)...最后改query的lang字段为painless就过了。

感觉painless的可读性要好一点。之前写Function Score Query的时候发现自己想表达的跟实际出来的结果不一样(也可能是文档的问题)。



4. 搜索报错,部分DSL语言格式变了

发现2.X的query在5.0里跑不通了...

最后发现Filter的DSL语言格式改了。

把我坑惨了...



• 关于X-Pack

X-Pack是一套新的扩展。

一直以来,Elastic Search团队提供的付费插件与服务都感觉不痛不痒。新发布的X-Pack把所有付费痛点打包到一起了,包括权限控制、更好的数据可视化系统、经常被提出的报表系统等,我认为是Elastic Search商业化非常重要的一步(另一步是Elastic Cloud)。


X-Pack的License(可注册1年免费License)

由于全家桶都被打包到一起了,安装上更方便,操作上也非常有整体感。

UI彻底重做了一次,没有那么山寨了。

一个问题是,跟Marvel插件一样,每天还是会生产一个很™大的Index,还是得要有个脚本盯着来删。



• 性能对比

1. 同样的机器(硬件、数量)及集群结构(Master Node、Data Node)

2. 同样的索引结构和分片数量

3. 基本一致的查询语句(ES5语法有所变化,所以query没有完全一致)

4. 同样的数据量

5. 同样的流量


ES5集群的 CPU Usage 约为ES2集群的 3/4

ES5集群的 Search Latency 约为ES2集群的 2/3


另外,发现ES5的index/update性能也优于ES2,有待量化评测。



• 总结

由于Lucene升级带来的巨大性能提升,我认为ES5非常值得升级。

但是,

做好测试,谨慎操作!

做好测试,谨慎操作!

做好测试,谨慎操作!


更多相关文章

  1. lob字段的direct path read等待导致的性能问题分析过程
  2. 数据库mysql——MySQL 性能优化的最佳20多条经验分享
  3. 记一次性能调优过程、涉及诡异的insert极慢
  4. 解决enq: TX - allocate ITL entry等待导致的性能问题
  5. IBM小机RAC集群一个节点异常关闭案例分析
  6. 初探MySQL Innodb集群
  7. 【案例】星环科技原厂数据备份恢复软件,让大数据与AI应用有备无患
  8. ELasticSearch-ES集群原理与搭建
  9. 论集群,就服鹅厂!

随机推荐

  1. android 对话框(Dialog)使用
  2. Android Sensor Shake(WeChat)
  3. 分享七个非常有用的Android开发工具和工
  4. Android RIL总体架构介绍
  5. 图片走廊
  6. Mac Android Studio获取数字签名的方法
  7. Mac版Android studio中使用lambda表达式
  8. Android问题:com.android.builder.packagi
  9. Android Camera子系统代码流程1
  10. Android实现图片放大缩小