Ako Vložiť nový uzol v elastické vnorené atributte

0

Otázka

Popisujem POC môj problém. Ja mám tento index mapovanie:

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

A pridanie tejto dokumenty:

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

Potrebujem pridať nový uzol v level_2-2, keď level_2-1 = a. Snažil som sa ju používať ako sprievodca poznámky zo https://iridakos.com/programming/2019/05/02/add-update-delete-elasticsearch-nested-objects ale nebol som schopný.

Nejaké nápady?

1

Najlepšiu odpoveď

0

Ako je uvedené v tutoriále si prepojené, budete potrebovať ID objektu, ktorý chcete upraviť. Použijeme príklad z tam:

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

Vo vyššie uvedenom príklade 1 je IDENTIFIKÁTOR záznamu. Musíte ho nahradiť záznam, ktorú chcete upraviť.

V prípade, že chcete upraviť všetky záznamy, budete musieť použiť update_by_query API. Mapovanie tomto príklade návod vyššie, to by vyzerať takto:

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

V tomto prípade by ste potrebovať aktualizáciu časť dotazu (na konci), aby zodpovedali všetky záznamy, ktoré chcete aktualizovať. Myslím, že by ste pravdepodobne chceli dotaz na vnorených objektov, hoci to nie je zrejmé z vašej otázke.

2021-11-22 13:11:25

V iných jazykoch

Táto stránka je v iných jazykoch

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