【问题标题】:Retrieve distinct values for search as you type in Elasticsearch在 Elasticsearch 中键入时检索不同的搜索值
【发布时间】:2020-06-12 09:52:50
【问题描述】:

我们有一个字段title,类型是search_as_you_type

{
  "mappings": {
    "properties": {
      "title": {
        "type": "search_as_you_type"
      }
    }
  }
}

当我们搜索时

{
  "query": {
    "match_phrase_prefix": {
      "title": "red"
    }
  }
}

我们得到重复的结果

red car
red icecream
red car

这是因为我们的文档具有相同的标题值。

有没有办法表明结果必须具有不同的值?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以查看title 字段的术语聚合,以防您键入时不按照[this SO answer] 1 中给出的示例进行搜索。您还可以查看this blog,它解释了如何从 Elasticsearch 中获取唯一值。

    另外,请确保结果中出现的这些文档是相同的文档,而不是具有相同值的不同文档。

    编辑:- 正如评论中所讨论的,在这种情况下,completion suggestor 更有用,因为它处理重复并解决了问题。

    【讨论】:

    • 是的,我们对不同的文件有相同的标题
    • 那么它们本质上是不同的文档,您想正确过滤它们吗?你也有机会浏览我提供的链接,如果有帮助,请联系我
    • 是的,我只想检索其中一个,没有重复项,并且我不能使用术语聚合,因为字段的类型是search_as_you_type,我不能添加"fielddata": true,你试过了吗你的解决方案?
    • 您应该在标题字段上创建另一个 keyword 子字段,以便您可以利用字段折叠。该线程可能会有所帮助:stackoverflow.com/questions/62152287/…
    • @user13674325 但是你最好使用处理重复的completion suggester
    猜你喜欢
    • 2017-03-30
    • 2016-05-30
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2017-11-14
    • 2016-07-04
    • 2015-09-22
    • 1970-01-01
    相关资源
    最近更新 更多