我可以使用lat / lon变量数组,并将其映射到geo_point类型 .
所以这是我目前的映射:
{
"zoek": {
"mappings": {
"geo": {
"properties": {
"country": {
"type": "string"
},
"geonameid": {
"type": "string"
},
"locatie": {
"type": "double"
},
"name": {
"type": "string"
}
}
}
}
}
}
“locatie”指的是两个double的数组 . [lat,lon] .
我想将其映射到geo_point变量以执行地理距离查询 .
所以我试过这个:
PUT /zoek/geo/_mapping
{
"geo" : {
"properties" : {
"locatie" : {"type" : "geo_point" }
}
}
}
并得到此错误:
{
"error": "MergeMappingException[Merge failed with failures {[mapper [locatie] of different type, current_type [double], merged_type [geo_point]]}]",
“状态”:400}
有什么建议?
映入眼帘,
达格玛 .
1 回答
在给定的映射类型(即
geo
)中,您不能定义两个具有相同名称的字段(即locatie
),而是另一个类型(即一个为double
,另一个为geo_point
) . 由于您的geo
映射类型中已经有一个字段名称locatie
,因此您无法添加具有相同名称的新名称,但您绝对可以使用其他名称添加另一个名称,例如location_geo
.但是,我建议您更改原始映射并将
locatie
(如double
)替换为locatie
(如geo_point
) . 如果您这样做,则需要重新索引现有数据,因此可能不适合您 .