在弹性搜索中索引数据后将字段映射到地理点

时间:2015-02-16 09:51:14

标签: elasticsearch

我已经将索引和导入的数据创建到索引中,但没有映射。我的数据有一个“geolocatoin”:“lat,lng”。现在我想基于地理位置运行地理空间查询。所以我使用以下curl命令将提交的地理位置映射到地理点:

curl -XPUT 'http://localhost:9200/index/place/_mapping?ignore_conflicts=true' -d '
{    
    "place" : {
        "properties" : {        
        "geolocation" : { "type" : "geo_point" }        
        }
    }
}'

我得到{"acknowledged":true}作为回复。

但是当我尝试运行地理空间查询时,它会抛出错误

field [geolocation] is not a geo_point field]; 

因此。我是否在映射后重新索引。但是重建索引是不可能的,因为它是一个庞大的数据集。我怎样才能做到这一点。请分享您的想法......

1 个答案:

答案 0 :(得分:1)

我认为在映射某些映射类型后必须重新索引。您可以尝试编写脚本来更新所有文档,以便将旧字段移动到具有良好映射的新字段。

如果您的索引用于制作,您可以尝试为当前索引创建别名,并在程序中使用它。您创建了一个具有良好映射的新索引,在重新索引之后,您可以在索引上切换别名。