有沒有辦法通過嵌套字段進行分組並在非嵌套字段上執行聚合?Elasticsearch按嵌套字段分組
我有這樣的數據在ES
{
"_index": "bighalf",
"_type": "excel",
"_id": "AVE0rgXqe0-x669Gsae3",
"_score": 1,
"_source": {
"Name": "Marsh",
"date": "2015-11-07T10:47:14",
"grade": 9,
"year": 2016,
"marks": 70,
"subject": "Mathematics",
"Gender": "male",
"dob": "22/11/2000",
"sprint": [
{
"sprintdate": "2015-11-06T22:30:00",
"sprintname": "changed",
"sprintpoints": 52
}
]
}
},
{
"_index": "bighalf",
"_type": "excel",
"_id": "AVE0rvTHe0-x669Gsae5",
"_score": 1,
"_source": {
"Name": "Taylor",
"date": "2015-11-07T10:47:14",
"grade": 9,
"year": 2016,
"marks": 54,
"subject": "Mathematics",
"Gender": "male",
"dob": "22/11/2000",
"sprint": [
{
"sprintdate": "2015-11-07T22:30:00",
"sprintname": "jira",
"sprintpoints": 52
}
]
}
}
我想組由sprintname
並找到marks
總和我想是這樣的:
SumBuilder sumGrades = AggregationBuilders.sum("sum_grade").field("grade");
NestedBuilder nested = AggregationBuilders.nested("nested").path("sprint")
.subAggregation(AggregationBuilders.terms("by_sprint").field("sprint.sprintname").subAggregation(sumGrades));
String names[] = { "changed", "jira" };
QueryBuilder query = QueryBuilders.boolQuery().must(
QueryBuilders.nestedQuery("sprint",QueryBuilders.boolQuery().must(QueryBuilders.termsQuery("sprint.sprintname", names))));
FilterAggregationBuilder aggregation = AggregationBuilders.filter("agg").filter(query).subAggregation(nested);
的sum_grade
沒有工作爲了我。但我改變字段(grade
)與嵌套字段(sprintpoints
),它的工作但我的要求是找到sum("grade")
和組由sprint.sprintname
。
你能分享'sprint'字段的映射嗎? 'curl -XGET localhost:9200/bighalf/_mapping/excel/field/sprint' – Val
如果說localhost:9200/bighalf/_mapping/excel/field/sprint。我沒有得到任何映射。但如果我說http:// localhost:9200/bighalf/_mapping/excel。我正在獲取所有映射。 – ravi
{ 「衝刺」:{ 「類型」: 「嵌套」, 「屬性」:{ 「sprintdate」:{ 「類型」: 「日期」, 「格式」:「YYYY-MM-dd'T 「HH:MM:SS」 }, 「sprintname」:{ 「類型」: 「串」, 「索引」: 「not_analyzed」 }, 「sprintpoints」:{ 「類型」: 「長」 } } } } – ravi