如何在Elastic Search中从json字段中删除字段

问题描述 投票:0回答:2

我想从成员中删除member2。我看到了脚本

ctx._source.list_data.removeIf{list_item -> list_item.list_id == remove_id}

对于列表,但在我的情况下,它不起作用。那可能吗?

 "_index": "test",
    "_type": "test",
    "_id": "5",
    "_score": 1.0,
    "_source": {
      "id": "1",
      "description": "desc",
      "name": "ss",
      "members": {
        "member1": {
          "id": "2",
          "role": "owner"
        },
        "member2": {
          "role": "owner",
          "id": "3"
        }
      }
    }
  }
elasticsearch
2个回答
1
投票

您可以使用更新API:

POST test/_update/5
{
  "script": "ctx._source.members.remove('member2')"
}

1
投票

removeIf用于列表。您的members2是对象类型,因此您需要使用remove

{
  "script":  "if(ctx._source.members.member2.id=='3') 
              ctx._source.members.remove('member2')"  
}
© www.soinside.com 2019 - 2024. All rights reserved.