ElasticSearch之Merge
Elasticsearch
的shard
,即对应Lucene
的index
。
Lucene
的index
由多个segment
组成。
segment
是index
保存数据的最小单位,不支持修改。
Elasticsearch
在运行过程中,启动后台任务,周期性检测并将占用空间小的segment
自动合并至大一些的segment
,避免存在过多的segment
对象,同时在合并过程中,会剔除掉已删除的记录。
合并操作的过程可能消耗较多的资源,比如CPU和I/O,因此在合并操作运行的过程中,Elasticsearch
会自动调整合并操作的吞吐量,优先保证其它业务的正常运行。
Elasticsearch
提供了ConcurrentMergeScheduler
作为合并操作的调度器,管理合并操作的产生和运行。
ConcurrentMergeScheduler
在新的线程中提交合并操作,同时控制合并操作的并发数。当合并操作占用的线程的数量达到index.merge.scheduler.max_thread_count
,ConcurrentMergeScheduler
将后续待执行的合并操作放至队列中,避免合并操作占用过多的资源,影响其它操作。
相关参数
index.merge.scheduler.max_thread_count
在一个shard上执行merge操作时允许使用的线程的数量。
默认值为Math.max(1, Math.min(4, node.processors / 2))
。
修改参数的取值,执行命令如下:
curl -X PUT "https://localhost:9200/_settings?pretty" -H 'Content-Type: application/json' -d' { "index.merge.scheduler.max_thread_count": 2 } ' --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"
假如当前没有创建index
,则报错信息如下:
{ "error" : { "root_cause" : [ { "type" : "index_not_found_exception", "reason" : "no such index [[]]", "index_uuid" : "_na_", "index" : "[]" } ], "type" : "index_not_found_exception", "reason" : "no such index [[]]", "index_uuid" : "_na_", "index" : "[]" }, "status" : 404 }
假如当前已有创建好的index
,执行结果的样例,如下:
{ "acknowledged" : true }
相关资料
本文来自博客园,作者:jackieathome,转载请注明原文链接:https://www.cnblogs.com/jackieathome/p/17868564.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南