对未分析字段的短语查询不起作用



我有一个产品搜索索引,其中包含一个字段"productOptions",其中包含序列化的JSON,这意味着它可能包含一个空数组,用于没有选项的产品,或者一个数组,其中包含具有产品选项的产品的选项:

  • []
  • [{ optionId: "", ... }]

当我在 Luke 中尝试查询+productOptions: "[]"(使用标准分析器)时,我没有得到任何匹配项。我的印象是,只要存在完全匹配,StandardAnalyzer 就会搜索未分析的字段 - 所以我不明白为什么我没有得到任何点击。但是,如果我切换到关键字分析器,我确实会得到点击,但无法使用关键字分析器,因为我正在查询产品选项作为需要 StandardAnalyzer 的更复杂的搜索查询的一部分。

如何编写一个查询来查找所有没有选项的产品(即产品选项 == [])?

注意:我无法控制索引过程,因此无法控制要编制索引的值。

这里的问题如下,StandardAnalyzer有效地删除了[],并只保留了空字符串。

这使得以后搜索相同的字符串[] - 不可能找到任何东西。

找到这些"空"字符串的可能性之一是搜索-field_name:[* TO *],这意味着以下内容:

field_name:[* TO *]是一种笨拙的解决方法,可以搜索此字段中包含除空以外的任何内容的任何文档-并且有效地否定了这种情况,并最终要求所有包含空数据的文档field_name

最新更新