Hello,
I have to realize distinct data queries on data persisted in ElasticSearch.
My data model looks like:
{"took":15,"timed_out":false,"_shards":{"total":1,"successful":1,"failed":0},"hits":{"total":3,"max_score":1.0,"hits":[{"_index":"event_index_v_0_3","_type":"EventBean","_id":"o6tFCVGjS7mnyUV92d7tOQ","_score":1.0,"_source":{
"severityLevel" : "SL_EVENT",
"source" : {
"sourceId" : "1",
"sourceType" : "VEHICLE",
"description" : null,
"mandator" : {
"mandatorId" : "DEF",
"mandatorName" : null,
"priority" : null
},
"eventTime" : 1410768722000,
"version" : "Version_0_1",
"attributes" : [ {
"paramKey" : "COURSE",
"value" : "123"
}, {
"paramKey" : "DRIVERNO",
"value" : "111"
}, {
"paramKey" : "LINE",
"value" : "101"
}, {
"paramKey" : "gps_x",
"value" : "11111111"
}, {
"paramKey" : "gps_y",
"value" : "87654321"
} ]
}}
where attributes are nested objects of EventBeans.
Now I want to have all distinct values of mandatorId, LINE and gps_x.
The aggregationbuilder looks like:
"aggregations" : {
"source.mandator.mandatorId" : {
"terms" : {
"field" : "source.mandator.mandatorId",
"size" : 2147483647,
"min_doc_count" : 1
},
"aggregations" : {
"attributes" : {
"nested" : {
"path" : "attributes"
},
"aggregations" : {
"gps_x" : {
"filter" : {
"term" : {
"attributes.paramKey" : "gps_x"
}
},
"aggregations" : {
"gps_x" : {
"terms" : {
"field" : "attributes.value",
"size" : 2147483647,
"order" : {
"_count" : "desc"
}
},
"aggregations" : {
"attributes" : {
"reverse_nested" : {
"path" : "attributes"
},
"aggregations" : {
"LINE" : {
"filter" : {
"term" : {
"attributes.paramKey" : "LINE"
}
},
"aggregations" : {
"LINE" : {
"terms" : {
"field" : "attributes.value",
"size" : 2147483647,
"order" : {
"_count" : "desc"
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
and the response looks like:
"aggregations" : {
"source.mandator.mandatorId" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "def",
"doc_count" : 3,
"attributes" : {
"doc_count" : 15,
"gps_x" : {
"doc_count" : 3,
"gps_x" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "11111111",
"doc_count" : 1,
"attributes" : {
"doc_count" : 1,
"LINE" : {
"doc_count" : 0,
"LINE" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ ]
}
}
}
}, {
"key" : "22222222",
"doc_count" : 1,
"attributes" : {
"doc_count" : 1,
"LINE" : {
"doc_count" : 0,
"LINE" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ ]
}
}
}
}, {
"key" : "33333333",
"doc_count" : 1,
"attributes" : {
"doc_count" : 1,
"LINE" : {
"doc_count" : 0,
"LINE" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ ]
}
}
}
} ]
}
}
}
} ]
}
}
The buckets of LINEs are empty, I am using reverse_nested aggregation, but
I think I am still in the filter of attributes.paramKey=gps_x.
How can I solve this problem?
Anyone an idea?
Thank you for your help.
--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/50b5bd03-4305-4575-8399-f122d84c4b53%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.