must - elasticsearch nested query
Tipo anidado en Elasticsearch: "la asignación de objetos no se puede cambiar de anidada a no anidada" al indexar un documento (1)
Parece que realmente está creando un documento de tipo some_type
y los comments
se establecerán de manera predeterminada en un object
normal (es decir, no nested
), lo cual no está permitido ya que ya tiene un objeto anidado llamado comments
en el tipo de asignación blogpost
en el mismo índice.
Intenta esto en su lugar y debería funcionar:
PUT /my_index/blogpost/1
{
"title": "some_title",
"comments": {
"name": "some_name",
"comment": "some_comment"
}
}
Intento indexar algunos documentos anidados en un mapeo de Elasticsearch (v2.3.1) que tiene el siguiente aspecto (basado en este ejemplo de la documentación) :
PUT /my_index
{
"mappings": {
"blogpost": {
"properties": {
"title": { "type": "string" },
"comments": {
"type": "nested",
"properties": {
"name": { "type": "string" },
"comment": { "type": "string" }
}
}
}
}
}
}
Sin embargo, no entiendo cómo deben ser mis documentos JSON para encajar en esa asignación. Lo intenté con
PUT /my_index/some_type/1
{
"title": "some_title",
"comments": {
"name": "some_name",
"comment": "some_comment"
}
}
así como con
PUT /my_index_some_type/1
{
"title": "some_title",
"comments": [
{
"name": "some_name",
"comment": "some_comment"
}
]
}
que ambos resultan en
{
"error":
{
"root_cause":
[
{
"type": "remote_transport_exception",
"reason": "[Caiman][172.18.0.4:9300][indices:data/write/index[p]]"
}
],
"type": "illegal_argument_exception",
"reason": "object mapping [comments] can''t be changed from nested to non-nested"
},
"status": 400
}
¿Cuál es el formato correcto para indexar documentos anidados? Cualquier ejemplo práctico es muy apreciado, la mayoría de los ejemplos aquí en SO o en otras páginas se concentran en consultas anidadas en lugar de cómo se han indexado los documentos anteriormente.