当前位置: 首页 > 面试题库 >

了解布尔过滤器

秦俊友
2023-03-14
问题内容

根据http://www.elastic.co/guide/zh-cn/elasticsearch/guide/master/combining-
filters.html
上的elasticsearch文档,布尔过滤器可以是以下内容:

{
   "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 过滤器 的正确理解:

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


 类似资料:
  • 我在ES中有两个问题。对于同一组文档,两者的周转时间都不同。两者在概念上都在做同样的事情。我没有什么疑问 1-这两者之间有什么区别?2-哪个更好使用?3-如果两者相同,为什么表现不同? 映射: 更新1: 我在同一组数据上尝试了bool/必须查询和bool/过滤器查询,但我发现了奇怪的行为 1-bool/必须查询能够搜索所需的文档 2-虽然bool/filter无法搜索文档。如果我删除第二个字段条件

  • 我从事elasticsearch,我尝试混合两个工作查询。第一个是“and filter”,第二个是“bool filter”,但我失败了。 我的查询是从用户交互界面动态生成的。 “和过滤器”: 我需要“和过滤器”来查询数据,例如,字段必须等于“非洲”或“亚洲”或为空。这是一个工作查询的示例: 此查询工作正常,结果如下: 现在我需要用字段“D\u TYPESTATUS”来限制结果数据,该字段必须与

  • 问题内容: 使用嵌套对象的布尔运算符时遇到一些麻烦。这是我的映射: 我想获取恰好包含两个指定ip甚至更多的文档。 假设我的文档具有以下ips: 我想通过使用此过滤器进行搜索来仅检索DOC 1: 问题在于,同时检索了DOC 1和DOC2。 问题答案: 你可以使用你的条件过滤器是这样的: 这是我用来测试的一些代码: http://sense.qbox.io/gist/d6b5f4e4c0d2977a0

  • 我试图编写一个由2个部分组成的弹性搜索布尔查询。我想要“必须”的两个条件和“应该”的两个条件。问题是我只想得到“应该”的分数。我尝试了“过滤器”,但没有成功。 你有什么想法吗?

  • 从文档开始: public void setRetainInstance(布尔保留) 控制片段实例是否在activity重新创建过程中保留(例如从配置更改)。这只能与不在后堆栈中的碎片一起使用。如果设置,则在重新创建activity时,片段生命周期将略有不同: 将不调用onDestroy()(但仍将调用onDetach(),因为该片段正在与其当前activity分离)。 由于未重新创建片段,因此不

  • 问题内容: 我有一个值列表,需要根据给定的布尔值列表中的值进行过滤: 我使用以下行生成一个新的过滤列表: 结果是: 这条线工作正常,但是(对我而言)看起来有点过大了,我想知道是否有更简单的方法来实现这一目标。 忠告 以下答案提供了两个好的建议: 1-不要像我一样命名列表,因为它是内置函数。 2-不要比较像我做的事情,因为这是不必要的。只需使用就足够了。 问题答案: 您正在寻找: 时序比较(py3.