2016-08-21 21 views
1

インデックス内のドキュメントの挿入/更新/削除に、BulkProcessor of Elasticsearch Java APIを使用しています。 後のメソッドの挿入に適していますし、Elasticsearch Java API - bulkProcessorを使用したドキュメントの部分的な更新

bulkProcessor.add(indexRequest(index).type(type).id(id).source(document)) 
bulkProcessor.add(deleteRequest(index).type(type).id(id)); 

indexRequestインデックスに部分文書を更新するために使用することでした削除されます。 elasticsearchインデックス内 言って、私は

{ 
    "_id": "abcdefghijk", 
    "id": "1", 
    "title": "Harry Potter", 
    "description": "Description for Harry Potter", 
    "price": 10, 
    "category": "Book" 
} 

は、文書の更新のみの価格属性にそれが可能です文書を持っている、私はindexRequestを使用して{"price":15}に価格を変更する場合、またはAPI

答えて

0

のいずれかの他の方法と言います次のコードは問題を解決します。

final BulkRequestBuilder bulkRequest = esClient.prepareBulk(); 

    //start loop for multiple products 

    final XContentBuilder contentBuilder = XContentFactory.jsonBuilder(); 
    try { 

     contentBuilder.startObject(); 
     contentBuilder.field("price", 20); 
     contentBuilder.endObject(); 

    } catch (final IOException ex) { 
     ex.printStackTrace(); 
    } 
    bulkRequest.add(esClient.prepareUpdate(index, type,_id).setDetectNoop(false) 
      .setDoc(contentBuilder)); 
    //end loop 

    BulkResponse bulkResponse = bulkRequest.execute().actionGet(); 
+0

これはbulkRequestですが、bulkProcessorではindexRequestを使用できません – Deepak

関連する問題