2017-06-22 206 views
1

=======这里更新====Elasticsearch聚合

我改变data_listnested和在映射我设置类型为'对象”。 以下是我的新聚集查询:

"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 

=========================以下是原来的问题==== ================ 我想从Elasticsearch获得聚合结果。我的数据结构如下:

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" 
    } 
] 

我elasticsearch查询:

"aggs": { 
    "data_result" : { 
     "terms" : {"field" : "data_list.id"} , 
     "aggs": { 
      "values": { 
       "terms": {"field": "data_list.value"} 
      } 
     } 
    } 
} 

我想要的是得到的结果如下:

"aggregations": { 
    ... 
    "data_result": { 
     "buckets": [ 
      { 
       "key": 1, 
       "values": ["a_value1","a_value2"] 
      }, 
      { 
       "key": 2, 
       "values": ["b_value1","b_value2"] 
      }, 
     ] 
    } 
} 

但我得到的是:

"buckets": [ 
    { 
     "key": 1, 
     "values": ["a_value1","a_value2","b_value1","b_value2"] 
    }, 
    { 
     "key": 2, 
     "values": ["a_value1","a_value2","b_value1","b_value2"] 
    } 
] 

做任何事e有任何想法我应该如何改变聚合查询?

+0

你应该定义你的'data_list'为'nested'。默认的类型是'object'。 –

+0

嵌套数据类型和嵌套聚合工作 – Emma

回答

0

这应该工作

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 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
}