首页 > 解决方案 > 如何从 Elastic Search 中的 json 字段中删除字段

问题描述

我想从成员中删除 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

解决方案


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

{
  "script":  "if(ctx._source.members.member2.id=='3') 
              ctx._source.members.remove('member2')"  
}

推荐阅读