Elasticsearch,了解完成建议

时间:2019-12-23 14:28:20

标签: elasticsearch autocomplete

我收到了为autocomplete工作的完成建议

但是我有一个我无法回答自己的问题

我们为什么将建议存储在文档的某个字段中?

GET /my_index/_search

{
  hits: [{
    "_id": 1,
    "suggest": {
      "input": [
        "p1",
        "p22",
      ],
      "weight": 1
    }
  }, {
    "_id": 2,
    "suggest": {
      "input": [
        "p22",
        "p3",
      ],
      "weight": 1
    }
  }]
}

对于autocomplete,我们是否只需要一个短语列表?

[
  "p1",
  "p22",
  "p3"
]
  1. 通过suggestdoc的关联我们可以得到什么?
  2. 在示例中,多个文档可以具有相同的suggest输入p22。当我要求autocomplete的{​​{1}}时,我得到两个p2。 有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

  1. 除了将建议存储在文档本身内部的completion字段中之外,没有其他方法可以存储建议。这样可以为您提供最大的灵活性,因为即使两个文档有相同或相似的建议,如果您认为有必要,也可以给予另一个建议更高的权重。

  2. 如果您有多个具有相同建议的文档,则可以利用skip_duplicates设置,ES会从响应中过滤出重复的建议。