在下一个index-rotation上更改elasticsearch索引shard-count

时间:2014-04-23 11:22:15

标签: elasticsearch logstash kibana

我有一个ELK(Elasticsearch-Kibana)堆栈,其中elasticsearch节点的默认分片值为5.日志以logstash格式(logstash-YYYY.MM.DD)推送到它,如果我错了,请纠正我 - 是按日期编制索引的。

由于我无法在不重建索引的情况下更改现有索引的分片计数,因此我希望在创建下一个索引时将分片数增加到8 。我认为ES-API允许即时持续更改。

我该怎么做?

3 个答案:

答案 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个副本。