Group By (Aggregation), чтобы получить только последние значения полей - PullRequest
0 голосов
/ 09 января 2020

Я пишу запрос для чтения файла metricbeat. Это дает мне все, что я хочу, но повторяет значение несколько раз.

Я хочу сгруппировать по последнему метку времени, чтобы получить только последнюю запись.

Ниже мой запрос

string indexName = "metricbeat-7.4.2-" + DateTime.Now.Year.ToString() + "." + DateTime.Now.Month.ToString("00") + "." + DateTime.Now.Day.ToString("00");
connectionSettings = new ConnectionSettings(connectionPool).DefaultIndex(indexName);
elasticClient = new ElasticClient(connectionSettings);

            string[] systemFields = new string[]
            {
                "system.memory.actual.used.pct",
                "system.cpu.total.norm.pct"                
            };

            var elasticResponse = elasticClient.Search<object>(s => s
                .DocValueFields(dvf => dvf.Fields(systemFields))
                );

DSL-запрос

get /metricbeat*/_search?pretty=true
 { 
   "query" : {
        "match_all": {}
    },
    "docvalue_fields" : [
      "system.memory.actual.used.pct",
      "system.cpu.total.norm.pct",
      "system.load.5",
      "docker.diskio.summary.bytes"
    ]
 }
...