准备数据:
POST /forum/_bulk
{"index": { "_id": 1}}
{"articleID" : "XHDK-A-1293-#fJ3", "userID" : 1, "hidden": false, "postDate": "2017-01-01"}
{"index": { "_id": 2}}
{"articleID" : "KDKE-B-9947-#kL5", "userID" : 1, "hidden": false, "postDate": "2017-01-02"}
{"index": { "_id": 3}}
{"articleID" : "JODL-X-1937-#pV7", "userID" : 2, "hidden": false, "postDate": "2017-01-01"}
{"index": { "_id": 4}}
{"articleID" : "QQPX-R-3956-#aD8", "userID" : 2, "hidden": true, "postDate": "2017-01-02"}
需求
1、搜索发帖日期为 2017-01-01,或者帖子 ID 为 XHDK-A-1293-#fJ3 的帖子,同时要求帖子的发帖日期不能为 2017-01-02
select * from forum
where (post_date = '2017-01-01' or article_id = 'XHDK-A-1293-#fJ3')
and post_date != '2017-01-02'
GET /forum/_search
{
"query": {
"constant_score": {
"filter": {
"bool": {
"should": [
{
"term": {"postDate": "2017-01-01"}
},
{
"term": {"articleID": "XHDK-A-1293-#fJ3"}
}
],
"must_not": [
{
"term": {"postDate": "2017-01-02"}
}
]
}
}
}
}
}
输出:
{
"took" : 55,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "forum",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"articleID" : "XHDK-A-1293-#fJ3",
"userID" : 1,
"hidden" : false,
"postDate" : "2017-01-01"
}
},
{
"_index" : "forum",
"_type" : "_doc",
"_id" : "3",
"_score" : 1.0,
"_source" : {
"articleID" : "JODL-X-1937-#pV7",
"userID" : 2,
"hidden" : false,
"postDate" : "2017-01-01"
}
}
]
}
}
must:标识必须匹配
should: 可以匹配其中一个即可
must_not: 必须不匹配
2、搜索帖子 ID 为 XHDK-A-1293-#fJ3,或者是帖子 ID 为 JODL-X-1937-#pV7 而且发帖日期为 2017-01-01 的帖子
select * from forum
where article_id = 'XHDK-A-1293-#fJ3' or
(article_id = 'JODL-X-1937-#pV7' and post_date = '2017-01-01')
GET /forum/_search
{
"query": {
"constant_score": {
"filter": {
"bool": {
"should": [
{
"term": {"articleID": "XHDK-A-1293-#fJ3"}
},
{
"bool": {
"must": [
{
"term": {"articleID": "JODL-X-1937-#pV7"}
},
{
"term": {"postDate": "2017-01-01"}
}
]
}
}
]
}
}
}
}
}
输出:
{
"took" : 7,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "forum",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"articleID" : "XHDK-A-1293-#fJ3",
"userID" : 1,
"hidden" : false,
"postDate" : "2017-01-01"
}
},
{
"_index" : "forum",
"_type" : "_doc",
"_id" : "3",
"_score" : 1.0,
"_source" : {
"articleID" : "JODL-X-1937-#pV7",
"userID" : 2,
"hidden" : false,
"postDate" : "2017-01-01"
}
}
]
}
}