elasticsearch 怎么同时检索单 field 多个值的条件

2020-08-27 文化 85阅读

1、 多词条查询:

多词条查询 允许匹配那些在内容中含有某些词条的文档。词条查询允许匹配单个未经分析的词条,多词条查询可以用来匹配多个这样的词条。假设想得到所有在tags字段中含有novel或book的文档。运行以下查询来达到目的:

{

"query":{

"terms":{

"tags":["novel","book"],

"minimum_match":1

}

}

}

把minimum_match属性设置为1;这意味着至少有1个词条应该匹配。如果想要查询匹配所有词条的文档,可以把minimum_match属性设置为2

2、使用bool查询来合并多个term插叙。

可以通过布尔查询来封装无限数量的查询,并通过下面描述的节点之一使用一个逻辑值来连接它们。

should:被它封装的布尔查询可能被匹配,也可能不被匹配。

被匹配的should节点数由minimum_should_match参数控,此参数的值描述了文档被视为匹配时,应该匹配的should子句的最少数量。举例来说,它可以是个整数值,比如2,也可以是个百分比,比如75%。

3、must:被它封装的布尔查询必须被匹配,文档才会返回。

4、must_not:被它封装的布尔查询必须不被匹配,文档才会返回。

{

"query":{

"bool":{

"should":{

"term":{

"title":"aa"

}

},

"should":{

"term":{

"title":"bb"

}

},

"should":{

"term":{

"title":"cc"

}

},

minimum-should-match=1

}

}

}

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com