Elasticsearch:父项和子项都有条件的聚合

时间:2017-03-02 09:56:03

标签: parent-child aggregation elasticsearch-5

我有两个名为&#34的指数;骑"和" audit_log" audit_log是乘车的孩子。我需要根据某些条件从audit_log表(索引)中获取平均时间戳。条件跨越父母和孩子。我试图执行的查询是:

curl -XGET' http://localhost:9200/rides/audit_log/_search' -d

{
   "size":0,
   "query":{
      "has_parent":{
         "parent_type":"ride",
         "query":{
            "match":{
               "ride_status":"Ride Completed"
            }
         }
      },
      "match":{
         "status":"Driver Confirmed"
      }
   },
   "aggs":{
      "avg_time":{
         "avg":{
            "field":"createdAt"
         }
      }
   }
}

这里ride_status来自父表骑。

并且,我从这个api点击中得到以下错误:

  

[has_parent]格式错误的查询,预期[END_OBJECT]但找到了   [FIELD_NAME]""线":1," COL":107

1 个答案:

答案 0 :(得分:0)

尝试使用term代替match

{
   "size":0,
   "query":{
      "has_parent":{
         "parent_type":"ride",
         "score" : true, <---- add this
         "query":{
           "term": {
            "ride_status":"Ride Completed"
           }
         }
      },
      "term": {
            "status":"Driver Confirmed"
       }
   },
   "aggs":{
      "avg_time":{
         "avg":{
            "field":"createdAt"
         }
      }
   }
}