1

Образцы документов:Elasticsearch значение массива агрегации количества

{ 
    "id": "62655", 
    "attributes": [ 
     { 
      "name": "genre", 
      "value": "comedy" 
     }, 
     { 
      "name": "year", 
      "value": "2016" 
     } 
    ] 
} 

{ 
    "id": "62656", 
    "attributes": [ 
     { 
      "name": "genre", 
      "value": "horror" 
     }, 
     { 
      "name": "year", 
      "value": "2016" 
     } 
    ] 
} 

{ 
    "id": "62657", 
    "attributes": [ 
     { 
      "name": "language", 
      "value": "english" 
     }, 
     { 
      "name": "year", 
      "value": "2015" 
     } 
    ] 
} 

Ожидаемые выходные:

{ 
    "hits" : { 
     "total": 3, 
     "hits": [] 
    }, 
    "aggregations": { 
     "attribCount": { 
      "language": 1, 
      "genre": 2, 
      "year": 3 
     }, 
     "attribVals": { 
      "language": { 
       "english": 1 
      }, 
      "genre": { 
       "comedy": 1, 
       "horror": 1 
      }, 
      "year": { 
       "2016": 2, 
       "2015": 1 
      } 
     } 
    } 
} 

Мой запрос:

я мог получить "attribCount" аг gregation, используя следующий запрос. Но я не знаю, как получить значение каждого значения атрибута.

{ 
    "query": { 
     "filtered": { 
      "query": { 
       "match_all": {} 
      } 
     } 
    }, 
    "aggs": { 
     "attribCount": { 
      "terms": { 
       "field": "attributes.name", 
       "size": 0 
      } 
     } 
    }, 
    "size": 0 
} 

Когда я суммирую с использованием атрибута.value, он дает общий счет. Но мне нужно, чтобы он был указан под значением имени, как указано в ожидаемом выходе.

+0

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-nested-aggregation.html – blackmamba

+0

@blackmamba я уже смотрел на него. его непонятно, как выполнить мое требование. Когда я даю путь как «атрибуты», я получаю исключение. когда я даю «attributes.name», он получает счет как 0 – Sriram

+0

, у вас есть сопоставленные атрибуты и его родительский элемент как вложенный справа? – blackmamba

ответ

1

Как вы говорите, поле атрибута вложено. Попробуйте, это будет работать

{ 
    "size": 0, 
    "aggs": { 
    "count": { 
     "nested": { 
     "path": "attributes" 
     }, 
     "aggs": { 
     "attribCount": { 
      "terms": { 
      "field": "attributes.name" 
      } 
     }, 
     "attribVal": { 
      "terms": { 
      "field": "attributes.name" 
      }, 
      "aggs": { 
      "attribval2": { 
       "terms": { 
       "field": "attributes.value" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

Эй, это сработало? – blackmamba

+0

На этот раз я столкнулся с http://stackoverflow.com/a/31052532/1179958, и это именно то, что я искал, и когда я был здесь, чтобы сказать вам это, вы на это ответили точно :) – Sriram

Смежные вопросы