Todos os produtos
Search
Central de documentação

Elasticsearch:Detectar e prever dados com machine learning do Elasticsearch

Última atualização: Aug 13, 2026

O machine learning do Elasticsearch ajuda a encontrar anomalias e prever tendências nos dados automaticamente. Este tutorial mostra como usar machine learning supervisionado e não supervisionado para obter insights dos dados de negócios. Você criará um job de detecção de anomalias para monitorar o tráfego da web e um modelo de regressão para prever atrasos de voos.

Contexto

O machine learning do Elasticsearch inclui dois tipos principais: não supervisionado e supervisionado.

  • O machine learning não supervisionado abrange técnicas como a detecção de anomalias. Nesse modo, os algoritmos encontram padrões incomuns nos dados automaticamente, sem necessidade de pré-treinamento sobre o que constitui uma anomalia.

  • O machine learning supervisionado envolve técnicas como regressão e classificação. Nesse caso, treina-se um modelo com um conjunto de dados rotulado para fazer previsões ou classificar novos dados posteriormente.

Categoria

Caso de uso

Tipo

Descrição

Detecção de anomalias

Detecção baseada em métrica única

não supervisionado

Identifica anomalias em uma única série temporal ao analisar um campo do índice.

Detecção baseada em múltiplas métricas

não supervisionado

Encontra anomalias usando uma ou mais métricas e pode dividir a análise em vários campos do índice.

População

não supervisionado

Detecta anomalias comparando o comportamento de uma entidade com o da população.

População refere-se a todo o grupo de indivíduos, eventos ou itens sobre os quais se deseja tirar conclusões.

Avançado

não supervisionado

Oferece mais opções para personalizar e otimizar jobs de machine learning em casos de uso avançados.

Categorização

não supervisionado

Reconhece padrões em mensagens de log, agrupa mensagens semelhantes e detecta entradas incomuns.

Data frame analytics

Detecção de outliers

não supervisionado

Utiliza clustering para identificar pontos de dados incomuns em comparação com a maioria dos dados.

Regressão

supervisionado

Prevê um valor numérico para cada ponto de dado.

Classificação

supervisionado

Prevê a classe à qual cada ponto de dado pertence.

Antes de começar

  1. Crie um cluster do Alibaba Cloud Elasticsearch. Este tutorial utiliza um cluster Elasticsearch 8.5. Para mais informações, consulte Create an Alibaba Cloud Elasticsearch cluster.

    Nota

    Os recursos de machine learning podem variar entre diferentes versões do Elasticsearch. Para mais detalhes, consulte a documentação oficial What is Elastic Machine Learning?.

  2. Faça login no console do Kibana. Para mais informações, consulte Log on to the Kibana console.

  3. Adicione os conjuntos de dados de amostra.

    1. Na home do Kibana, em Get started by adding integrations, clique em Try sample data.

    2. Na aba Sample data, clique em Other sample data sets.

    3. Para os conjuntos de dados Sample flight data e Sample web logs, clique em Add data.

      O conjunto de dados será adicionado quando o botão Add data mudar para View Data. Após adicionar os dados de amostra, os índices kibana_sample_data_flights e kibana_sample_data_logs são criados automaticamente.

Criar jobs de machine learning

Este tutorial usa dois exemplos para demonstrar o machine learning não supervisionado e supervisionado.

Criar um job de detecção de anomalias de métrica única

Nesta seção, cria-se um job de machine learning não supervisionado usando detecção baseada em métrica única. A análise desses dados ajuda a entender os padrões de acesso dos usuários, otimizar o desempenho do site e detectar atividades de acesso incomuns.

O exemplo a seguir mostra um registro de dados do conjunto Sample web logs.

{
  "_index": "kibana_sample_data_logs",
  "_type": "_doc",
  "_id": "n6GHI4gBmNQSVxOwNnPn",
  "_version": 1,
  "_score": null,
  "_source": {
    "agent": "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24",
    "bytes": 847,
    "clientip": "122.62.233.59",
    "extension": "",
    "geo": {
      "srcdest": "CN:CO",
      "src": "CN",
      "dest": "CO",
      "coordinates": {
        "lat": 31.24905556,
        "lon": -82.39530556
      }
    },
    "host": "www.elastic.co",
    "index": "kibana_sample_data_logs",
    "ip": "122.62.233.59",
    "machine": {
      "ram": 4294967296,
      "os": "win xp"
    },
    "memory": null,
    "message": "122.62.233.59 - - [2018-08-21T02:34:54.901Z] \"GET /logging HTTP/1.1\" 200 847 \"-\" \"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.50 Safari/534.24\"",
    "phpmemory": null,
    "referer": "http://twitter.com/success/paul-w-richards",
    "request": "/logging",
    "response": 200,
    "tags": [
      "success",
      "info"
    ],
    "timestamp": "2023-06-06T02:34:54.901Z",
    "url": "https://www.elastic.co/solutions/logging",
    "utc_time": "2023-06-06T02:34:54.901Z",
    "event": {
      "dataset": "sample_web_logs"
    }
  },
  "fields": {
    "@timestamp": [
      "2023-06-06T02:34:54.901Z"
    ],
    "utc_time": [
      "2023-06-06T02:34:54.901Z"
    ],
    "hour_of_day": [
      2
    ],
    "timestamp": [
      "2023-06-06T02:34:54.901Z"
    ]
  },
  "sort": [
    1686018894901
  ]
}
Nota

Também é possível usar transforms para agregar dados brutos em métricas ou estatísticas de nível superior. Armazenar essas agregações em um novo índice melhora o desempenho das consultas e fornece uma source de dados limpa para outros jobs de machine learning.

  1. No painel de navegação à esquerda do Kibana, clique no ícone de menu image e, em seguida, clique em Kibana > Machine learning.

  2. No painel de navegação à esquerda, clique em Anomaly Detection > Job.

  3. Na página Anomaly detection jobs, clique em Create job.

  4. Selecione a visualização de dados kibana_sample_data_logs.

  5. Na página Create a job from the data view Kibana Sample Data Logs, na seção Use a wizard, clique em Single metric.

  6. Configure o job de métrica única.

    1. Para o intervalo de tempo, selecione Use full data e clique em Next step.

      Nota

      O conjunto de dados de amostra contém poucos dados; portanto, usa-se o conjunto completo kibana_sample_data_logs.

    2. Para o campo, selecione Count(Event rate). Configure o bucket span e as configurações de dados esparsos e clique em Next step.

      Nota

      Usar Count(Event rate) como métrica permite que o job de detecção de anomalias monitore o número de solicitações por segundo respondidas pelo servidor.

      • bucket span: Intervalo de tempo para agregar os dados da série temporal para análise. Ajuste esse valor com base nos seus dados e requisitos de análise.

      • sparse data: Especifica se buckets sem dados devem ser tratados como anômalos.

    3. Insira um Job ID e uma job description e clique em Next step.

    4. Após a validação do job, clique em Next step.

  7. Na parte inferior da página, clique em Create job.

    O Elasticsearch reproduz os dados cronologicamente, constrói um modelo e avalia os dados subsequentes com base nesse modelo.

    Nota

    O tempo necessário para validar e criar o job depende do tamanho do índice de origem.

  8. Depois que o job for criado, clique em View Results no canto inferior esquerdo.

    • Clique no ícone de informação image.png ao lado de Single time series analysis of count para visualizar detalhes sobre a análise.

    • Arraste as bordas da linha do tempo ou mova-a para selecionar um intervalo de tempo para a detecção de anomalias.

    • No painel direito, clique em Forecast para prever valores futuros.

    O painel direito oferece três caixas de seleção — Show model bounds, Annotations e Show forecast — para controlar o que o gráfico exibe. O gráfico mostra os valores reais como uma linha azul sólida, os limites do modelo como uma área sombreada em azul claro e os intervalos de previsão como uma área sombreada em amarelo. Abaixo do gráfico, a seção Anomalies lista os pontos de dados anômalos detectados em uma tabela com colunas para tempo, gravidade, detector, valor real, valor típico, descrição e ações.

Criar e usar um modelo de regressão

Treinar um modelo de previsão de atraso de voo

Nesta seção, treina-se um modelo de machine learning supervisionado usando regressão. Essa previsão ajuda companhias aéreas e passageiros a planejar melhor voos e horários.

O exemplo a seguir mostra um registro de dados do conjunto Sample flight data.

{
  "_index": "kibana_sample_data_flights",
  "_type": "_doc",
  "_id": "7b0aeogBmNQSVxOwslB_",
  "_version": 1,
  "_score": null,
  "_source": {
    "FlightNum": "QYX9S3I",
    "DestCountry": "CH",
    "OriginWeather": "Cloudy",
    "OriginCityName": "Chicago",
    "AvgTicketPrice": 824.8516378170061,
    "DistanceMiles": 4442.909325899777,
    "FlightDelay": false,
    "DestWeather": "Thunder & Lightning",
    "Dest": "Zurich Airport",
    "FlightDelayType": "No Delay",
    "OriginCountry": "US",
    "dayOfWeek": 4,
    "DistanceKilometers": 7150.1694661808515,
    "timestamp": "2023-06-02T07:28:15",
    "DestLocation": {
      "lat": "47.464699",
      "lon": "8.54917"
    },
    "DestAirportID": "ZRH",
    "Carrier": "Logstash Airways",
    "Cancelled": false,
    "FlightTimeMin": 420.59820389299125,
    "Origin": "Chicago O'Hare International Airport",
    "OriginLocation": {
      "lat": "41.97859955",
      "lon": "-87.90480042"
    },
    "DestRegion": "CH-ZH",
    "OriginAirportID": "ORD",
    "OriginRegion": "US-IL",
    "DestCityName": "Zurich",
    "FlightTimeHour": 7.009970064883188,
    "FlightDelayMin": 0
  }
}
  1. No painel de navegação à esquerda do Kibana, clique no ícone de menu image.png e, em seguida, clique em Kibana>Machine learning.

  2. No painel de navegação à esquerda, clique em Data frame analytics > Job.

  3. Na página Data frame analytics jobs, clique em Create job.

  4. Selecione a visualização de dados kibana_sample_data_flights.

  5. Na seção Configure da página Create job, configure os parâmetros do job.

    1. Selecione regression como tipo de análise.

    2. Para a dependent variable, selecione FlightDelayMin. Este é o campo que o modelo aprenderá a prever.

    3. Nos campos incluídos, exclua os campos Cancelled, FlightDelay e FlightDelayType.

      Esses campos estão diretamente relacionados ao resultado. Incluí-los causaria overfitting no modelo, reduzindo sua precisão de previsão em novos dados.

    4. Ajuste a porcentagem de treinamento.

      Essa configuração divide os dados em um conjunto de treinamento e um conjunto de teste. Este tutorial usa uma porcentagem de treinamento de 90%.

      Nota

      O tempo de treinamento aumenta conforme a quantidade de dados. Para conjuntos de dados muito grandes, comece com uma porcentagem menor, como 50%, e ajuste conforme necessário para equilibrar o tempo de treinamento e a precisão do modelo.

  6. Clique em Continue e configure as Additional options.

    1. Defina feature importance values como 5. Isso calcula as cinco principais features que mais contribuem para as previsões, ajudando na seleção de features e na otimização do job.

    2. Defina Prediction field name como FlightDelayMin_prediction. Isso especifica o nome do campo que armazenará os resultados da previsão.

    3. Desmarque a caixa de seleção Use estimated model memory limit e defina o Model memory limit como 500MB. Isso especifica a memória máxima que o job pode usar. Jobs complexos em grandes conjuntos de dados consomem muita memória. Se o job exceder esse limite, ele poderá falhar ou ter baixo desempenho.

    4. Defina The maximum number of threads como 1. Esse parâmetro especifica o número máximo de threads para o job de treinamento. Usar muitas threads pode causar problemas de memória ou instabilidade no sistema.

    5. Clique em Continue e defina o ID do job como flightdelaymin_job.

    6. Clique em Continue para validar a configuração do job.

    7. Após a aprovação da validação, clique em Continue.

    8. Na seção Create, clique em Create para iniciar o job.

      O tempo necessário para criar o job depende da quantidade de dados de treinamento.

  7. Quando o job for concluído, clique em View Results para ver a análise.

    Na seção model evaluation, é possível revisar o desempenho do modelo.

    • Erro de generalização: Mede o desempenho do modelo em dados novos e não vistos. Um erro de generalização menor indica que o modelo é mais preciso em dados desconhecidos.

    • Erro de treinamento: Mede o desempenho do modelo no conjunto de dados de treinamento. Um erro de treinamento menor indica que o modelo se ajusta bem aos dados de treinamento.

    • Métricas de avaliação:

      • mean squared error: Métrica importante para avaliar o desempenho da regressão. É a média das diferenças quadráticas entre os valores reais e previstos. Um valor menor indica previsões mais precisas.

      • R squared: Métrica que indica quão bem o modelo se ajusta aos dados. Um valor mais próximo de 1 indica um ajuste melhor. Um valor acima de 0,8 geralmente é considerado um bom ajuste.

      • mean squared logarithmic error: Média das diferenças quadráticas entre o logaritmo dos valores reais e previstos. Um valor menor indica melhor desempenho de previsão.

      Nota

      Ao comparar vários modelos de regressão, considere tanto o mean squared error quanto os valores de R squared para encontrar o modelo que melhor se adapta ao seu conjunto de dados.

      • Um mean squared error de 0 ou um valor de R squared de 1 geralmente é impossível, pois as previsões do modelo são influenciadas por muitos fatores que não podem ser totalmente contabilizados.

      • Um mean squared logarithmic error de NaN (Not a Number) indica que o valor real ou previsto era um número não positivo ou zero.

      Para mais informações, consulte Evaluating data frame analytics.

  8. Usar o modelo treinado para inferência

    Use um processador de inferência em um pipeline de ingestão para fazer previsões com seu modelo treinado de atraso de voo.

    1. No painel de navegação à esquerda do Kibana, clique no ícone de menu image e, em seguida, clique em Management > Developer Tools.

    2. No Console, execute o seguinte comando para localizar e registrar o model_id.

      GET _ml/inference/flightdelaymin_job*?human=true

      Esse comando consulta todos os resultados de análise de inferência para jobs correspondentes a flightdelaymin_job e retorna a saída em formato legível. O flightdelaymin_job é o job ID you defined when creating the regression job.

    3. Crie um pipeline de ingestão que use o inference processor e seu modelo treinado.

      Nota

      Substitua o model_id no comando pelo valor obtido na etapa anterior.

      PUT _ingest/pipeline/flight_flightDelayMin_predict
      {
        "description": "Predict the number of minutes of delay for each flight",
        "processors": [
          {
            "inference": {
              "model_id": "flightDelayMin_job-168609891****",
              "inference_config": {
                "regression": {}
              },
              "field_map": {},
              "tag": "flightDelayMin_prediction"
            }
          }
        ]
      }
    4. Simule o pipeline para fazer uma previsão em novos dados, usando FlightDelayMin como variável alvo.

      POST _ingest/pipeline/flight_flightDelayMin_predict/_simulate
      {
        "docs": [
          {
            "_source": {
              "FlightNum": "EDGSV3T",
              "DestCountry": "CN",
              "OriginWeather": "Damaging Wind",
              "OriginCityName": "Durban",
              "AvgTicketPrice": 1065.7037805199147,
              "DistanceMiles": 7273.460817641552,
              "FlightDelay": true,
              "DestWeather": "Rain",
              "Dest": "Shanghai Pudong International Airport",
              "FlightDelayType": "Carrier Delay",
              "OriginCountry": "ZA",
              "dayOfWeek": 5,
              "DistanceKilometers": 11705.500526106527,
              "timestamp": "2023-06-03T09:34:00",
              "DestLocation": {
                "lat": "31.14340019",
                "lon": "121.8050003"
              },
              "DestAirportID": "PVG",
              "Carrier": "Kibana Airlines",
              "Cancelled": false,
              "FlightTimeMin": 881.1071804361806,
              "Origin": "King Shaka International Airport",
              "OriginLocation": {
                "lat": "-29.61444444",
                "lon": "31.11972222"
              },
              "DestRegion": "SE-BD",
              "OriginAirportID": "DUR",
              "OriginRegion": "SE-BD",
              "DestCityName": "Shanghai",
              "FlightTimeHour": 14.685119673936343,
              "FlightDelayMin": 45
            }
          }
        ]
      }

      O resultado é o seguinte.

      "flightDelayMin_prediction" : {
        "FlightDelayMin_prediction" : 50.278760382477095,
        "feature_importance" : [
          {
            "feature_name" : "FlightTimeMin",
            "importance" : 43.5994522867254
          },
          {
            "feature_name" : "DistanceKilometers",
            "importance" : -16.095227076624866
          },
          {
            "feature_name" : "DistanceMiles",
            "importance" : -15.496369672570939
          },
          {
            "feature_name" : "OriginAirportID",
            "importance" : -5.120423036009302
          },
          {
            "feature_name" : "FlightTimeHour",
            "importance" : 3.944654321505046
          }
        ],
        "model_id" : "flightdelaymin_job3-1686721092815"
      }

      O atraso real do voo (FlightDelayMin) foi de 45 minutos, e o atraso previsto (FlightDelayMin_prediction) é de 50,28 minutos, o que representa uma estimativa próxima.

      O objeto feature_importance mostra os cinco principais fatores que mais contribuíram para a previsão: FlightTimeMin, DistanceKilometers, DistanceMiles, OriginAirportID e FlightTimeHour. Use essas informações para entender melhor os fatores que influenciam os atrasos de voos e, possivelmente, refinar seu modelo.