更新时间:2023-09-07 GMT+08:00

Bulk路由优化

根据Elasticsearch默认的路由规则,Bulk请求中的每一条数据会被路由到不同的shard,当索引分片较多时,会产生大量的内部转发请求,在大规模写入场景下容易触发写拒绝。且在大规模集群中,长尾效应会导致Bulk请求时延较高。

通过指定配置项“index.bulk_routing”可以开启bulk路由优化,该优化可以减少内部转发的请求数量,在shard数较多的场景下,能够有效提升写入性能以及减少写入拒绝。

操作步骤

  1. “集群管理”页面,选择已创建的集群,单击操作列“Kibana”,登录Kibana界面。
  2. 在左侧导航栏,选择“Dev Tools”
  3. “Dev Tools”页面,执行如下命令:
    PUT my_index 
    {
      "settings": { 
        "index.bulk_routing": "local_pack"
      } 
    }
    表1 “index.bulk_routing”参数取值范围说明

    参数取值

    描述

    default

    使用Elasticsearch默认的路由机制,Bulk请求中的每一条记录会拆分后独立路由。

    pack

    单个Bulk请求的数据会被随机路由到同一个shard中。

    local_pack

    单个Bulk请求的数据会被路由到接收该Bulk请求的数据节点的本地shard中,如果该节点不包含对应index的shard,则会进行随机路由到其他包含该索引shard节点上。