【发布时间】:2016-05-31 06:34:24
【问题描述】:
我有一个包含许多文档的弹性索引。 一个文件代表一些事件。 每个活动都有日期和地理位置。
我想发送如下查询: “洛杉矶的一些事件”, “明天有活动”, “我附近的一些活动”...
如何使用弹性构建此解决方案?
【问题讨论】:
标签: elasticsearch human-computer-interface humanize human-language
我有一个包含许多文档的弹性索引。 一个文件代表一些事件。 每个活动都有日期和地理位置。
我想发送如下查询: “洛杉矶的一些事件”, “明天有活动”, “我附近的一些活动”...
如何使用弹性构建此解决方案?
【问题讨论】:
标签: elasticsearch human-computer-interface humanize human-language
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/current/query-dsl-range-query.html
【讨论】: