文章目录
1. bool 和 filtered
1.1 说明
es 5.0版本更新后,filtered的查询将替换为bool查询。
filtered是比较老的的版本的语法。现在目前已经被bool替代。推荐使用bool。
官方文档地址:链接
1.2 示例使用
老版本写法
GET _search
{
"query": {
"filtered": {
"query": {
"match": {
"text": "quick brown fox"
}
},
"filter": {
"term": {
"status": "published"
}
}
}
}
}
新版本的写法
GET _search
{
"query": {
"bool": {
"must": {
"match": {
"text": "quick brown fox"
}
},
"filter": {
"term": {
"status": "published"
}
}
}
}
}
2. filter的两种用法
-
嵌套在bool下
{
“query”: {
“bool”: {
“must”: {
“term”: {
“term”:{“title”:“kitchen3”}
}
},
“filter”: {
“term”: {
“price”:1000
}
}
}
}
} -
在根目录下使用
{
“query”:{
“term”:{“title”:“kitchen3”}
},
“filter”:{
“term”:{“price”:1000}
}
}
区别
位置
区别
备注
bool下
在filter query先执行filter,不计算score,再执行query。
如 果还要在搜索结果中执行aggregation操作,filter query聚合的是filter和query之后的结果,而filter聚合的是query的结果
根目录下
根目录中的filter在query后执行。
如果还要在搜索结果中执行aggregation操作,filter query聚合的是filter和query之后的结果,而filter聚合的是query的结果
今天的文章es filter term_filter过滤器原理分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88963.html