Elasticsearch Java API - 使用BulkProcessor部分更新文档
问题描述:
我正在使用Elasticsearch Java API的BulkProcessor来插入/更新/删除索引中的文档。 按照方法可以很好地用于插入和删除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
或与API的任何其他方法来改变价格{"price":15}
答
以下代码将解决问题。
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();
这是bulkRequest,但我认为它不可能使用bulkProcessor使用indexRequest – Deepak