Comment Insérer un nouveau nœud élastique imbriquée atributte

0

La question

Je décris un POC de mon problème. J'ai cet indice de cartographie:

{
    "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"
                        }
                    }
                }
            }
        }
    }
}

Et en ajoutant ces documents:

{
    "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"
                }
            ]
        }
    ]
}

J'ai besoin d'ajouter un nouveau nœud dans level_2-2, lorsque level_2-1 = un. Je l'ai essayé en utilisant comme guide les notes de https://iridakos.com/programming/2019/05/02/add-update-delete-elasticsearch-nested-objects mais je n'ai pas pu.

Des idées?

1

La meilleure réponse

0

Comme indiqué dans le tutoriel vous vous êtes connecté, vous aurez besoin de l'ID de l'objet que vous souhaitez modifier. Prenant l'exemple à partir de là:

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

Dans l'exemple ci-dessus, 1 est l'ID de l'enregistrement. Vous aurez besoin de le remplacer avec de l'enregistrement que vous souhaitez modifier.

Dans le cas où vous souhaitez modifier tous les documents, vous aurez besoin d'utiliser la update_by_query API. La cartographie de cet exemple, le tutoriel ci-dessus, il avait l'air de:

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": {}
  }
}

Dans ce cas, vous auriez besoin de mettre à jour la requête de la partie (à la fin) pour correspondre à tous les enregistrements que vous souhaitez mettre à jour. Je suppose que vous auriez probablement comme pour une requête sur l'objet imbriqué, bien que sa n'apparaît pas dans votre question.

2021-11-22 13:11:25

Dans d'autres langues

Cette page est dans d'autres langues

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