Cómo Insertar un nuevo nodo en elástico anidada atributte

0

Pregunta

Describo un POC de mi problema. Tengo este índice de asignación:

{
    "properties": {
        "level_l": {
            "type": "nested",
            "properties": {
                "level_2-1": {
                    "type": "keyword"
                },
                "level_2-2":{
                    "type": "nested",
                    "properties": {
                        "level_3-1": {
                            "type": "keyword"
                        },
                        "level_3-2": {
                            "type": "keyword"
                        },
                        "level_3-3": {
                            "type": "keyword"
                        }
                    }
                }
            }
        }
    }
}

Y la adición de este documentos:

{
    "level_1": [
        {
            "level_2-1": "a",
            "level_2-2": [
                {
                    "level_3-1": "c1",
                    "level_3-2": "c2",
                    "level_3-3": "c3"
                }
            ]
        },
        {
            "level_2-1": "b",
            "level_2-2": [
                {
                    "level_3-1": "c1",
                    "level_3-2": "c2",
                    "level_3-3": "c3"
                }
            ]
        }
    ]
}

Necesito agregar un nuevo nodo en level_2-2, cuando level_2-1 = un. He probado usando como guía las notas de https://iridakos.com/programming/2019/05/02/add-update-delete-elasticsearch-nested-objects pero no he sido capaz.

Alguna idea?

1

Mejor respuesta

0

Como se muestra en el tutorial usted vinculada, usted necesitará el ID del objeto que se desea modificar. Tomando el ejemplo de lo que hay:

POST iridakos_nested_objects/human/1/_update
{
  "script": {
    "source": "ctx._source.cats.add(params.cat)",
    "params": {
      "cat": {
        "colors": 4,
        "name": "Leon",
        "breed": "Persian"
      }
    }
  }
}

En el ejemplo anterior, 1 es el ID del registro. Usted tendrá que reemplazarlo con el registro que desea modificar.

En caso de que quieras modificar todos los registros, usted necesitará utilizar el update_by_query de la API. La asignación de este ejemplo con el tutorial de arriba, verías como:

POST INDEX_NAME_HERE/_update_by_query
{
  "script": {
    "source": "ctx._source.cats.add(params.cat)",
    "params": {
      "cat": {
        "colors": 4,
        "name": "Leon",
        "breed": "Persian"
      }
    }
  },
  "query": {
    "match_all": {}
  }
}

En este caso, sería necesario actualizar la parte de la consulta (al final) para que coincida con todos los registros que desea actualizar. Supongo que probablemente desee consulta sobre el objeto anidado, aunque no es evidente a partir de su pregunta.

2021-11-22 13:11:25

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................