ElasticSearch之Force merge API

使用本方法,可以触发强制合并操作。

默认情况下,ElasticSearch会在后台周期性触发合并操作,因此不需要用户刻意使用本方法。

使用强制合并的弊端:

  • 可能会产生大于5G的segment对象,而ElasticSearch后台自动触发的合并操作会跳过此类大型segment对象。
  • 假如定期执行强制合并,将导致快照的成本增高,原因是强制合并产生的segment的变动,导致无法增量创建快照。

方法参数
max_num_segments

合并操作完成后,创建的segment对象的数量。

当指定为1时,表示完全合并。

未指定本参数时,表示仅当符合条件时,才会执行合并操作。

only_expunge_deletes,默认值为false

  • true,检查全部segment对象,对于标记为删除记录的占比超出参数index.merge.policy.expunge_deletes_allowedsegment,执行合并操作。
  • false,不检查删除记录的占比。

wait_for_completion,默认值为true

  • true,表示同步调用,需要等待本次强制合并任务结束,调用才会返回。
  • false,表示异步调用,可以使用返回的任务标识来查询进度,但注意触发的任务不会被取消。假如有多个任务被触发,则会被调度器放在队列中,逐个执行。

注意only_expunge_deletesmax_num_segments不能同时使用。

相关参数
index.merge.policy.expunge_deletes_allowed
index中已被标记为删除状态的记录的比例,百分数,默认值为10

当前only_expunge_deletes取值为true时使用。

使用样例

创建测试用的index,命名为testindex_001,命令样例,如下:

shell 复制代码
curl -X PUT "https://localhost:9200/testindex_001?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"

执行结果的样例,如下:

shell 复制代码
{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "testindex_001"
}

执行时指定index的名称testindex_001,命令样例,如下:

shell 复制代码
curl -X POST "https://localhost:9200/testindex_001/_forcemerge?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"

执行结果的样例,如下:

shell 复制代码
{
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  }
}

执行时不指定index的名称,命令样例,如下:

shell 复制代码
curl -X POST "https://localhost:9200/_forcemerge?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"

执行结果的样例,如下:

shell 复制代码
{
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  }
}

执行时不指定index的名称,异步调用,命令样例,如下:

shell 复制代码
curl -X POST "https://localhost:9200/_forcemerge?wait_for_completion=false&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"

执行结果的样例,如下:

shell 复制代码
{
  "task" : "aKgBu7LgS9a6iPYH8n2JPw:103209"
}

相关资料

相关推荐
MacroZheng12 小时前
横空出世!MyBatis-Plus 同款 ES ORM 框架,用起来够优雅!
java·后端·elasticsearch
用户311879455921813 小时前
Kylin Linux 10 安装 glib2-devel-2.62.5-7.ky10.x86_64.rpm 方法(附安装包)
linux
涛啊涛13 小时前
Centos7非LVM根分区容量不足后扩容,对调硬盘挂载/
linux·磁盘管理
CYRUS_STUDIO1 天前
用 Frida 控制 Android 线程:kill 命令、挂起与恢复全解析
android·linux·逆向
熊猫李1 天前
rootfs-根文件系统详解
linux
Elasticsearch2 天前
平衡尺度:利用权重使倒数排序融合 (RRF) 更加智能
elasticsearch
dessler2 天前
Hadoop HDFS-高可用集群部署
linux·运维·hdfs
泽泽爱旅行2 天前
awk 语法解析-前端学习
linux·前端
轻松Ai享生活2 天前
5 节课深入学习Linux Cgroups
linux
christine-rr2 天前
linux常用命令(4)——压缩命令
linux·服务器·redis