Elasticsearch-带有正确词排列的字符串部分

时间:2019-02-28 20:57:54

标签: elasticsearch match elastic-stack

我想知道如何正确查询这种情况:

字段值:

  1. 20182199
  2. 20182188
  3. 20182177

查询字符串(应该与所有三个字符串匹配):

  • 2018->热门
  • 0182->失败
  • 821->失败

另一个要求是,如果查询字符串中存在的单词多于1个,则两个(整个查询字符串)必须匹配,而不是字符串中的每个单词都单独匹配。

这就是为什么我选择了匹配词组前缀查询的原因。 (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase-prefix.html)。它仅不覆盖单词的内部元素上的命中。那就是我现在正在寻找的:-)

我将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我相信Elasticsearch文档专门涵盖了您的用例,并且您正在寻找与Elasticsearch称为ngrams匹配的东西。

  • Partial Matching-快速介绍
  • Ngrams for Partial Matching-值得注意的是,Elasticsearch搜索会调用字符序列ngram和标记带状疱疹序列(与您习惯的稍有不同)
  • Wildcard and Regexp Queries-有关部分匹配的同一部分在这些查询上有注释,这些注释可能足以满足您的需求,并且可能不需要您重新索引/更改分析