Reputation: 134
=======update here ====
i changed data_list
to be nested
and in mapping i set type to be `object'.
the following is my new aggregation query:
"aggs":
{
"data_result": {
"nested": {
"path": "data_list"
},
"aggs": {
"id": {
"terms": {"field":"data_list.id"},
"aggs":{
"values": {
"reverse_nested": {},
"aggs": {
"value_item": {
"terms": {
"field": "data_list.value"
}
}
}
}
}
}
}
}
}
but i got empty `values` bucket
=========================the following is original question ==================== i am trying to get aggregation result from Elasticsearch. My data structure is as following:
DOC 1:
"data_list": [
{
"id": 1,
"name": "a",
"value": "a_value1"
},
{
"id": 2,
"name": "b",
"value": "b_value1"
}
]
DOC 2:
"data_list": [
{
"id": 1,
"name": "a",
"value": "a_value2"
},
{
"id": 2,
"name": "b",
"value": "b_value2"
}
]
My elasticsearch query is :
"aggs": {
"data_result" : {
"terms" : {"field" : "data_list.id"} ,
"aggs": {
"values": {
"terms": {"field": "data_list.value"}
}
}
}
}
what i want is to get a result as following:
"aggregations": {
...
"data_result": {
"buckets": [
{
"key": 1,
"values": ["a_value1","a_value2"]
},
{
"key": 2,
"values": ["b_value1","b_value2"]
},
]
}
}
but what i got is :
"buckets": [
{
"key": 1,
"values": ["a_value1","a_value2","b_value1","b_value2"]
},
{
"key": 2,
"values": ["a_value1","a_value2","b_value1","b_value2"]
}
]
does anyone has any idea how should i change aggregation query?
Upvotes: 1
Views: 90
Reputation: 4803
this should work
PUT nested_index1
{
"mappings": {
"document_type" : {
"properties": {
"data_list" : {
"type": "nested",
"properties": {
"value" : {
"type" : "text",
"fields" : {
"raw" : {
"type" : "keyword"
}
}
}
}
}
}
}
}
}
POST nested_index1/document_type
{"data_list": [
{
"id": 1,
"name": "a",
"value": "a_value1"
},
{
"id": 2,
"name": "b",
"value": "b_value1"
}
]}
POST nested_index1/document_type
{
"data_list": [
{
"id": 1,
"name": "a",
"value": "a_value2"
},
{
"id": 2,
"name": "b",
"value": "b_value2"
}
]
}
POST nested_index1/document_type/_search
{
"size": 0,
"aggs": {
"nested_agg": {
"nested": {
"path": "data_list"
},
"aggs": {
"data_list_id": {
"terms": {
"field": "data_list.id",
"size": 10
},
"aggs": {
"data_list_value": {
"terms": {
"field": "data_list.value.raw",
"size": 10
}
}
}
}
}
}
}
}
Upvotes: 0
Reputation: 1804
you may want to take a look at nested datatype and the nested aggregation
--Alex
Upvotes: 2