Queries
-
Write and execute a search query that is a Boolean combination of multiple queries and filters
-
must: 子句(查询)必须出现在匹配的文档中,并将有助于得分。
-
filter: 子句(查询)必须出现在匹配的文档中。但是不像
must
查询的分数将被忽略。Filter子句在[filter上下文] -
should: 子句(查询)应出现在匹配的文档中。可以匹配,也可以不匹配,匹配的比不匹配的排名高,但是只有should,没有must的情况下必须匹配一个
-
must_not: 子句查询不得出现在匹配的文档中。子句在过滤上下文中执行,这意味着计分被忽略,并且子句被视为用于缓存。由于忽略计分,0因此将返回所有文档的分数。
-
过滤器上下文可以缓存,但是不能排名,fiter和must_not都是这样
查询前缀
- must: 前缀+
- must_not: 前缀-
- should: 什么都不加
- 和常见的bool :AND OR NOT 并不完全一样
如下例子
- black +cat -dog
- 翻译成bool查询: (cat OR (black and cat) AND NOT dog
- 显然lucene的bool查询更简单
复杂bool查询
https://www.elastic.co/cn/blog/lost-in-translation-boolean-operations-and-filters-in-the-bool-query
网友评论