正如Andrei在评论中指出的,这是对
bool过滤器 的正确理解:
must
可以翻译成(A and B)
should
可以翻译成(C or D)
must_not
可以翻译成((not E) and (not F))
它们中的每一个都是独立的操作,但是可以完全按照您的显示进行组合。
(A and B) and (C or D) and ((not E) and (not F))
就布尔逻辑而言,之所以与众不同,
(not (E and F))是因为与说相同
((not E) or (not F))。如果
E与说相同
field== 5并且
F与说相同
field == 6,那么这与相同
field != 5 or field != 6,这将永远是正确的!
这导致以不同的方式看待它:
must_not
可以翻译成(not (E or F))
换句话说,如果任何过滤器不匹配,则文档不匹配。这导致合并版本的稍微简化的版本:
(A and B) and (C or D) and (not (E or F))



