Bucket Sort по нечисловому полю (ключевому слову) - PullRequest
0 голосов
/ 17 октября 2019

У меня есть индекс с продуктами, каждый продукт имеет 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
          }
        }
      }
    }
  }
...