¿Cómo cambio el tipo de campo en elasticsearch??

¿Cómo cambio el tipo de campo en elasticsearch??
Usando la API de mapeo _, puede actualizar los campos existentes o agregar nuevos campos a un índice existente.

NOTA: Para realizar cambios en un índice, asegúrese de tener los privilegios de administración en el índice de destino.

Uso básico

Para modificar un tipo de campo, envíe una solicitud de poner a la API _mapping seguida del cuerpo de solicitud. El cuerpo de la solicitud incluye el parámetro de propiedades y la asignación del campo de destino. Al crear un nuevo campo, asegúrese de incluir el nombre del campo, el tipo y los parámetros de mapeo.

Por ejemplo, la siguiente solicitud cambia el tipo de campo de entero a largo.

Poner /my-index /_mapping

"propiedades":
"precio base":
"Tipo": "largo"


Al finalizar con éxito, debería ver una salida como:


"Reconocido": Verdadero

Método de reintegración

En la mayoría de los casos, ElasticSearch le impedirá actualizar el tipo de campo de un índice existente. Hacerlo podría hacer que los datos actuales se vuelvan inválidos y causen errores en el índice.

Si aún desea actualizar el tipo de campo existente, puede hacerlo en algunos pasos simples.

  1. Cree un nuevo índice con la información de mapeo correcta donde se cambia el tipo de campo a su tipo deseado.
  2. Vuelva a iniciar los datos de su antiguo índice al nuevo índice.
  3. Eliminar el índice antiguo

El uso de este método le permite reducir el tiempo de inactividad mínimo para su índice.

Creando un viejo índice

Comencemos creando un índice con el tipo de campo incorrecto.

Poner /cambiar

"Mapeos":
"propiedades":
"identificación":
"Tipo": "Integer"
,
"nombre de usuario":
"teclee el texto"



En el ejemplo anterior, tenemos un índice simple con los dos campos: ID y nombre de usuario. Los tipos de campo son enteros y texto, respectivamente.

Supongamos que el campo contiene datos como se muestra en la siguiente consulta:

Post /cambio-me /_doc


"ID": 1000,
"nombre de usuario": "root"

Post /cambio-me /_doc

"ID": 1001,
"Nombre de usuario": "Otro"

Las dos consultas anteriores crearán un documento con los datos según lo dispuesto en el cuerpo de solicitudes.

Asegúrese de que exista los datos:

Get /Change-Me /_Search?bonito

"consulta":
"Match_all":

Deberíamos ver los dos registros como se muestra:

Crear un nuevo índice

Digamos que queremos cambiar el campo de identificación de un entero a una palabra clave. Comenzaremos creando un nuevo índice con el tipo como palabras clave.

Poner /cambiar me-reindex

"Mapeos":
"propiedades":
"identificación":
"Tipo": "Palabra clave"
,
"nombre de usuario":
"teclee el texto"



En la solicitud anterior, creamos un nuevo índice y establecemos el tipo de identificación en una palabra clave.

Reindexa los datos antiguos

El siguiente paso es volver a indicar los datos del índice anterior al nuevo utilizando la API de reintegración _. La solicitud de eso está a continuación:

Post /_reindex

"fuente":
"índice": "cambio-yo"
,
"Dest":
"índice": "cambio-me-reindex"

La solicitud anterior copiará los documentos del índice anterior al nuevo donde el tipo de campo cambia de un entero a una palabra clave.

Salida de la consulta anterior:


"Tomado": 8,
"Timed_out": falso,
"Total": 4,
"Actualizado": 0,
"Creado": 4,
"Eliminado": 0,
"Lotes": 1,
"versión_conflicts": 0,
"Noops": 0,
"reintentos":
"Bulk": 0,
"Buscar": 0
,
"Throttled_millis": 0,
"requests_per_second": -1.0,
"Throttled_Util_millis": 0,
"Fallos": []

Eliminar el antiguo índice

Ahora que tenemos un índice actualizado con la asignación correcta, es hora de eliminar el índice anterior. Podemos hacer esto enviando una solicitud de eliminación al índice como:

Eliminar /cambiar

Tras la extracción exitosa, debería ver una salida como:


"Reconocido": Verdadero

Crear alias de índice

Si tuviera aplicaciones utilizando el índice anterior, podrían dejar de funcionar ya que ya no existe.

Podemos resolver esto creando un alias para el nuevo índice con el nombre del antiguo índice.

Poner/cambio-me-reindex/_alias/cambio-me

La solicitud anterior debe crear un alias para el nuevo índice.

Conclusión

En esta guía, descubrió cómo cambiar el tipo de campo existente en un índice de ElasticSearch.