格式描述:

term格式:

    "term": {      "FIELD": {        "value": "VALUE"      }     

terms格式:

    "terms": {      "FIELD": [        "VALUE1",        "VALUE2"      ]    }

对于terms,如果和SQL语句联系起来的话,那么就相当于in

准备数据:

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、为帖子字段增加tag字段

POST /forum/_bulk{ "update": { "_id": "1"} }{ "doc" : {"tag" : ["java", "hadoop"]} }{ "update": { "_id": "2"} }{ "doc" : {"tag" : ["java"]} }{ "update": { "_id": "3"} }{ "doc" : {"tag" : ["hadoop"]} }{ "update": { "_id": "4"} }{ "doc" : {"tag" : ["java", "elasticsearch"]} }

2、 搜索articleID为KDKE-B-9947-#kL5或QQPX-R-3956-#aD8的帖子

GET /forum/_search{  "query": {    "constant_score": {      "filter": {        "terms": {          "articleID": [            "KDKE-B-9947-#kL5",            "QQPX-R-3956-#aD8"          ]        }      }    }  }}

输出:

{  "took" : 179,  "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" : "2",        "_score" : 1.0,        "_source" : {          "articleID" : "KDKE-B-9947-#kL5",          "userID" : 1,          "hidden" : false,          "postDate" : "2017-01-02",          "tag" : [            "java"          ]        }      },      {        "_index" : "forum",        "_type" : "_doc",        "_id" : "4",        "_score" : 1.0,        "_source" : {          "articleID" : "QQPX-R-3956-#aD8",          "userID" : 2,          "hidden" : true,          "postDate" : "2017-01-02",          "tag" : [            "java",            "elasticsearch"          ]        }      }    ]  }}

3、搜索tag中包含java的帖子

GET /forum/_search{  "query": {    "constant_score": {      "filter": {        "terms": {          "tag": [            "java"          ]        }      }    }  }}
{  "took" : 0,  "timed_out" : false,  "_shards" : {    "total" : 1,    "successful" : 1,    "skipped" : 0,    "failed" : 0  },  "hits" : {    "total" : {      "value" : 3,      "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",          "tag" : [            "java",            "hadoop"          ]        }      },      {        "_index" : "forum",        "_type" : "_doc",        "_id" : "2",        "_score" : 1.0,        "_source" : {          "articleID" : "KDKE-B-9947-#kL5",          "userID" : 1,          "hidden" : false,          "postDate" : "2017-01-02",          "tag" : [            "java"          ]        }      },      {        "_index" : "forum",        "_type" : "_doc",        "_id" : "4",        "_score" : 1.0,        "_source" : {          "articleID" : "QQPX-R-3956-#aD8",          "userID" : 2,          "hidden" : true,          "postDate" : "2017-01-02",          "tag" : [            "java",            "elasticsearch"          ]        }      }    ]  }}

4、优化搜索结果,仅仅搜索tag中只包含java的帖子

更新数据增加tag字段包含的标签数量

POST /forum/_bulk{ "update": { "_id": "1"} }{ "doc" : {"tag_cnt" : 2} }{ "update": { "_id": "2"} }{ "doc" : {"tag_cnt" : 1} }{ "update": { "_id": "3"} }{ "doc" : {"tag_cnt" : 1} }{ "update": { "_id": "4"} }{ "doc" : {"tag_cnt" : 2} }
GET /forum/_search{  "query": {    "constant_score": {      "filter": {        "bool": {          "must": [            {              "terms": {                "tag": ["java"]              }            },            {              "term": {                "tag_cnt": 1              }            }          ]        }      }    }  }}
{  "took" : 192,  "timed_out" : false,  "_shards" : {    "total" : 1,    "successful" : 1,    "skipped" : 0,    "failed" : 0  },  "hits" : {    "total" : {      "value" : 1,      "relation" : "eq"    },    "max_score" : 1.0,    "hits" : [      {        "_index" : "forum",        "_type" : "_doc",        "_id" : "2",        "_score" : 1.0,        "_source" : {          "articleID" : "KDKE-B-9947-#kL5",          "userID" : 1,          "hidden" : false,          "postDate" : "2017-01-02",          "tag" : [            "java"          ],          "tag_cnt" : 1        }      }    ]  }}