Elasticsearch:按搜索分数对存储桶进行排序以实现自动完成

时间:2018-10-30 23:33:40

标签: elasticsearch

假设我有一个文档索引,每个文档都有两个字段:名称和姓氏。我想启用自动完成功能。输入一些字符串后,它将返回适合于输入的名称列表(两次没有相同的名称)(对于子字符串搜索,我有ngram子字段name.autocomplete)。

现在,假设我有文件

Name    Surname
----    -------
Max     Gray
Marie   White
Marie   Black
Alex    Red
Alex    Blue

和请求

{
  "size": 0,
  "query": {
    "bool": {
      "should": [
        "match": {
          "name.autocomplete": {
            "query": "ma"
          }
        }
      }
    ]
  }
  "aggs": {
    "names":{
      "size": 2,
      "terms": {
        "field": "name"
      }
    }
  }
}

此请求将返回AlexMarie而不是MaxMarie,因为默认情况下会计算存储桶的类型(不计分)。因此,我必须以某种方式按分数对它们重新排序,但是我找不到任何有效的示例(至少对于我的6.4 ES)。也许还有一些更正确的解决方案。

谢谢。

0 个答案:

没有答案