Elasticsearch 上下文建议地理上下文 - 无需过滤即可提升?

标签 elasticsearch

我正在创建一个具有地理上下文 (Elastic 5.x) 的完成建议器。

 mapping...
        "suggest": {
          "type": "completion",
          ...
          "contexts": [
          {
            "name": "geoloc",
            "type": "geo",
            "precision": 3,
            "path": "geolocation"
          }
        ]

当我查询这个时,我想让它按地理上下文过滤,只提升 geohash 内的结果。按单个 geohash 过滤或按较低精度过滤,然后在原始过滤器中提高更高的精度,效果很好,如下所示:

GET /my-index/_search
{
  "suggest": {
      ...
      "completion": {
        "field": "suggest",
        "size": "10",
        "contexts": {
          "geoloc": [
            {
              "lat": 44.8214564,
              "lon": -93.475399,
              "precision": 1
            },
            {
              "lat": 44.8214564,
              "lon": -93.475399,
              "boost": 2
            }
          ]
        }
      }
  }
}

但是,我无法在不进行过滤的情况下仅在单个地理环境中提升它。 当我提交以下查询时,它会过滤 提升:

GET /my-index/_search
{
  "suggest": {
      ...
      "completion": {
        "field": "suggest",
        "size": "10",
        "contexts": {
          "geoloc": [
            {
              "lat": 44.8214564,
              "lon": -93.475399,
              "boost": 2
            }
          ]
        }
      }
  }
}

是我正在尝试做的事情不受支持,还是我遗漏了什么?

谢谢! 杰森

最佳答案

刚刚也遇到了这个问题。

我通过反复试验得出的解决方案是使用类别上下文首先过滤我的所有文档。假设您在名为“all”的文档中添加了一个类别,您可以这样做:

GET /my-index/_search
{
  "suggest": {
      ...
      "completion": {
        "field": "suggest",
        "size": "10",
        "contexts": {
          "category": ["all"],
          "geoloc": [
            {
              "lat": 44.8214564,
              "lon": -93.475399,
              "precision": 2,
              "boost": 2
            }
          ]
        }
      }
  }
}

完成后,它似乎选择了“所有”类别的所有内容,然后将指定精度级别内的所有内容提升到顶部。

使用 Elastic 6.*

关于Elasticsearch 上下文建议地理上下文 - 无需过滤即可提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47895927/

相关文章:

symfony - Fos elastica 滤波器结果与数组 "record id' s"

elasticsearch - 我们可以将SOLR中未存储的索引数据迁移到Elastic搜索吗?

php - 在PHP中显示Elasticsearch查询的所有汇总结果

curl - Elasticsearch 部分匹配脏数据

elasticsearch - 未知的发现类型[gce]

arrays - 如何使用术语查询在此数组中搜索?

elasticsearch - Titan 1.0混合索引不适用于警告-查询需要遍历所有顶点

python - 如何在 PyES 中使用 ResultSet

php - 我无法通过Elastic Search进行AND请求

django - Django Celery 任务中的 Elasticsearch 索引