Eliminar campo de Elasticsearch

Eliminar Campo De Elasticsearch



“Al trabajar con índices de Elasticearch, es posible que encuentre una instancia en la que necesite eliminar un campo de un documento existente. Desafortunadamente, Elasticsearch no proporciona una solicitud nativa que podamos usar para realizar dicha acción.

Sin embargo, podemos usar la API de actualización de documentos y pasar un script que nos permita eliminar un campo en función de su nombre”.







NOTA : este proceso requiere que tenga conocimientos básicos de secuencias de comandos de Elasticsearch y la API de actualización de documentos. Siéntase libre de explorar los documentos o nuestros tutoriales sobre el tema para obtener más información.



Sumerjámonos.



Comprobar si existe el documento

Antes de eliminar un campo de un documento específico, es bueno asegurarse de que el documento de destino existe dentro del índice.





Podemos usar la API de búsqueda para obtener el documento de destino.

Por ejemplo, supongamos que tenemos el índice kibana_sample_logs_data. Podemos buscar en el índice un documento que contenga una IP específica.



NOTA : El ejemplo anterior se utiliza únicamente con fines ilustrativos. Puede usar varios métodos para verificar si un documento específico está disponible en el índice.

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_search' -H 'kbn-xsrf: informes' -H 'Tipo de contenido: aplicación/json' -d'
{
'tamaño': 0,
'consulta': {'coincidencia': {
'ip': '171.24.97.162'
  }}
}'

Salida resultante:

{
'tomó': 3,
'timed_out': falso,
'_fragmentos': {
'totales': 1,
'exitoso': 1,
'omitido': 0,
'fallido': 0
  },
'golpes': {
'total': {
'valor': 17,
'relación': 'eq'
    },
'max_score': nulo,
'golpes': []
  }

}

A continuación, un simple script puede eliminar un campo de destino del documento. Comience iniciando sesión en su consola Kibana y ejecute el comando:

curl -XPOST 'http://localhost:9200/kibana_sample_data_logs/_update/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: informes' -H 'Tipo de contenido: aplicación/json' -d'
{
'script': 'ctx._source.remove('\''ip'\'')'
}'

La solicitud anterior utiliza un script de contexto sencillo para actualizar el documento y eliminar el campo 'ip' con la ID especificada.

Producción:

{
'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_versión 2,
'resultado': 'actualizado',
'_fragmentos': {
'totales': 2,
'exitoso': 2,
'fallido': 0
  },
  '_seq_no': 14074,
'_término_primario': 1
}

Una vez actualizado el documento, puede verificar ejecutando la consulta:

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_doc/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: informes'

La solicitud anterior debe devolver los datos almacenados en el documento con el ID especificado.

Podemos verificar que el campo IP ya no está en el documento.

Conclusión

En este artículo, aprendió a usar las capacidades de secuencias de comandos de Elasticsearch para eliminar un campo de un documento existente.

¡¡Gracias por leer!!