elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java 如何在elasticsearch批处理中使用BulkProcessor

Java 如何在elasticsearch批处理中使用BulkProcessor,java,elasticsearch,Java,elasticsearch,我需要使用Elasticsearch的bulkprocessor将一些批量数据插入Elasticsearch。 这是我从elastic.co得到的 import org.elasticsearch.action.bulk.BulkProcessor; BulkProcessor bulkProcessor = BulkProcessor.builder( client, new BulkProcessor.Listener() { @Override

我需要使用Elasticsearch的bulkprocessor将一些批量数据插入Elasticsearch。 这是我从elastic.co得到的

import org.elasticsearch.action.bulk.BulkProcessor;

BulkProcessor bulkProcessor = BulkProcessor.builder(
    client,  
    new BulkProcessor.Listener() {
        @Override
        public void beforeBulk(long executionId,
                               BulkRequest request) { } 

        @Override
        public void afterBulk(long executionId,
                              BulkRequest request,
                              BulkResponse response) { } 

        @Override
        public void afterBulk(long executionId,
                              BulkRequest request,
                              Throwable failure) { } 
    })
    .setBulkActions(10000) 
    .setBulkSize(new ByteSizeValue(1, ByteSizeUnit.GB)) 
    .setFlushInterval(TimeValue.timeValueSeconds(5)) 
    .setConcurrentRequests(1) 
    .build();

bulkProcessor.add(new IndexRequest("twitter", "tweet", "1").source("helloworld"));
bulkProcessor.add(new DeleteRequest("twitter", "tweet", "2"));

是否需要为所有批插入过程调用BulkProcessor.builder?这是使用bulkprocessor的正确方法吗?

我找到了答案。下面的代码就是这样做的

import static org.elasticsearch.common.xcontent.XContentFactory.*;

BulkRequestBuilder bulkRequest = client.prepareBulk();

// either use client#prepare, or use Requests# to directly build index/delete requests

bulkRequest.add(client.prepareIndex("twitter", "tweet", "1")
    .setSource(jsonBuilder()
                .startObject()
                    .field("user", "kimchy")
                    .field("postDate", new Date())
                    .field("message", "trying out Elasticsearch")
                .endObject()
              )
    );

bulkRequest.add(client.prepareIndex("twitter", "tweet", "2")
    .setSource(jsonBuilder()
                .startObject()
                    .field("user", "kimchy")
                    .field("postDate", new Date())
                    .field("message", "another post")
                .endObject()
              )
    );

BulkResponse bulkResponse = bulkRequest.execute().actionGet();
if (bulkResponse.hasFailures()) {
// process failures by iterating through each bulk response item
}