首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性搜索中的距离带

弹性搜索中的距离带
EN

Stack Overflow用户
提问于 2016-03-09 23:21:19
回答 1查看 78关注 0票数 0

我想申请“距离分带”。我不只是简单地按距离排序,我希望5英里以内的文档优先,然后是5-10英里的文档,然后是10-15英里,15-25英里,25-50英里,50+mi。(在每个距离范围内,它们将按照其他一些标准进行排序)。

我读过关于function_score衰变的文章,但我认为它不太符合目的。

你建议怎么做呢?助推?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-10 04:49:25

实现这一目标的一种方法是使用geo_distance聚合来定义带,然后在每个带中使用带有某种条件的top_hits

看起来会是这样的。您需要更改位置字段(location)和排序字段(name),以匹配您的位置字段:

代码语言:javascript
复制
{
  "size": 0,
  "aggs": {
    "rings": {
      "geo_distance": {
        "field": "location",
        "origin": "52.3760, 4.894",
        "ranges": [
          {
            "to": 5
          },
          {
            "from": 5, "to": 10
          },
          {
            "from": 10, "to": 15
          },
          {
            "from": 15, "to": 25
          },
          {
            "from": 25, "to": 50
          },
          {
            "from": 50
          }
        ]
      },
      "aggs": {
        "hits": {
          "top_hits": {
            "size": 5,
            "sort": {
              "name": "asc"
            }
          }
        }
      }
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35904662

复制
相关文章

相似问题

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