“Ao trabalhar com índices Elasticarch, você pode encontrar uma instância em que precisa remover um campo de um documento existente. Infelizmente, o Elasticsearch não fornece uma solicitação nativa que possamos usar para realizar a referida ação.
Podemos, no entanto, usar a API de atualização de documentos e passar um script que nos permite remover um campo com base em seu nome.”
NOTA : esse processo exige que você tenha conhecimento básico de scripts do Elasticsearch e da API de atualização de documentos. Sinta-se à vontade para explorar os documentos ou nossos tutoriais sobre o assunto para saber mais.
Vamos mergulhar.
Verifique se o documento existe
Antes de remover um campo de um documento específico, é bom garantir que o documento de destino exista no índice.
Podemos usar a API de pesquisa para buscar o documento de destino.
Por exemplo, suponha que temos o índice kibana_sample_logs_data. Podemos pesquisar no índice um documento que contém um IP específico.
NOTA : O exemplo acima é usado apenas para fins ilustrativos. Você pode usar vários métodos para verificar se um documento específico está disponível no índice.
curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_search' -H 'kbn-xsrf: relatórios' -H 'Tipo de conteúdo: aplicativo/json' -d'{
'tamanho': 0,
'query': {'match': {
'ip': '171.24.97.162'
}}
}'
Saída resultante:
{'tomou': 3,
'timed_out': falso,
'_shards': {
'total': 1,
'bem sucedido': 1,
'pulado': 0,
'falhou': 0
},
'exitos': {
'total': {
'valor': 17,
'relação': 'eq'
},
'max_score': null,
'exitos': []
}
}
Em seguida, um script simples pode remover um campo de destino do documento. Comece fazendo login no console do Kibana e execute o comando:
curl -XPOST 'http://localhost:9200/kibana_sample_data_logs/_update/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: relatórios' -H 'Tipo de conteúdo: aplicativo/json' -d'{
'script': 'ctx._source.remove('\''ip'\'')'
}'
A solicitação acima usa um script de contexto indolor para atualizar o documento e remover o campo “ip” com o ID especificado.
Resultado:
{'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_versão 2,
'resultado': 'atualizado',
'_shards': {
'total': 2,
'bem sucedido': 2,
'falhou': 0
},
'_seq_no': 14074,
'_termo_primário': 1
}
Depois que o documento for atualizado, você poderá verificar executando a consulta.:
curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_doc/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: relatórios'A solicitação acima deve retornar os dados armazenados no documento com o ID especificado.
Podemos verificar que o campo IP não está mais no documento.
Conclusão
Neste artigo, você aprendeu a usar os recursos de script do Elasticsearch para remover um campo de um documento existente.
Obrigado por ler!!