我的弹性搜索中的文档包含位置。它们在名为location
的文档中包含一个字段,其中包含映射:"location": {"type": "geo_shape"}
。我在文档中编制了索引的城市和国家。
在城市类型文档中(由字段"location_type": "city"
标识),位置字段如下所示:"location": {"type": "Point", "coordinates": [12.343, 43.454]}
。
在国家/地区类型文档中(由字段"location_type": "country"
标识),位置字段如下所示:"location": {"type": "MultiPolygon", "coordinates": [[12.343, 43.454], [12.23, 34.231]...]}
。
我的问题是,我可以像这样运行geo_distance过滤器查询:
{
"query": {
"filtered": {
"query": {
"term": {
"location_type": {
"value": "city"
}
}
},
"filter": {
"geo_distance": {
"distance": 100,
"distance_unit": "km",
"location.coordinates": {
"lat": 40.73,
"lon": -74.1
}
}
}
}
}
}
这给了我一个错误,说:嵌套:QueryParsingException无法找到geo_point字段[location.coordinates]
如何使此查询有效?
答案 0 :(得分:1)
我用这种方法。写在这里供别人参考。
{
"query": {
"geo_shape": {
"location": {
"shape": {
"type": "circle",
"radius": "100km",
"coordinates": [
86,
27
]
}
}
}
}
}