Elasticsearch在通过子级或父级进行搜索时组合查询

时间:2016-01-07 16:09:28

标签: elasticsearch

我是Elasticsearch的新手,并且我已经尽力通过文档,谷歌和最重要的方式找到我的问题的答案。

目前,我不得不通过儿童或家长分开我的查询,以找到我要找的东西。这就是我现在所拥有的(我正在为我的cURL请求使用名为Sense的Kibana模块):

GET /raow/raower/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "has_child": {
            "type": "break",
            "query": {
              "match": {
                "smoke": false
              }
            }
          }
        },
        {
          "has_child": {
            "type": "break",
            "query": {
              "match": {
                "time": "12:00"
              }
            }
          }
        }
      ]
    }
  }
}

正如你所看到的,我对has_child的两个问题都是通过raower的孩子看到的,这对于一场比赛而言是突破,但我正在努力将两者结合起来。非常感激任何的帮助。正如我之前所说的,我对Elasticsearch很新,所以如果有任何关于语法的内容会更好地改变,请告诉我!

看到这是我的第一个问题,我真的希望以前没有问过,我尽力找到它,如果可能在我道歉之前被问过。

1 个答案:

答案 0 :(得分:1)

由于has_child接受任何查询,也许您只需将bool查询嵌套在has_child查询中即可。例如:

GET /raow/raower/_search
{
  "query": {
    "has_child": {
      "type": "break",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "smoke": false
              }
            },
            {
              "match": {
                "time": "12:00"
              }
            }
          ]
        }
      }
    }
  }
}