Лучший способ получить агрегированные данные из ElasticSearchC#

Место общения программистов C#
Anonymous
Лучший способ получить агрегированные данные из ElasticSearch

Сообщение Anonymous »

У меня есть индекс с такими полями, как deviceId, deviceName, osName и т. д. Мне нужно получить N первых имен osName с помощью count. Для этого я готовлю такой запрос:

Код: Выделить всё

var response = await this.esClient.SearchAsync(s =>
s.Index(Constants.DevicesIndexName)
.Size(0)
.Aggregations(a =>
a.Terms("top_os", t =>
t.Field("osName")
.Size(7))));

var aggregations = response.Aggregations.GetStringTerms("top_os");

var series = aggregations.Buckets.Select(value => new DataSeries { Name = value.Key.ToString(), Data = [(int)value.DocCount] }).ToList();
Я думаю, что здесь может быть лучший или, по крайней мере, улучшенный способ получить эти данные.
Должен ли я передать какой-то конкретный тип в .SearchAsync метод, представляющий структуру индекса? Должен ли я получать термины другого типа?

Используемый пакет Nuget: Elastic.Clients.Elasticsearch 8.12.0

Подробнее здесь: https://stackoverflow.com/questions/789 ... sticsearch

Вернуться в «C#»