和一般查询比较,filter查询能够缓存数据,应该尽可能使用
建立测试数据
查看测试数据
1、filtered查询
GET /store/products/_search
{
"query":{
"filtered":{
"query": {
"match_all":{}
},
filter:{
"terms":{
"price":[10,20]
}
}
}
}
}
## 调用没有得到结果? 因为mapping没有指定not_analyzed
GET /store/products/_search
{
"query":{
"filtered":{
"query": {
"match_all":{}
},
filter:{
"term":{
"productID":"QW123"
}
}
}
}
}
GET /_analyze?text=QW123
--发现分析结果呈小写qw123
GET /store/_mapping
DELETE /store
##解决办法:重新建立一个映射,让productID处于not_analyzed模式
PUT /store
{
"mappings":{
"products":{
"properties": {
"productID":{
“type”:“string”,
“index”:“not_analyzed”
}
}
}
}
}
2、bool过滤查询,可以实现组合过滤查询
"bool":{
"must":[],
"should":[], 可以满足,也可以不满足
"must_not":[]
}
GET /store/products/_search
{
"query":{
"filtered":{
"filter": {
"bool":{
"should":[
{"term":{"price":20}},
{"term":{"productID":"SD12342"}}
],
"must_not":[
{"term":{"price":30}}
]
}
}
}
}
}
3、嵌套查询 and or not查询
and 并且
or 或者
not 不是
4、range过滤查询
gt:>
lt:<
gte: >=
lte : <=
5、过滤空和非空
exists
missing
6、cache缓存