怎么插入新的节点在弹嵌套atributte

0

的问题

我描述一POC我的问题。 我有这个指数映射:

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

并加入这一文件:

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

我需要添加新的节点在 level_2-2,当 level_2-1=. 我已经尝试过使用作为指导的笔记 https://iridakos.com/programming/2019/05/02/add-update-delete-elasticsearch-nested-objects 但我没有能。

任何想法?

1

最好的答案

0

如在教 你挂,你会需要的对象,你会喜欢修改。 如果例如有:

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

在上述例子中, 1个 是身份证的记录。 你就需要更换的记录你希望修改。

如果你想要修改的所有记录,则需要使用 update_by_query API. 映这个实例教程上就是这样的:

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

在这种情况下,你就需要更新的查询部分(在结束)相匹配的所有记录你想到更新。 我猜你可能想要 查询的嵌套的对象,虽然它不清楚从你的问题。

2021-11-22 13:11:25

其他语言

此页面有其他语言版本

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