ElastiSearch Merger介绍

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: ElastiSearch Merger介绍

根据ES的写入原理分析,默认每秒从memory buffer里面搬运数据到filesystem cache,生产一个segments段,由后台程序定期分梯队进行合并(该部分原理还没深入研究),不过从查看到的segments数量,大小来看,默认的合并效果并不好,会出现很多小segments没有合并。根据操作系统的原理,一个索引打开太多的文件,势必会影响性能,ES也开放了相应的接口给用户对这些segments经行手动合并。

下面介绍一下forcemerge相关命令

执行合并segment

计算规则(参考):按照每个segment 5GB 来评估 max_num_segments,根据实际情况,比如 index最大的分片5gb,max_num_segments就是1.

max_num_segments取值为:max_num_segments =(单个索引的大小G/分片数/5G)

建议每天业务低峰进行一次

POST indexname/_forcemerge?max_num_segments=1

参数说明:

参数 说明
max_num_segments 合并到的段数。要完全合并索引,请将其设置为1。默认值是简单地检查是否需要执行合并,如果需要,则执行合并。
only_expunge_deletes 合并过程应该只删除其中有删除的段。在Lucene中,不会从段中删除文档,而只是将其标记为已删除。在段的合并过程中,将创建一个没有这些删除的新段。此标志仅允许合并具有删除的段。默认为false。请注意,这不会超过 index.merge.policy.expunge_deletes_allowed阈值。
flush 强制合并后是否应该执行刷新。默认为 true。

查看每台机器执行merge线程数

GET _cat/thread_pool/force_merge?v&s=name

查看哪些index在merge

GET /_cat/indices/?s=segmentsCount:desc&v&h=index,segmentsCount,segmentsMemory,memoryTotal,mergesCurrent,mergesCurrentDocs,storeSize,p,r

image-20220927102918000

使用task api 查看force merge

GET _tasks?detailed=true&actions=*forcemerge

查看segment

GET _cat/segments?v&h=shard,segment,size.memory

查看索引大小

GET _cat/indices/ads_user_profile?v
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
4月前
|
流计算
Flink 多个stream合并聚合
Flink 多个stream合并聚合
39 0
Flink 多个stream合并聚合
|
3月前
|
消息中间件 SQL Java
阿里云Flink-自定义kafka sink partitioner实践及相关踩坑记录
阿里云Flink-自定义kafka sink partitioner实践及相关踩坑记录
|
4月前
|
对象存储
milvus的compaction分析(小文件合并大文件)
milvus的compaction分析(小文件合并大文件)
825 0
|
11月前
白话Elasticsearch61-进阶篇之基于Term Vectors深入探查数据的情况
白话Elasticsearch61-进阶篇之基于Term Vectors深入探查数据的情况
56 0
|
SQL 消息中间件 分布式计算
5万字Spark全集之末尾Structured Streaming续集!!!!!(一)
5万字Spark全集之末尾Structured Streaming续集!!!!!
130 0
5万字Spark全集之末尾Structured Streaming续集!!!!!(一)
|
存储 缓存 NoSQL
ES通过 Enrich Processor 的 Ingest Pipeline 实现关系数据库中的表关联(join)操作
ES通过 Enrich Processor 的 Ingest Pipeline 实现关系数据库中的表关联(join)操作
ES通过 Enrich Processor 的 Ingest Pipeline 实现关系数据库中的表关联(join)操作
|
NoSQL 索引 内存技术
RocksDB 优化小解(一):Indexing SST
RocksDB 优化小解(一):Indexing SST
268 0
RocksDB 优化小解(一):Indexing SST
|
Java
elasticsearc使用指南之ES管道聚合(Pipeline Aggregation)
本节详细介绍了ES Pipeline Aggregation 管道聚合的使用方法,重点介绍了Avg Bucket Aggregation、Percentiles Bucket Aggregation、Cumulative Sum Aggregation、Bucket Sort Aggregation、Max Bucket Aggregation、Min Bucket Aggregation、Sum Bucket Aggregation、Stats Bucket Aggregation。
3458 0
|
分布式计算 大数据 Spark
Spark 宽窄依赖、DAG 的切割_2 | 学习笔记
快速学习 Spark 宽窄依赖、DAG 的切割_2
114 0
 Spark  宽窄依赖、DAG  的切割_2 | 学习笔记
|
分布式计算 大数据 Spark
 Spark 宽窄依赖、DAG 的切割_1 | 学习笔记
快速学习  Spark 宽窄依赖、DAG 的切割_1
154 0
  Spark  宽窄依赖、DAG  的切割_1 | 学习笔记