Elasticsearch:具有多个搜索词的multi_match phrase_prefix查询

时间:2016-02-23 17:34:13

标签: elasticsearch

我有一个包含

等条目的数据库
title: This is my awesome title
abstract: A more detailed descriptions of what [...]

我想构建一个与上述文档匹配的Elasticsearch查询,例如

awe detai

单词:具有多个搜索词的multi_match phrase_prefix查询。 (这旨在用作搜索类型的功能。)

我看到你如何组合multi_match和phrase_prefix,但我不清楚如何为多个搜索词执行此操作。

任何提示?

1 个答案:

答案 0 :(得分:3)

嗯,有几种方法可以做到这一点

POST stack/autocomplete/1
{
  "title": "This is my awesome title",
  "abstract": "A more detailed descriptions of what"
}

然后你可以使用查询字符串搜索星号,但问题是你需要附加asterix来查询

POST stack/autocomplete/_search
{
  "query": {
    "query_string": {
      "fields": [
        "title",
        "abstract"
      ],
      "query": "awe* detai*"
    }
  }
}

如果您想匹配用户查询,那么您可以像那样使用

POST stack/autocomplete/_search
{
  "query": {
    "multi_match": {
      "fields": [
        "title",
        "abstract"
      ],
      "query": "awesome tit",
      "type": "phrase_prefix"
    }
  }
}

另外一个需要考虑的选择是将nGram与查询字符串一起使用,这样您就不需要修改用户查询" awe * detai *"

相关问题