我有一个包含许多文档的弹性索引。一个文件代表一些事件。每个事件都有一个日期和地理位置。
我想发送这样的查询:“洛杉矶的一些活动”、“明天的一些活动”、“我附近的一些活动”......
我怎样才能用弹性构建这个解决方案?
我有一个包含许多文档的弹性索引。一个文件代表一些事件。每个事件都有一个日期和地理位置。
我想发送这样的查询:“洛杉矶的一些活动”、“明天的一些活动”、“我附近的一些活动”......
我怎样才能用弹性构建这个解决方案?
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