2016-08-05 3 views
0

私はElasticsearchでドキュメントをHAVA:?どのようにJavaを使用して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またはitemsclassを削除するには? 削除するには{"class": "ccc","id": 2} javaを使用していますか?

私が使用して、フィールドを削除する方法を知っている:

client.prepareUpdate("test", "document", "1") 
     .setScript(new Script(
       "ctx._source.remove(\"bianhao\")", 
       ScriptService.ScriptType.INLINE, null, null)) 
     .get(); 

itemsの内容はJSON配列ですが、私は方法を見つけていません。

答えて

1

あなたはこのようにそれを達成することができます: `でReplaceAll()`メソッドは

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(); 
+0

ありますか? –

+0

あなたは何をしたいですか? – Val

+0

変更 '{" class ":" ccc "、" id ":2}'から '{" class ":" ccc12 "、" id ":2}' –

関連する問題