Лучший способ получить агрегированные данные из 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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