0

我有一个包含许多文档的弹性索引。一个文件代表一些事件。每个事件都有一个日期和地理位置。

我想发送这样的查询:“洛杉矶的一些活动”、“明天的一些活动”、“我附近的一些活动”......

我怎样才能用弹性构建这个解决方案?

4

1 回答 1

1

Elasticsearch 有一些工具可以做到这一点。例如,我们在特定位置(纬度、经度)有一个图钉,如下所示:

{
    "pin" : {
        "location" : {
            "lat" : 40.12,
            "lon" : -71.34
        }
    }
}

要在 200 公里范围内进行搜索,我们可以执行如下查询:

{
    "bool" : {
        "must" : {
            "match_all" : {}
        },
        "filter" : {
            "geo_distance" : {
                "distance" : "200km",
                "pin.location" : {
                    "lat" : 40,
                    "lon" : -70
                }
            }
        }
    }
}

真的很容易对于日期,您可以使用这样的范围查询:

{
    "range" : {
        "date" : {
            "gte" : "now/d",
            "lt" :  "now+1d/d"
        }
    }
}

有关更多示例,请查看文档 https://www.elastic.co/guide/en/elasticsearch/guide/current/geoloc.html https://www.elastic.co/guide/en/elasticsearch/reference/当前/查询-dsl-range-query.html

于 2016-02-19T00:43:48.793 回答