我试图在SQL中找到与IN
\ 等效的ElasticSearch查询NOT
。
我知道我们可以使用带有多个OR的QueryString查询来获得相同的答案,但这最终导致很多OR。
谁能分享这个例子?
与克里斯建议的评论类似,类似的替换IN
是terms
过滤器
(查询暗示得分,这可能会改善返回的订单)。
SELECT * FROM table WHERE id IN (1, 2, 3);
等效的Elasticsearch 1.x过滤器为:
{
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}
等效的Elasticsearch 2.x +过滤器为:
{
"query" : {
"bool" : {
"filter" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}
重要的一点是,terms
过滤器(以及与此相关的查询)可以在完全匹配的情况下工作。它隐含地是一个or
操作,类似于IN
。
如果要反转它,可以使用not过滤器,但是我建议使用稍微冗长的bool
/ must_not
过滤器(以养成也使用bool
/
must
和的习惯bool
)。
{
"query" : {
"bool" : {
"must_not" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}
总体而言,bool
复合查询语法是Elasticsearch中最重要的过滤器之一,term
(单数)和terms
过滤器(复数)也是如此。
问题内容: 有没有一种“不错的”方式为SharePoint创建CAML查询,而这种方式呢? 还是我陷入了嵌套节点的噩梦? 编辑:这是我生成节点的解决方案。 用法: 输出: 也使使用查找字段的重载变得容易一些 问题答案: 不,您需要处理嵌套标签;这些是CAML上受支持的查询说明 也许CAML.NET可以帮助您完成任务。
问题内容: 我有一个名为NUMS的表,其中只有n列。 然后在其中填充值1,2,3,4,5,null。 现在查询 在这种情况下,我想它已转换为 我也在比较n和一个应该产生未知值的null值,它应该返回一个空集。但是它返回1,2(null不返回,尽管包含在IN运算符中) 现在查询 …转换为: 在这里,我上面所说的有效,并且不返回任何内容。 任何人都可以详细解释发生了什么。 问题答案: 好,我找到了答案
问题内容: 对于百万分之一的时间,我希望使用Java中的运算符,类似于SQL中的运算符。它可以作为编译器语法糖来实现。所以这 …真的很棒。实际上,以上内容与此处相当冗长的(且不适用于原始类型)构造相同: 或针对,和类似的类型: 也许会有更有效的实现。 题: 这样的东西会成为Java 8的一部分吗?如果没有,我该如何提出建议?还是我现在可以使用任何等效的构造? 问题答案: 使用op4j: 使用相同的
问题内容: 我有下面的SQL,但无法正常工作 产品类别是婴儿礼物篮,关键字字段是婴儿礼物篮,婴儿礼物 基本上想在关键字列表中找到product_category时获得sub_category? 问题答案: 您将需要使用 使用规范化的数据库结构,这将更加容易和高效。(您当前在单个列中包含多个关键字的结构违反了第一个范式)
我对这个结果很困惑。 是不同的对象,当处理时,它会比较第一个元素的地址,所以 的行为。 (*)是否等于 ? 是一个对象吗?和都指向这个物体的第一个元素?
问题内容: 我经常使用Python,现在我正在快速学习JavaScript(或者应该说是重新学习)。所以,我想问问,JavaScript和的等效之处是什么? 问题答案: 最接近的成语是 利用函数定义中给定的参数个数这一事实。 您可以将其打包到一些帮助程序中,例如 然后做 如果您想使用语法糖,请编写一个函数,该函数将一个函数转换为另一个函数,该函数使用必需和可选参数调用,并将必需参数以及任何其他可选