ES-6 .1。 - 如何更改默认的分片数

时间:2018-02-01 09:41:35

标签: elasticsearch configuration

我使用的是ES 6.1。我试图将默认的分片数从5改为,例如,6。是否有可能以某种方式?当我在elasticsearch.yaml文件下面添加行时,ES将无法启动。

index.number_of_replicas : 1
index.number_of_shards: 6

错误如下所示:

  

在节点级别配置上找到索引级别设置。

     

由于弹性搜索5.x索引级别设置无法设置   节点配置,如elasticsearch.yaml,在系统属性中   或命令行参数。为了升级所有索引的设置   必须通过/ $ {index} / _ settings API进行更新。除非所有设置   是动态的所有索引必须关闭才能应用   将来创建的upgradeIndices应使用索引模板进行设置   默认值。

     

请确保所有索引的所有必需值都已更新   执行:

     

curl -XPUT   ' http://localhost:9200/_all/_settings?preserve_existing=true' -d' {   " index.number_of_replicas" :" 1"," index.number_of_shards" :" 6" }'

我的理解:
如果我没有索引或所有索引都关闭,我可以通过以下方式更改默认值:

curl -XPUT 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
"index.number_of_replicas" : "1",
"index.number_of_shards" : "6"
}'

否则我无法更改默认的分片数。

我知道在创建索引后我无法更改分片数。我可以像这样创建索引

curl -XPUT  "$(hostname -I):9200/myindex/_settings?pretty" -H 'Content-Type: application/json' -d'
{
    "index" : {
        "number_of_shards" : 2, 
        "number_of_replicas" : 0 
    }
}
'

我正在从Logstash向ES发送数据,并自动创建索引,名称取决于日期和类型,因此我无法手动创建每个索引。

我的问题是:

  1. 有什么方法可以更改默认的碎片数量?如果有,怎么样?
  2. 我可以使用不同数量的分片进行不同的索引吗?

1 个答案:

答案 0 :(得分:6)

从ES5看起来有模板,因此当您想要更改此参数时,您必须创建自己的模板并使用正则表达式指定哪个索引将使用此模板。更多信息here

我通过这个命令解决了这个问题:

PUT _template/default
{
  "index_patterns": ["*"],
  "order": -1,
  "settings": {
    "number_of_shards": "6",
    "number_of_replicas": "1"
  }
}

现在,当我创建新索引时,它有6个分片和1个副本。