准备数据:

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 forumwhere (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 forumwhere 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"        }      }    ]  }}