2016-08-21 3 views
0

Для каждого документа у меня есть массив категорий, это выглядит следующим образом:ElasticSearch: подсчитывает элемент в массиве

[{ 
    "id": 1, 
    "level": 1 
}, { 
    "id": 2, 
    "level": 2 
}, { 
    "id": 3, 
    "level": 3 
}] 

Как я могу рассчитывать категории у меня есть в каждом документе, в соответствии с уровнем 3 category.id ?

+0

Pls добавить дополнительную информацию или отправить запрос вместе с схема будет good.thx – user3775217

ответ

0

Категория array должна быть вложенным полем. А остальное можно обрабатывать с помощью агрегатов. Попробуйте что-то подобное приведенному ниже коду.

"aggregations": { 
"mainAgg": { 
    "nested": { 
    "path": "category" 
    }, 
    "aggs": { 
    "levelFilter": { 
     -- filter condition 
     "filter": { 
     "term": { 
      "level": 3 
     }, 
      -- count aggregation 
     "aggs": { 
      "count": { 
      "value_count": { 
       "field": "level" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

}

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