Я довольно новичок в ElasticSearch, в настоящее время использую v6.2, и мне кажется, что я столкнулся с проблемой при попытке добавить некоторые агрегации в запрос. Попытка обернуть голову вокруг различных типов агрегации, а также лучших способов хранения данных.
Когда запрос выполняется, у меня есть некоторые переменные атрибуты, которые я хотел бы объединить, а затем вернуть в качестве фильтровпользователю. Например, один символ может иметь атрибуты для «размера», «формы» и «цвета», в то время как другой имеет только «форму» и «цвет».
Полный список атрибутов неизвестен, поэтому я не думаю, что смогу построить запрос таким образом.
Мои данные в настоящее время структурированы следующим образом:
{
id : 1,
title : 'New Character 1',
group : 1,
region : 1,
attrs : [
moves : 2,
# These would be dynamic, would only apply to some rows, not others.
var_colours : ['Blue', Green', 'Red'],
var_shapes : ['Round', 'Square', 'Etc'],
effects : [
{ id : 1, value: 20},
{ id : 2, value: 60},
{ id : 3, value: 10},
]
]
}
В настоящее время у меня есть совокупность групп и регионов, которая выглядит следующим образом. Кажется, он работает замечательно, и я хотел бы добавить что-то похожее для атрибутов.
[
'aggs' => [
'group_ids' => [
'terms' => [
'field' => 'group',
'order' => [ '_count' => 'desc' ]
]
],
'region_ids' => [
'terms' => [
'field' => 'region',
'order' => [ '_count' => 'desc' ]
]
]
]
]
Я надеюсь получить результат, который выглядит следующим образом. Я также не уверен, что если структура данных настроена наилучшим образом, я могу внести изменения там, если это необходимо.
[aggregations] => [
[groups] => [
[doc_count_error_upper_bound] => 0
[sum_other_doc_count] => 0
[buckets] => [
[0] => [
[key] => 5
[doc_count] => 27
],
[1] => [
[key] => 2
[doc_count] => 7
]
]
],
[var_colours] => [
[doc_count_error_upper_bound] => 0
[sum_other_doc_count] => 0
[buckets] => [
[0] => [
[key] => 'Red'
[doc_count] => 27
],
[1] => [
[key] => 'Blue'
[doc_count] => 7
]
]
],
[var_shapes] => [
[doc_count_error_upper_bound] => 0
[sum_other_doc_count] => 0
[buckets] => [
[0] => [
[key] => 'Round'
[doc_count] => 27
],
[1] => [
[key] => 'Polygon'
[doc_count] => 7
]
]
]
// ...
]
Любое понимание, которое кто-либо может предоставить, было бы чрезвычайно полезно.