Представьте себе два документа:
[
{
"_id": "abc",
"categories": {
"category-id-1": 1,
"category-id-2": 50
}
},
{
"_id": "def",
"categories": {
"category-id-1": 2
}
}
]
Как видите, каждый документ можно связать с рядом категорий, установив вложенное поле в поле categories
.
Благодаря этому сопоставлению я смогу запросить документы из определенной категории и упорядочить их по значению, установленному в качестве значения для этого поля.
Моя проблема в том, что теперь я хочу сделать агрегацию для подсчета для каждой категории количества документов. Это дало бы следующий результат для набора данных, который я предоставил:
{
"aggregations": {
"categories" : {
"buckets": [
{
"key": "category-id-1",
"doc_count": 2
},
{
"key": "category-id-2",
"doc_count": 1
}
]
}
}
}
Я не могу найти ничего в документации, чтобы решить эту проблему. Я совершенно новичок в ElasticSearch, поэтому, возможно, я что-то делаю не так, когда занимаюсь изучением документации или выбором карты.
Возможно ли сделать такое объединение с моим отображением? Я использую ES 6.x
РЕДАКТИРОВАТЬ: Вот отображение для индекса:
{
"test1234": {
"mappings": {
"_doc": {
"properties": {
"categories": {
"properties": {
"category-id-1": {
"type": "long"
},
"category-id-2": {
"type": "long"
}
}
}
}
}
}
}
}