Elasticsearch 7.5.2 集群默认只为索引创建一个分片

Posted

技术标签:

【中文标题】Elasticsearch 7.5.2 集群默认只为索引创建一个分片【英文标题】:Elasticsearch 7.5.2 cluster is creating only one shard for an index by default 【发布时间】:2020-03-30 10:58:33 【问题描述】:

我有一个新设置的 Elasticsearch 7.5.2 集群。当我创建索引时,默认只创建一个分片。

我的集群策略如下:

Total Nodes: 5
--------------
Node 1 & Node 2 - Master Only
Node 3          - Master & Data Node
Node 4 & Node 5 - Data Only

找不到任何限制分片创建索引的集群设置。 是集群策略的问题还是我在这里缺少任何设置?

请帮我找出问题。

【问题讨论】:

【参考方案1】:

早期 Elasticsearch 的默认主分片数为 5,这与您使用的 Elasticsearch 7.X 不同,因此您只能看到 1 个主分片。

Elasticsearch link 了解此更改以及有关this SO 答案的更多信息。

除了适用于特定索引的 API(@Kamal 已经提到)之外,您可以在您的 elasticsearch.yml 中指定此设置,这将对创建的每个索引有效,直到您使用 API 调用覆盖。

配置添加到您的elasticsearch.yml

index.number_of_shards: your desired number of shards

注意:这是针对不能动态更改的主分片,因此请谨慎设置,与可以动态更改的the number of replicas不同。

【讨论】:

【参考方案2】:

没错。发布版本 7,Elasticsearch 默认创建分片大小为 1 的索引,如上所述 here

在创建索引时,您始终可以使用以下设置指定索引分片。

PUT <your_index_name>

    "settings" : 
        "index" : 
            "number_of_shards" : 5
        
    

希望这会有所帮助!

【讨论】:

以上是关于Elasticsearch 7.5.2 集群默认只为索引创建一个分片的主要内容,如果未能解决你的问题,请参考以下文章

ELKStack 实战之 Elasticsearch集群 [二]

ElasticSearch:elasticsearch.yml配置说明

elasticsearch8集群安装部署使用

Elasticsearch集群的一些重要配置

Elasticsearch 集群

Elasticsearch集群管理