在这个问题之后:bool query - must and should on same level, what does it means?我想知道如何在elasticsearch中使用bool
查询实现简单的逻辑查询:(A & B) | C
其中A
,B
和C
都是需要与bool
组合的匹配查询。
如果我没有理解错的话,bool
查询中的should
子句只会让那些结果的分数更高,如果是这样的话,我怎么才能实现“或”关系呢?
假设A、B和C都是数字范围,所以类似于(伪代码):
(x >= 4 & x<=6) | x=2
字符串
由此,我期望得到2,4,5,6
的潜在结果集(="* 给予我4到6之间的所有数字,但2也可以 *”)-但情况并非如此,因为如果“&”表示“必须”-那么“and”和“or”部分相互矛盾(这是我从比我更了解elasticsearch的人那里理解的)。
所以也许我不明白elasticsearch布尔查询是如何工作的,我不知道。一个可以实现上述情况的工作示例也将受到高度赞赏。
例如,下面的方法不起作用,只产生4,5,6
的结果集:
{'query': {'bool': {'should': [{'bool': {'must': [{'range': {'x': {'gte': 4}}}, {'range': {'x': {'lte': 6}}}]}}, {'match': {'x': 2}}]}}}
型
1条答案
按热度按时间ff29svar1#
看起来你做的一切都是正确的。尝试以下操作。
字符串
型
输出:
4,5,6,2
如预期。x1c 0d1x的数据