indexing - type - Crear o actualizar la asignación en elasticsearch
nested elasticsearch (2)
En términos generales, puede actualizar su mapeo de índice usando la api de mapeo puesto (referencia here ):
curl -XPUT ''http://localhost:9200/advert_index/_mapping/advert_type'' -d ''
{
"advert_type" : {
"properties" : {
//your new mapping properties
}
}
}
''
Es especialmente útil para agregar nuevos campos. Sin embargo, en su caso, intentará cambiar el tipo de ubicación, lo que provocará un conflicto y evitará que se use la nueva asignación.
Puede usar la API de asignación de puestos para agregar otra propiedad que contenga la ubicación como una matriz lat / lon, pero no podrá actualizar el campo de ubicación anterior.
Finalmente, tendrá que reindexar sus datos para que se tenga en cuenta su nueva asignación.
La mejor solución sería crear un nuevo índice .
Si su problema con la creación de otro índice es el tiempo de inactividad, debe echar un vistazo a los aliases para que las cosas funcionen sin problemas.
Soy nuevo en Elasticsearch y actualmente estoy trabajando para implementar un filtro de geo_distance
para buscar. A partir de ahora, mi índice tiene la siguiente asignación (eliminé algunos campos):
{
advert_index: {
mappings: {
advert_type: {
properties: {
__v: {
type: "long"
},
caption: {
type: "string"
},
category: {
type: "string"
},
**location: {
type: "long"
},**
}
}
}
}
El campo geo_distance se implementará en el campo de ubicación, donde una instancia de ejemplo se ve así:
"location": [
71,
60
],
Es decir, está en formato geoJSON [lon, lat]
.
Entiendo que tendré que actualizar mi índice para que el campo de ubicación sea de tipo geo_point
, como se describe en la documentación ( mapping-geo-point ). Parece que tengo que soltar el índice y crear uno nuevo, pero no puedo hacerlo.
¿Estoy en el camino correcto? Le agradecería enormemente si alguien pudiera ayudarme con cómo podría crear un nuevo índice o actualizar uno existente con el tipo de datos correcto.
¡Muchas gracias!
Tenga en cuenta que hay un error en la url proporcionada en esta respuesta:
Para una solicitud de asignación PUT: la url debe ser la siguiente:
http://localhost:9200/name_of_index/_mappings/document_type
y no