Выполните сложный запрос, чтобы преобразовать модель индекса в другую с агрегатами - PullRequest
0 голосов
/ 14 мая 2019

Я новичок в Elastic Ecosystem, поэтому я не знаю, как на самом деле искать мою проблему. Так как я более осведомлен о SQL, я попытаюсь объяснить, используя это.

У меня есть следующееМодель моего индекса

public class ElasticLogModel
    {
        //public Guid Id { get; set; }
        public DateTime Datetime { get; set; }
        public int Id1 { get; set; }
        public int Id2 { get; set; }
        public int Id3 { get; set; }
        public int CategoryId { get; set; }
        public string CategoryName { get; set; }
        public int Counter1 { get; set; }
        public int Counter2 { get; set; }
    }

И полученный список, который я хочу получить в итоге

public class POCO
{        
    public DateTime Datetime { get; set; }
    public int Id1 { get; set; }
    public int Id2 { get; set; }
    public int Id3 { get; set; }
    public string TopCategoryOfTheDay { get; set; }
    public int TotalCounter1OfTheDay { get; set; }
    public int TotalCounter2OfTheDay { get; set; }
    public List<ElasticLogModel> LogModelsOfTheDay
}

Самое простое решение, которое я думаю, - использовать Linq после получения всехстроки, которые меня интересуют, но мне интересно, можно ли этого добиться, отложив обработку до Elastic

Id1, Id2, Id3 - мой сложный ключ.Я просматриваю Группу By для объекта DateTime, удаляющего часть времени, и мне нужно найти TopCategory дня и сумму Counter1 и Counter 2 для дня.Высшая категория - та, у которой самый высокий Counter1 + Counter2.Каждый день может иметь до 10000 записей для каждой (Id1, Id2, Id3), и производительность является хорошим дополнительным бонусом, если я могу достичь этого без необходимости повторять каждую запись.

Надеюсь, мне удалось передать то, чего я пытаюсь достичь.

...