我尝试使用 elasticsearch 1.1.2 向现有应用添加一些地理要素。此应用程序有一些person
,其中一个属性pin
代表地理定位点。
以下是映射:
{"person":{"properties":{"pin":{"type":"geo_point"}}}}
以下是人员更新的示例:
{"doc":{
"full_name":"Oleta Yost",
"pin":{"lat":47.123, "lon":-1.15}
}}
我的疑问:
{ "from":0,
"size":24,
"query":{
"filtered":{
"filter":{
"and":[
{"or":[
{"term": /* some term filter */ },
{"term": /* some term filter */ }
]},
{ "geo_shape":{
"person.pin":{
"shape":{
"type":"envelope",
"coordinates":[[46,47],[-10,10]]
}
}
}
}
]
},
"query":{
"query_string":{
"fields":["person.full_name^10"],
"query":"full_name:\"Oleta Yost\""
}
}
}
}
}
此查询引发异常:
Field [person.pin] is not a geo_shape
我尝试了很多解决方案
pin
更新,例如。)我不知道我的问题在哪里......你能指出我吗?
答案 0 :(得分:1)
以上查询使用的geoshape query仅适用于类型为geoshape的字段。 在上面的映射中,字段为geopoint。
一种方法是将类型更改为地理位置:
"person": {
"properties": {
"pin": {
"type": "geo_shape"
}
}
}
引脚的json数据为:
pin : {
"type" : "Point",
"coordinates" : [ 46,47]
}