美文网首页elasticsearch
Elasticsearch的段合并

Elasticsearch的段合并

作者: 达微 | 来源:发表于2018-06-05 08:06 被阅读8次

业务模块中基本上都是聚合查询操作,不需要过滤的都用上字段折叠,性能能跟上

而频繁过车,昼伏夜出,多区域碰撞,要用到聚合和having pipeline Aggs 性能一直起不来。

三百万的数据聚合要3到4秒,一亿的数据聚合要15到30秒的时间,完全达不到性能要求。

强制合并段后,执行_forcemerge 线程跑完后,段并未完全合并成功,一段时间后(可能一到两天比较诡异),段合并后,搜索性能明显提升。三百万的数据聚合只需要700ms左右,1亿的数据也就2-3秒左右。

http://192.168.102.200:9200/_nodes/192.168.102.200/hot_threads

http://192.168.102.200:9200/_cat/segments/?v&h=shard,segment,size,size.memory

curl -XPOST "http://192.168.102.202:9200/*/_forcemerge?max_num_segments=1"

实时搜索的实现

https://www.elastic.co/guide/cn/elasticsearch/guide/current/inside-a-shard.html

持久化变更

https://www.elastic.co/guide/cn/elasticsearch/guide/current/near-real-time.html

段合并

https://www.elastic.co/guide/cn/elasticsearch/guide/current/merge-process.html

Elasticsearch 基于 Lucene, 这个 java 库引入了 按段搜索 的概念。 每一  本身都是一个倒排索引, 但 索引 在 Lucene 中除表示所有  的集合外, 还增加了 提交点 的概念 — 一个列出了所有已知段的文件,就像在 图 1 “一个 Lucene 索引包含一个提交点和三个段” 中描绘的那样。 如 图 2 “一个在内存缓存中包含新文档的 Lucene 索引” 所示,新的文档首先被添加到内存索引缓存中,然后写入到一个基于磁盘的段,如 图 4 “在一次提交后,一个新的段被添加到提交点而且缓存被清空。” 

图 1. 一个 Lucene 索引包含一个提交点和三个段

一个 Lucene 索引包含一个提交点和三个段

图 2. 一个在内存缓存中包含新文档的 Lucene 索引

一个在内存缓存中包含新文档的 Lucene 索引

图 3. 缓冲区的内容已经被写入一个可被搜索的段中,但还没有进行提交

缓冲区的内容已经被写入一个可被搜索的段中,但还没有进行提交

图 4.一次提交后,一个新的段被添加到提交点而且缓存被清空

在一次提交后,一个新的段被添加到提交点而且缓存被清空  

图 5. 新的文档被添加到内存缓冲区并且被追加到了事务日志

 新的文档被添加到内存缓冲区并且被追加到了事务日志

图 6.刷新(refresh)完成后, 缓存被清空但是事务日志不会

刷新(refresh)完成后, 缓存被清空但是事务日志不会

图 7.事务日志不断积累文档

事务日志不断积累文档

图 8. 在刷新(flush)之后,段被全量提交,并且事务日志被清空

在刷新(flush)之后,段被全量提交,并且事务日志被清空

图 9. 两个提交了的段和一个未提交的段正在被合并到一个更大的段

两个提交了的段和一个未提交的段正在被合并到一个更大的段

图 10. 一旦合并结束,老的段被删除

一旦合并结束,老的段被删除

相关文章

  • Elasticsearch段合并

    elasticsearch 中每个索引都会创建一个到多个分片和零个到多个副本,这些分片或副本实质上都是lucene...

  • Elasticsearch的段合并

    业务模块中基本上都是聚合查询操作,不需要过滤的都用上字段折叠,性能能跟上 而频繁过车,昼伏夜出,多区域碰撞,要用到...

  • Logstash合并java多行日志异常

    背景 读取java日志中,异常日志必不可少,但在elasticsearch展示要合并成多行,利用logstash-...

  • 索引段合并

    为什么需要段合并 性能上 - 提高查询效率 新增的文档(addDocument)会缓存在内存索引结构中,在主动调用...

  • 链接过程中关于数据段合并操作和访问

    链接过程中关于数据段合并操作和访问 在链接多个.o文件的时候,第一件事事情要做的是合并相同的段,代码段合并,数据段...

  • Elasticsearch学习-嵌套文档

    本文以Elasticsearch 6.8.4版本为例,介绍Elasticsearch嵌套文档的使用。 最近一段时间...

  • spss学习3--数据合并、分组

    3.1概念 字段合并,记录合并( 3.2字段合并 Concat函数(出现错误???) 步骤: 转换——>计算变量—...

  • Elasticsearch学习,请先看这一篇!

    题记: Elasticsearch研究有一段时间了,现特将Elasticsearch相关核心知识、原理从初学者认知...

  • Elasticsearch初学参考(转)

    题记: Elasticsearch研究有一段时间了,现特将Elasticsearch相关核心知识、原理从初学者认知...

  • Elasticsearch7.X的SQL access实现

    前言 elasticsearch7.X出来也有一段时间了,正好这次让我给项目中的elasticsearch升级版本...

网友评论

    本文标题:Elasticsearch的段合并

    本文链接:https://www.haomeiwen.com/subject/iouesftx.html