根据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.