Elasticsearch must子句的用法(附带实例)
在 Elasticsearch 中,假设我们想找到所有 zhangsan 撰写的书,可以创建一个带有 must 子句的 bool 查询。在 must 子句中,我们编写了一个 match 查询来搜索 zhangsan 撰写的书,代码如下:
当我们说 must 子句接受一组由多个查询组成的数组时,意味着什么?这意味着我们可以向 must 子句中添加多个查询,使其变得更加复杂。
例如,下面实例中包含一个带有两个叶子查询的 must 子句,其中一个叶子查询是搜索作者的 match 查询,另一个叶子查询是搜索短语的 match_phrase 查询。
GET books/_search { "query": { "bool": { ←--- bool查询 "must": [{ ←--- must子句:文档必须匹配这一查询条件 "match": { ←--- 其中一个查询(match查询)匹配Joshua撰写的书 "author": "zhangsan" } }] } } }注意,bool 查询被包含在 query 对象中。它有一个 must 子句,这个子句又接受一个由多个查询条件(在这个例子中是匹配 zhangsan 撰写的所有书)组成的数组。
当我们说 must 子句接受一组由多个查询组成的数组时,意味着什么?这意味着我们可以向 must 子句中添加多个查询,使其变得更加复杂。
例如,下面实例中包含一个带有两个叶子查询的 must 子句,其中一个叶子查询是搜索作者的 match 查询,另一个叶子查询是搜索短语的 match_phrase 查询。
GET books/_search { "query": { "bool": { "must": [{ ←--- 带有两个叶子查询的must子句 "match": { ←--- match查询查找Joshua撰写的书 "author": "zhangsan" } }, { "match_phrase": { ←--- 第二个查询在字段中搜索一个短语 "synopsis": "best C programming books" } }] } } }