在索引中输入以下示例:
{
"_index": "aggs_20141028",
"_type": "aggobj",
"_id": "4aNpd7zlR5eTdA7o2I898A",
"_version": 1,
"_score": 1,
"_source": {
"UserId": 4,
"Created": "2014-10-28T09:40:22.0652362+02:00",
"Path": "Path_0",
"IntProp1": 1,
"IntProp2": 87,
"IntProp3": 903,
"BoolProp1": false,
"BoolProp2": true,
"BoolProp3": false,
"StringProp1": "StringProp_6",
"StringProp2": "StringProp_6",
"StringProp3": "StringProp_3"
}
}
如何在以下用例中聚合数据?
原始ES文档很难理解...... http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-sum-aggregation.html
答案 0 :(得分:0)
您的数据中没有字段startdate - 我假设您的意思是Created? 你还有三个BoolProp字段都是布尔值 - 你不清楚你想要如何计算它们,例如你在考虑他们是否在场,是真的吗?
size字段取决于数据的大小,需要调整。
以下是我接近第一个要求的方法:
curl -XGET 'http://localhost:9200/aggs_20141028/aggobj/_search?pretty' -d '{
"aggs": {
"date_filter_agg": {
"filter" : {
"term": { "Created": "2014-10-28T09:40:22.0652362+02:00" }},
"aggs" : {
"user_agg" : {
"terms": {"size": 0, "field" : "UserId"},
"aggs" : {
"date_agg": {
"date_histogram" : { "field" : "Created", "interval" : "month" },
"aggs" : {
"BoolProp_count": {"sum" : {"script" : "(doc[\"BoolProp1\"].value == \"T\" ? 1 : 0) + (doc[\"BoolProp2\"].value == \"T\" ? 1 : 0) + (doc[\"BoolProp3\"].value == \"T\" ? 1 : 0)"} } }}
}}}}}}}'
需要注意的关键事项 -
其他要求的答案应该非常相似。