首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >elasticserach空间查询中的位置数组

elasticserach空间查询中的位置数组
EN

Stack Overflow用户
提问于 2014-08-27 15:11:28
回答 1查看 54关注 0票数 0

我对这种弹性搜索概念还很陌生,我找不到解决问题的办法。假设考虑以下查询。

代码语言:javascript
运行
复制
GET banknew/_search/
{
  "query": {
    "match_all": {}
  },
  "filter": {
    "geo_distance": {
      "location": {
        "lat": 8.722479,
        "lon": 78.13047
      },
      "distance": "5km"
    }
  }
}

这份遗嘱给了我结果。上面查询是针对1个位置(意味着1个以上,lng)。但我必须获得多个位置的结果(意味着2个或更多lng)。我尝试的是

代码语言:javascript
运行
复制
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[执行阶段查询失败,所有分片都失败”。有没有可能。请给我引路。提前感谢

EN

回答 1

Stack Overflow用户

发布于 2014-08-27 16:01:11

您可以使用另一个geo_distance过滤器并将其包装在bool filter中。

如果您在距离第一个位置或第二个位置5公里处搜索结果,请将其添加到should子句中。

尝试如下所示:

代码语言:javascript
运行
复制
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
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25520968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档