我有一个ELK(Elasticsearch-Kibana)堆栈,其中elasticsearch节点的默认分片值为5.日志以logstash格式(logstash-YYYY.MM.DD
)推送到它,如果我错了,请纠正我 - 是按日期编制索引的。
由于我无法在不重建索引的情况下更改现有索引的分片计数,因此我希望在创建下一个索引时将分片数增加到8 。我认为ES-API允许即时持续更改。
我该怎么做?
答案 0 :(得分:13)
您可以使用"模板管理" Elasticsearch中的功能:http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
使用以下方法创建新的logstash模板:
curl -XPUT localhost:9200/_template/logstash -d '
{
"template": "logstash-*",
"settings": {
"number_of_replicas": 1,
"number_of_shards": 8,
"index.refresh_interval": "5s"
},
"mappings": {
"_default_": {
"_all": {
"enabled": true
},
"dynamic_templates": [
{
"string_fields": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"index": "analyzed",
"omit_norms": true,
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 256
}
}
}
}
}
],
"properties": {
"@version": {
"type": "string",
"index": "not_analyzed"
},
"geoip": {
"type": "object",
"dynamic": true,
"path": "full",
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
}
}'
下次创建与您的模式匹配的索引时,将使用您的新设置创建该索引。
答案 1 :(得分:4)
该设置在您的elasticsearch上。您需要更改为配置文件config/elasticsearch.yml
更改index.number_of_shards: 8
。并重新启动elasticsearch。新配置将设置,新索引将使用新配置,根据需要创建8个分片。
答案 2 :(得分:0)
最好是使用模板并添加一个我会推荐的Kopf pluin:https://github.com/lmenezes/elasticsearch-kopf
您可以使用API:
curl -XPUT $ELASTICSEARCH-MASTER$:9200/_template/$TEMPLATE-NAME$ -d '$TEMPLATE-CONTENT$'
在插件中:在左上角点击更多 - >索引模板,然后创建一个新模板,并确保您将以下设置作为模板的一部分:
{
"order": 0,
"template": "logstash*",
"settings": {
"index": {
"number_of_shards": "5",
"number_of_replicas": "1"
}
},
"mappings": {### your mapping ####},
"aliases": {}
}
上面的设置将确保如果创建一个名为logstash*
的新索引,它将有5个分片和1个副本。