我对这种弹性搜索概念还很陌生,我找不到解决问题的办法。假设考虑以下查询。
GET banknew/_search/
{
"query": {
"match_all": {}
},
"filter": {
"geo_distance": {
"location": {
"lat": 8.722479,
"lon": 78.13047
},
"distance": "5km"
}
}
}这份遗嘱给了我结果。上面查询是针对1个位置(意味着1个以上,lng)。但我必须获得多个位置的结果(意味着2个或更多lng)。我尝试的是
GET banknew/_search/
{
"query": {
"match_all": {}
},
"filter": {
"geo_distance": {
"location": [{
"lat": 8.722479,
"lon": 78.13047
},{
"lat": 8.722479,
"lon": 78.13047
} ],
"distance": "5km"
}
}
}我必须得到5公里内的第一个位置和第二个位置的点的结果。
但是我收到错误` error‘:“SearchPhaseExecutionException[执行阶段查询失败,所有分片都失败”。有没有可能。请给我引路。提前感谢
发布于 2014-08-27 16:01:11
您可以使用另一个geo_distance过滤器并将其包装在bool filter中。
如果您在距离第一个位置或第二个位置5公里处搜索结果,请将其添加到should子句中。
尝试如下所示:
GET banknew/_search/
{
"query": {
"match_all": {}
},
"filter": {
"bool": {
"should": [
{
"geo_distance": {
"distance": "5km",
"location": {
"lat": lat1,
"lon": lon1
}
}
},
{
"geo_distance": {
"distance": "5km",
"location": {
"lat": lat2,
"lon": lon2
}
}
}
],
"minimum_should_match": 1
}
}
}https://stackoverflow.com/questions/25520968
复制相似问题