0

我有一个 match_phrase_prefix 查询,它按预期工作。但是当用户在关键字末尾传递任何特殊字符时,ES 忽略这些字符,仍然返回结果。 query{ match_phrase_prefix:{ content: { query: searchTerm } } }

我正在使用此查询来搜索前缀。如果我通过像溢出这样的术语@#@#!! ES 将所有结果返回给我,其中包含溢出一词。但相反,我想进行精确的前缀匹配,其中特殊字符不会被忽略。搜索词可以是多个词,也可以是堆栈溢出搜索。我如何在不忽略 special_chars 的情况下对 prefix_match 进行 ES 搜索。

4

1 回答 1

0

您可以keyword在定义查询时使用分析器。

{
  "query": {
    "match_phrase_prefix": {
      "content": {
        "query": "overflow@#@#!!",
        "analyzer": "keyword"
      }
    }
  }
}
于 2021-11-29T10:46:35.063 回答