Trabalhar com bancos de dados é muito divertido, mas às vezes pode ser desafiador, especialmente ao lidar com dados já existentes.
Por exemplo, se você deseja alterar o tipo de campo específico, pode exigir que você retire o serviço, o que pode ter graves repercussões, especialmente em serviços que processam grandes quantidades de dados.
Felizmente, podemos usar os poderosos recursos do Elasticsearch, como reindexação, nós de ingestão, oleodutos e processadores para facilitar essas tarefas.
Este tutorial mostrará como alterar um tipo de campo em um índice específico para outro, usando os nós de ingestão Elasticsearch. O uso dessa abordagem eliminará o tempo de inatividade que afeta os serviços enquanto ainda consegue executar as tarefas de mudança de tipo de campo.
Introdução aos nós de ingestão
O nó de ingestão do Elasticsearch permite que você pré-processo documentos antes da indexação.
Um nó Elasticsearch é uma instância específica do Elasticsearch; nós conectados (mais de um) fazem um único cluster.
Você pode visualizar os nós disponíveis no cluster em execução com a solicitação:
Get /_Nodes /O comando Curl para este é:
Curl -xget “http: // localhost: 9200/_nodes/”A execução deste comando deve fornecer informações enormes sobre os nós, como mostrado abaixo (saída truncada):
Por padrão, todos os nós do Elasticsearch permitem ingerir e são capazes de lidar com operações de ingestão. No entanto, para operações de ingestão pesada, você pode criar um único nó dedicado a ingerir apenas.
Para lidar com pre_process, antes de indexar os documentos, precisamos definir um pipeline que indique a série de pré -processadores.
Os pré -processadores são conjuntos de instruções envolvidas em torno de um oleoduto e são executadas uma de cada vez.
A seguir, a sintaxe geral de como definir um pipeline:
A propriedade Descrição diz o que o pipeline deve alcançar. O próximo parâmetro são os pré -processadores, passados como uma lista na ordem de sua execução.
Crie um pipeline de convertido
Para criar um pipeline que usaremos para converter um tipo, use a solicitação de put com o ponto de extremidade da API mais _ing como:
Coloque _ingest/pipeline/convert_pipelinePara Curl, use o comando:
Curl -xput "http: // localhost: 9200/_ingest/pipeline/convert_piPeline" -h 'content -type: Application/json' -d '"description": "converte o campo Dayofek em um longo de inteiro", " Processadores ": [" convert ": " campo ":" DayofWeek "," Type ":" Long "] ''Reindex e converter Tipo
Depois de termos o oleoduto no nó de ingestão, tudo o que precisamos fazer é chamar a API de indexação e passar no oleoduto como um argumento no Dest do órgão de solicitação como:
Post _reindexPara Curl:
Curl -xpost "http: // localhost: 9200/_reindex" -h 'content -type: Application/json' -d '"fonte": "index": "kibana_sample_data_flights", "destin": " ":" kibana_sample_type_diff "," pipeline ":" convert_pipline " ''Verifique a conversão
Para verificar se o oleoduto foi aplicado corretamente, use a solicitação GET para buscar esse campo específico como:
Get/kibana_sample_data_flights/_mapping/field/DayofWeekIsso deve retornar os dados como:
-----------------------ÍNDICE ORIGINAL---------------------------Conclusão
Neste guia, analisamos como trabalhar com os nós de ingestão ElasticSearch para documentos pré-processo antes da indexação, convertendo um campo de um tipo para outro.
Considere a documentação para saber mais.
https: // www.elástico.CO/guia/pt/elasticsearch/reference/mestre/ingestão.html