在Elasticsearch中组合查询

时间:2016-02-12 14:00:43

标签: elasticsearch

具有以下查询:

curl -XGET 'localhost/my_index/my_type/_search?pretty=true' -d'
{
"query": {
  "bool": {
     "must": [
        {
           "query_string": {
              "default_field": "body",
              "query": "hello stackoverflow"
           }
        },
        {
           "terms": {
              "_id": ["10"]
           }
        },
        {
           "has_child": {
              "type": "user_item_relation",
              "query": {
                 "term": {
                    "user_id": "1234"
        }}}},
        {
           "has_child": {
              "type": "user_item_relation",
              "query": {
                 "term": {
                    "fav": "0"
}}}}]}}}'

有没有办法将两个最后条件(user_id = 1234fav = "0")合并到一个条件而不使用两次has_child

1 个答案:

答案 0 :(得分:1)

bool内使用has_child查询。

curl -XGET "http://localhost:9200/my_index/my_type/_search?pretty=true" -d'
{
"query": {
  "bool": {
     "must": [
        {
           "query_string": {
              "default_field": "body",
              "query": "hello stackoverflow"
           }
        },
        {
           "terms": {
              "_id": [
                 "10"
              ]
           }
        },
        {
           "has_child": {
              "type": "user_item_relation",
              "query": {
                 "bool": {
                    "must": [
                       {
                          "term": {
                             "user_id": "1234"
                          }
                       },
                       {
                          "term": {
                             "fav": "0"
                          }
                       }
                    ]
                 }
              }
           }
        }
     ]
    }
  }
 }'