Elasticsearch-短语匹配时避免基于单词和基于模糊的匹配

时间:2018-12-20 09:48:29

标签: elasticsearch

我有一个查询,它搜索短语,单词级别和所搜索单词的模糊性。 有没有一种方法可以在精确短语匹配时限制单词和模糊匹配? 开发的查询是:

PUT test/_doc/1
{
  "field1": "this is a test query - query",
  "field2": "best rest vest pest"
}

GET test/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "multi_match": {
            "query": "this is a test query",
            "type": "phrase",
            "slop": "2",
            "fields": []
          }
        },
        {
          "multi_match": {
            "query": "this is a test query",
            "analyzer": "whitespace",
            "fields": []
          }
        },
        {
          "multi_match": {
            "query": "this is a test query",
            "analyzer": "whitespace",
            "fuzziness": "AUTO",
            "fields": []
          }
        }
      ],
      "minimum_should_match": 1
    }
  },
  "highlight": {
    "type": "unified",
    "fields": {
      "*": {}
    }
  }
}

获得的结果(仅突出显示)为:

“ field1”:[“ 一个 测试 查询- query “],” field2“:[” 最佳 休息 背心 害虫“ ]

当“这是一个测试查询”短语匹配时,我不想突出显示“最佳”,“休息”,“背心”和“害虫”

1 个答案:

答案 0 :(得分:0)

将词组搜索放入must中,并将其他两个条件保留在should中。查询计划者应该足够聪明,可以为您解决这个问题。