一、搜索请求的结构
query——这是搜索请求中最重要的组成部分,它配置了基于评分返回的最佳文档,也包括了你不希望返回哪些文档
size——代表了返回文档的数量
from——和size一起使用,from用于分页操作
_source——指定_source字段如何返回
sort——默认的排序是基于文档的得分
二、介绍查询和过滤器DSL
![](https://img.haomeiwen.com/i7776349/d6b23a45e7c35750.png)
由于这个差异,过滤器可以比普通的查询更快,而且可以被缓存。使用过滤器的搜索和使用查询的普通搜索是非常相似的,但是需要将查询替换为“filtered”映射,包含原始查询和需要应用的过滤器。
term查询 让你可以指定需要搜索的文档字段和词条
terms查询 可以搜索某个文档字段中的多个词条
match查询 和term查询类似,match查询是一个散列映射,包含了希望搜索的字段和字符串
布尔查询行为 默认情况下match查询使用布尔行为和OR操作符,可以修改为AND
词组查询行为
三、组合查询或复合查询
bool查询
bool查询允许你在单独的查询中组合任意数量的查询,指定的查询子句表明哪些部分是必须(must)匹配、应该(should)匹配或者不能(must_not)匹配上Elasticsearch索引里的数据
1.如果指定bool查询的某部分是must匹配,只有匹配上这些查询的结果才会被返回
2.如果指定了pool查询的某部分是should匹配,只有匹配上指定数量子句的文档才会被返回
3.如果没有指定must匹配的子句,文档至少要匹配一个should子句才能被返回
4.最后,must_not子句会使得匹配其的文档被移出结果集合
must是为了组合多个子句,使用二元操作and(query1 AND query2 AND query3)
should是使用二元操作or组合多个子句(query1 OR query2 OR query3)
四、超越match和过滤器查询
gt 搜索大于某值的字段,不包括该值本身
gte 搜索大于某值的字段,包括该值本身
lt 搜索小于某值的字段,不包括该值本身
lte 搜索小于某值的字段,包括该值本身
prefix查询
prefix查询和过滤器允许你根据给定的前缀来搜索词条
wildcard查询
*通配符匹配任何数量的字符(也可以不含)或者是?通配符匹配单个字符
五、使用过滤器查询字段的存在性
exists过滤器
missing过滤器
将任何查询转变为过滤器
网友评论