这可能很简单,但我无法实现或找到预期的查询格式。
我能够直接从我的应用程序创建geo_point
数据类型的映射。我还可以通过发送以下查询作为请求正文的一部分来查询带有geopoint的索引:
{
"query": {
"bool" : {
"must" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "5km",
"field_location" : "9.0194,-79.4509"
}
}
}
}
}
此处,field_location
是geo_point
类型字段的名称。这完全没问题。
我无法找到一种向过滤器提供多个lat/lon
值并在它们之间使用OR
的方法。我尝试在查询中使用SHOULD
,但无法找到正确的方法。关于如何实现这一点的任何指示都会非常有用。
答案 0 :(得分:0)
似乎我走的是正确的道路。 elasticsearch的{{3}}支持运算符。我没有正确使用它。
以下查询有效:
{
"query": {
"bool": {
"should": [
{
"geo_distance": {
"distance": "1km",
"field_location": "9.0194,-79.4509"
}
},
{
"geo_distance": {
"distance": "1km",
"field_location": "8.9972,-79.4985"
}
}
]
}
}
}