四、基于bool来组合多个filter条件搜索数据
2017-07-14 本文已影响148人
编程界的小学生
1、搜索发帖日期为2017-01-01,或者帖子ID为XHDK-A-1293-#fJ3的帖子,同时要求帖子的发帖日期绝对不为2017-01-02的document
SQL :
select *
from forum.article
where (post_date='2017-01-01' or article_id='XHDK-A-1293-#fJ3')
and post_date!='2017-01-02'
ES:
GET /forum/article/_search
{
"query": {
"constant_score": {
"filter": {
"bool": {
"should" : [
{"term" : {"postDate" : "2017-01-01"}},
{"term" : {"articleID.keyword" : "XHDK-A-1293-#fJ3"}}
],
"must_not" : {
"term" : {"postDate" : "2017-01-02"}
}
}
}
}
}
}
2、搜索帖子ID为XHDK-A-1293-#fJ3,或者帖子ID为JODL-X-1937-#pV7而且发帖日期为2017-01-01的帖子
SQL:
select *
from forum.article
where article_id='XHDK-A-1293-#fJ3'
or (article_id='JODL-X-1937-#pV7' and post_date='2017-01-01')
ES:
GET /forum/article/_search
{
"query": {
"constant_score": {
"filter": {
"bool": {
"should" : [
{
"term" : {"articleID.keyword" : "XHDK-A-1293-#fJ3"}
},
{
"bool" : {
"must" : [
{"term" : {"articleID.keyword" : "JODL-X-1937-#pV7"}},
{"term" : {"postDate" : "2017-01-01"}}
]
}
}
]
}
}
}
}
}
3、梳理学习到的知识点
(1)bool:must,must_not,should:组合多个过滤条件
(2)bool可以嵌套
(3)相当于SQL中的多个and条件和or条件
若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:
qrcode_for_gh_577b64e73701_258.jpg