我必须道歉,如果这是相当琐碎的,但我是相当新的ElasticSearch(8.5)的世界和斗争有点找到一个合适的解决方案,从文档。
最终,目标是创建一个DSL来表示:
(attr1 IS NOT NULL AND attr2 IS NULL)
OR (attr3 IS NOT NULL AND attr4 IS NULL)
OR attr5 = true
我开始沿着得分的道路,但不能得到一致的结果。
如有任何建议,我们将不胜感激。
我必须道歉,如果这是相当琐碎的,但我是相当新的ElasticSearch(8.5)的世界和斗争有点找到一个合适的解决方案,从文档。
最终,目标是创建一个DSL来表示:
(attr1 IS NOT NULL AND attr2 IS NULL)
OR (attr3 IS NOT NULL AND attr4 IS NULL)
OR attr5 = true
我开始沿着得分的道路,但不能得到一致的结果。
如有任何建议,我们将不胜感激。
1条答案
按热度按时间rqcrx0a61#
你可以使用下面的DSL查询:
这里,我把所有的3x 1 m0n1x条件放入
should
子句,把所有的内部AND
条件放入bool
子句。exists
查询位于must
内,用于检查非空值;exists
查询位于must_not
内,用于检查空值。请注意,仅当文档中没有字段或字段设置为空时,使用
must_not
进行exists
查询才有效如果字段具有空字符串值,则该查询无效