Eliminar un campo de un documento en Elasticsearch

Aprende a eliminar campos de los documentos de Elasticsearch mediante la API de actualización, scripts o reindexación para eliminaciones individuales y masivas.

¿Todavía no conoces Elasticsearch? Únete a nuestro webinar de los Primeros pasos con Elasticsearch. También puedes iniciar una prueba gratuita en el cloud o prueba Elastic en tu máquina ahora mismo.

En Elasticsearch, es un requisito común eliminar un campo de un documento. Esto puede ser útil cuando quieres eliminar información innecesaria o desactualizada de tu índice. En este artículo, discutiremos diferentes métodos para eliminar un campo de un documento en Elasticsearch, junto con ejemplos e instrucciones paso a paso.

Método 1: Uso de la API de actualización

La API de actualización te permite actualizar un documento mediante un script que modifica el código fuente del documento. Puedes usar esta API para eliminar un campo de un documento al configurarlo como nulo. Aquí tienes una guía paso a paso sobre cómo hacerlo:

1. Identifica el índice, el tipo de documento (si se emplea Elasticsearch 6.x o anterior) y el ID del documento que se desea actualizar.

2. Usar la API Update con un script que ponga el campo en null, o mejor aún, que lo elimine del documento fuente. El siguiente ejemplo demuestra cómo eliminar el campo "field_to_delete" de un documento con ID "1" en el índice "my_index":

3. Ejecutar la solicitud. Si tiene éxito, Elasticsearch devolverá una respuesta indicando que el documento fue actualizado.

Nota: Este método solo elimina el campo del documento especificado. El campo seguirá existiendo en el mapeo y en otros documentos del índice.

Método 2: Reindexación con una fuente modificada

Si deseas eliminar un campo de todos los documentos de una indexación, puedes usar la API de reindexación para crear una indexación nueva con la fuente modificada. Aquí te explicamos cómo hacerlo:

1. Crear un nuevo índice con los mismos ajustes y asignaciones que el índice original. Puedes usar la API Get Index para recuperar la configuración y mapeo del índice original.

2. Emplear la API Reindex para copiar documentos del índice original al nuevo índice, eliminando el campo del código fuente. El siguiente ejemplo demuestra cómo eliminar el campo "field_to_delete" de todos los documentos en el índice "my_index":


3. Verificar que el nuevo índice contiene los documentos correctos con el campo eliminado.

4. Si todo parece bien, puedes eliminar el índice original y, si es necesario, agregar un alias al nuevo índice con el nombre del índice original.

Método 3: Actualización del mapping y la reindexación

Si quieres eliminar un campo del mapeo y todos los documentos de un índice, puedes actualizar el mapeo y luego volver a indexar los documentos. Así es como se hace:

1. Crear un nuevo índice con la misma configuración que el índice original.

2. Recuperar los mapeos del índice original usando la API Get Mapping.

3. Modifica los mapeos eliminando el campo que quieres eliminar.

4. Aplicar los mapeos modificados al nuevo índice usando la API de Put Maping.

5. Emplear la API Reindex para copiar documentos del índice original al nuevo índice, como se describe en el Método 2.

6. Verificar que el nuevo índice contiene los documentos correctos sin eliminar el campo y que el campo no esté presente en el mapeo.

7. Si todo se ve bien, puedes eliminar la indexación original y, si es necesario, agregar un alias a la indexación nueva con el nombre de la original.

Conclusión

En este artículo, discutimos tres métodos para eliminar un campo de un documento en Elasticsearch: usar la API Update, reindexar con un código fuente modificado y actualizar el mapeo y el reindexado. Cada método tiene sus propios casos de uso y compromisos, así que elige el que mejor se adapte a tus necesidades. Recuerda siempre probar tus cambios y verificar los resultados antes de aplicarlos a entornos de producción.

Preguntas frecuentes

¿Qué es la API de actualización?

Una API que te permite actualizar un documento mediante un script que modifica el código fuente del documento, como establecer un campo en nulo o eliminarlo.

¿Qué es la API de reindexación?

Es una API que se utiliza para copiar documentos de una indexación original a una indexación nueva de destino que modifica el código fuente, como por ejemplo, eliminar un campo durante la transición.

¿Qué es el mapping?

Es la estructura definida de una indexación. Para eliminar completamente un campo de una indexación, debes modificar los mappings al eliminar el campo y luego reindexarlo.

¿Cuáles son las ventajas de eliminar campos en los documentos de Elasticsearch?

Eliminar campos en documentos de Elasticsearch es útil cuando quieres eliminar información innecesaria o desactualizada de tu indexación.

Contenido relacionado

¿Estás listo para crear experiencias de búsqueda de última generación?

No se logra una búsqueda suficientemente avanzada con los esfuerzos de uno. Elasticsearch está impulsado por científicos de datos, operaciones de ML, ingenieros y muchos más que son tan apasionados por la búsqueda como tú. Conectemos y trabajemos juntos para crear la experiencia mágica de búsqueda que te dará los resultados que deseas.

Pruébalo tú mismo