我想将字段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?
感谢。
答案 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