在elasticsearch中过滤多个地理位置

时间:2017-04-07 09:32:43

标签: elasticsearch

这可能很简单,但我无法实现或找到预期的查询格式。

我能够直接从我的应用程序创建geo_point数据类型的映射。我还可以通过发送以下查询作为请求正文的一部分来查询带有geopoint的索引:

{
    "query": {
        "bool" : {
            "must" : {
                "match_all" : {}
            },
            "filter" : {
                "geo_distance" : {
                    "distance" : "5km",
                    "field_location" : "9.0194,-79.4509"
                }
            }
        }
    }
}

此处,field_locationgeo_point类型字段的名称。这完全没问题。

我无法找到一种向过滤器提供多个lat/lon值并在它们之间使用OR的方法。我尝试在查询中使用SHOULD,但无法找到正确的方法。关于如何实现这一点的任何指示都会非常有用。

1 个答案:

答案 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"
                    }
                }
            ]
        }
    }
}