Как использовать вложенные агрегации elasticsearch в визуализации kibana

У меня есть следующий поиск в elasticsearch, который возвращает агрегацию по вложенной структуре данных, которая мне нужна, но я действительно хочу использовать это как визуализацию в кибане, но я не понимаю, как это можно сделать:

GET /system_data_nested/_search
{
  "size": 0,
  "aggs": {
    "consideration": {
      "nested": {
        "path": "children"
      },
      "aggs": {
        "gross": {
          "sum": {
            "field": "children.executions.consideration"
          }
        }
      }
    }
  }
}

Что возвращает

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 920,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "consideration": {
      "doc_count": 486,
      "gross": {
        "value": 4492767
      }
    }
  }
}

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

Это возможно?


person mattb    schedule 03.04.2019    source источник


Ответы (1)


На самом деле, да, это возможно. У меня была аналогичная проблема, и я решил ее с помощью Vega визуализация (также посмотрите вступительное видео). Что он делает, так это отправляет пользовательский запрос в Elasticsearch и позволяет вам решить, какую часть ответа вы хотите визуализировать.

В вашем случае это будет выглядеть примерно так (обратите внимание, это HJSON):

{
  $schema: https://vega.github.io/schema/vega-lite/v2.json
  title: Engine Score over Time
  // Define the data source
  data: {
    url: {
      index: system_data_nested
      body: {
        "size": 0,
        "aggs": {
          "consideration": {
            "nested": {
              "path": "children"
            },
            "aggs": {
              "gross": {
                "sum": {
                  "field": "children.executions.consideration"
                }
              }
            }
          }
        }
      }
    }
    format: {
      "property": "aggregations.consideration"
    }
    mark: line
    encoding: {
      x: {
        field: key
        type: temporal
        axis: { "title": "Date" }
      }
      y: {
        field: gross.value
        type: quantitative
        axis: { "title": "Consideration" }
      }
    }
  }
}

Надеюсь это поможет!

person Konrad Holl    schedule 21.11.2019