English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Dado de Resumo do Elasticsearch

A tarefa de agregação é uma tarefa periódica que agrega dados dos índices especificados pelo padrão de índice e os agrega em um novo índice. No exemplo a seguir, criamos um índice chamado sensor, que possui diferentes marcas de tempo. Em seguida, criamos uma tarefa de agregação que usa job cron para agregar dados desses índices periodicamente.

PUT /sensor/_doc/1
{
   "timestamp": 1516729294000,
   "temperature": 200,
   "voltage": 5.2,
   "node": "a"
}

Ao executar o código acima, obtemos o seguinte resultado-

{
   "_index" : "sensor",
   "_type" : "_doc",
   "_id" : ""1",
   "_version" : 1,
   "result" : "created",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 0,
   "_primary_term" : 1
}

Agora, adicione o segundo documento para outros documentos, e assim por diante.

PUT /sensor-2018-01-01/_doc/2
{
   "timestamp": 1413729294000,
   "temperature": 201,
   "voltage": 5.9,
   "node": "a"
}

Criação de tarefa de agregação

PUT _rollup/job/sensor
{
   "index_pattern": "sensor"-*",
   "rollup_index": "sensor_rollup",
   "cron": ""*/30 * * * * ?",
   "page_size" :1000,
   "groups" : {
      "date_histogram": {
         "field": "timestamp",
         "interval": ""60m"
      },
      "terms": {
         "fields": ["node"]
      }
   },
   "metrics": [
      {
         "field": "temperature",
         "metrics": ["min", "max", "sum"]
      },
      {
         "field": "voltage",
         "metrics": ["avg"]
      }
   ]
}

Os parâmetros cron controlam o tempo de ativação e a frequência de ativação da tarefa. Quando o cron do job de agregação é acionado, ele começará a agregação a partir do ponto onde foi interrompido na última ativação

Após a execução e processamento de alguns dados da tarefa, podemos usar consultas DSL para algumas pesquisas.

GET /sensor_rollup/_rollup_search
{
   "size": 0,
   "aggregations": {
      "max_temperature": {
         "max": {
            "field": "temperature"
         }
      }
   }
}