2017-03-02 26 views
0

我有兩個名爲「ride」和「audit_log」的指數,其中audit_log是乘車的孩子。我需要根據一些條件從audit_log表(索引)中獲取時間戳的平均值。條件跨越父母和子女。查詢,我想執行的是:Elasticsearch:對父母和子女都具有條件​​的聚合

捲曲-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, 「關口」: 107

回答

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" 
     } 
     } 
    } 
} 
+0

我試過的建議,但沒有奏效。我注意到,has_parent不使用主索引查詢。 –