Indexing 在NoTy-分析字段的中间搜索
我有一个Elasticsearch索引,其中一个字段标记为not_Analysis。此字段包含一个以空格分隔的值列表,如下所示:Indexing 在NoTy-分析字段的中间搜索,indexing,elasticsearch,analyzer,Indexing,elasticsearch,Analyzer,我有一个Elasticsearch索引,其中一个字段标记为not_Analysis。此字段包含一个以空格分隔的值列表,如下所示: Value1 Value2 Value3 现在,我想执行搜索以查找此字段包含“Value2”的文档。我已经测试过使用文本短语前缀进行搜索,但对“Value2”的搜索与任何内容都不匹配。另一方面,搜索“Value1”或“Value1 Value2”匹配。我不希望在搜索中有任何模糊性,只希望精确匹配(这就是字段设置为“未分析”的原因) 有没有办法进行这样的搜索 根据我对
Value1 Value2 Value3
现在,我想执行搜索以查找此字段包含“Value2”的文档。我已经测试过使用文本短语前缀进行搜索,但对“Value2”的搜索与任何内容都不匹配。另一方面,搜索“Value1”或“Value1 Value2”匹配。我不希望在搜索中有任何模糊性,只希望精确匹配(这就是字段设置为“未分析”的原因)
有没有办法进行这样的搜索
根据我对Elasticsearch的有限理解,我猜我需要将字段设置为使用空白分析器进行分析。是这样吗?正确,使用
标准
或空白
分析器将单词分解成块,按空格、逗号等分割。然后,查询将匹配“Value2”,无论其在文档字段中的位置如何
Standard Analyzer也会将您的字段小写,这意味着只有小写的搜索词才会匹配。您可以使用通配符执行此操作,但这将是一个昂贵的查询。 您可能必须将“lowercase_expanded_terms”设置为false才能进行匹配 当您搜索“Value2”并使用通配符时,在lucene解析之后,搜索将被解释为“Value2” 查询字符串:Value2*->ES解释值2* 请注意,它将搜索小写,这对分析字段很有用,但在未分析的字段中,您将没有匹配项(如果原始值为大写) 小写的\u扩展的\u术语阻止了这种情况的发生 现在,如果字段没有像您所说的那样进行分析,那么下面的查询应该与您的文档相匹配
{
"size": 10,
"query": {
"query_string": {
"query": "title:*Value2*"
}
}
}
很抱歉回答得很糟糕