ElasticSearch:ElasticSearch中的IN等效运算符

ElasticSearch:ElasticSearch中的IN等效运算符,第1张

ElasticSearch:ElasticSearch中的IN等效运算符

与克里斯建议的评论类似,类似的替换

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
过滤器(复数)也是如此。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4916201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存