У меня есть индекс с продуктами, каждый продукт имеет category
и category_owner
. Я хотел бы показать в своей таблице GUI все категории, отсортированные по category_owner, но таблица должна быть отображаемой на странице.
Я знаю, что есть способ сортировать (и разбивать на страницы) агрегаты, используя bucket_sort
. Пример
GET products/_search
{
"size": 0,
"query": {
"match_all": {}
},
"aggs": {
"unique_categories": {
"terms": {
"field": "category",
"size": 1000
},
"aggs": {
"inner": {
"avg": {
"field": "price"
}
},
"soring_agg": {
"bucket_sort": {
"sort": [
{
"inner": {"order": "asc"}
}
],
"from": 1,
"size": 1
}
}
}
}
}
}
Но есть ли способ сортировки по нечисловому полю? Я могу создать term
агрегацию с размером 1 или top_hists
поиск, например
"aggs": {
"inner": {
"top_hits": {
"size": 1,
"sort": [
{
"@timestamp": {"order": "desc"}
}
],
"_source": {
"includes": ["category_owner"]
}
}
},
"soring_agg": {
"bucket_sort": {
"sort": [
{
"inner": {"order": "asc"}
}
]
}
}
}
Bu У меня есть ошибка buckets_path must reference either a number value or a single value numeric metric aggregation, got: [InternalTopHits] at aggregation [inner]
terms
агрегация также неработы
"inner": {
"terms": {
"field": "category_owner",
"size": 1
}
},
buckets_path must reference either a number value or a single value numeric metric aggregation, got: [StringTerms] at aggregation [inner]
Можно ли создать нумерацию страниц по уникальным категориям, отсортированным по владельцу?
РЕДАКТИРОВАТЬ: я могу создать все уникальные категории для каждого владельцано я должен сортировать и разбивать на страницы вручную в моем приложении: (
"aggs": {
"owners": {
"terms": {
"field": "category_owner",
"size": 100000
},
"aggs": {
"categories": {
"terms": {
"field": "category",
"size": 1000
}
}
}
}
}