type query must elasticsearch nested mapping

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.