更改ALL OF LOGSTASH创建的索引的字段映射

时间:2016-03-30 13:51:32

标签: elasticsearch mapping logstash elasticsearch-mapping

我想将字段location的类型更改为geo_point。我正在使用ES和Logstash,因为y'众所周知,索引是使用名称logstash-yyyy-mm-dd生成的

我首先创建了一个logstash索引,并将其命名为logstash-2016-03-29,如下所示:

curl -XPUT 'http://localhost:9200/logstash-2016-03-29'

然后,我使用以下内容更改了所谓的Logstash-*所有索引的映射:

curl -XPOST "http://localhost:9200/logstash-*/_mapping/logs" -d '{
"properties" : {
            "location" : { "type":"geo_point" }
        }
}'

当我运行Logstash配置文件时,索引location中的所有logstash-2016-03-29字段确实都是geo_point类型。

但是,今天,自动生成的索引logstash-2016-03-30的字段位置类型为String,而不是geo_point。我认为类型应该应用于以名称logstash-*开头的任何索引。显然,我错了。我如何解决这个问题,以便logstash创建的具有location字段的任何未来索引都将该字段类型设置为geo_point而不是String?

感谢。

1 个答案:

答案 0 :(得分:1)

您应该使用索引模板

来定义它
curl -XPUT localhost:9200/_template/template_2 -d '
{
    "template" : "logstash-",
    "mappings" : {
        "logs" : {
          "properties": {
            "location" : { "type" : "geo_point" }
           }
        }
    }
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html