gpt4 book ai didi

elasticsearch - bool过滤器的理解

转载 作者:行者123 更新时间:2023-12-04 03:50:23 28 4
gpt4 key购买 nike

根据 http://www.elastic.co/guide/en/elasticsearch/guide/master/combining-filters.html 处的 elasticsearch 文档, bool 过滤器可以是以下内容:

{
"bool" : {
"must" : [
A,
B
],
"should" : [
C,
D
],
"must_not" : [
E,
F
],
}
}

在含义上,相当于下面的逻辑运算:

A and B and (C or D) and (not E) and (not F)

这是正确的吗?

谢谢!

最佳答案

正如 Andrei 在评论中指出的,这是对 bool filter 的正确理解:

  • 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))

就 bool 逻辑而言,它与 (not (E and F)) 不同的原因是因为它与 ((not E)或(不是 F))。如果 E 等同于 field == 5F 等同于 field == 6 ,那么这与 field != 5 或 field != 6 相同,它始终为真!

这导致以不同的方式看待它:

  • must_not可以翻译为(not (E or F))

换句话说,如果任何过滤器不匹配,则文档不匹配。这导致了组合版本的稍微简化的版本:

(A and B) and (C or D) and (not (E or F))

关于elasticsearch - bool过滤器的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29907306/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com