1

我想将字段的类型更改location为 geo_point。我将 ES 与 Logstash 一起使用,众所周知,索引是使用名称生成的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. 我认为该类型应该应用于以 name 开头的任何索引logstash-*。显然,我错了。我该如何解决这个问题,以便由 logstash 创建的具有该location字段的任何未来索引都将该字段类型设置为geo_point而不是 String?

谢谢。

4

1 回答 1

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

于 2016-03-30T16:22:47.127 回答