与克里斯建议的评论类似,类似的替换
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过滤器(复数)也是如此。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)