如何使用java删除Elasticsearch中文档的字段属性?

时间:2016-08-05 01:16:13

标签: elasticsearch

我在Elasticsearch中有一份文件:

  {
    "_index": "test",
    "_type": "document",
    "_id": "1",
    "_score": 1,
    "_source": {
        "class": "aaa",
        "id": 1,
        "items": [{
            "class": "aaa",
            "id": 1
        },{
            "class": "ccc",
            "id": 2
        }],
        "lastUpdated": "2016-07-22T11:26:56Z",
        "processInstance": {
            "class": "bbb"
        },
        "bianhao": "123"
    }
}

如何使用java删除id的{​​{1}}或class? 如何使用java删除items

我知道如何删除字段,使用:

{"class": "ccc","id": 2}

client.prepareUpdate("test", "document", "1") .setScript(new Script( "ctx._source.remove(\"bianhao\")", ScriptService.ScriptType.INLINE, null, null)) .get(); 的内容是json数组,我还没有找到方法。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

Map<String, Object> params = new HashMap<>();
params.put("classParam", "ccc");
params.put("idParam", 2);

client.prepareUpdate("test", "document", "1")
    .setScript(new Script(
            "ctx._source.items.removeAll{ it['class'] == classParam && it.id == idParam }",
            ScriptService.ScriptType.INLINE, null, params))
    .get();