小编Vin*_*nce的帖子

Spring数据elasticsearch批量索引和删除

我是社区的新手,所以如果我做错了,我会道歉.

我正在使用spring data elasticsearch(2.0.4/2.4)我想进行批量插入和删除.但是ElasticsearchTemplate只包含方法bulkInsert

@Override
public void bulkIndex(List<IndexQuery> queries) {
    BulkRequestBuilder bulkRequest = client.prepareBulk();
    for (IndexQuery query : queries) {
        bulkRequest.add(prepareIndex(query));
    }
    BulkResponse bulkResponse = bulkRequest.execute().actionGet();
    if (bulkResponse.hasFailures()) {
        Map<String, String> failedDocuments = new HashMap<String, String>();
        for (BulkItemResponse item : bulkResponse.getItems()) {
            if (item.isFailed())
                failedDocuments.put(item.getId(), item.getFailureMessage());
        }
        throw new ElasticsearchException(
                "Bulk indexing has failures. Use ElasticsearchException.getFailedDocuments() for detailed messages ["
                        + failedDocuments + "]", failedDocuments
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我创建了一个批处理方法来处理这两个方法,但是我无法访问私有的方法prepareIndex.

您是否知道在一个批量索引和删除文档中的任何解决方案?或者我应该使用反射来改变prepareIndex方法的可见性?或者从模型/ pojo创建indexRequest的任何简单方法?

java spring elasticsearch spring-data-elasticsearch

6
推荐指数
1
解决办法
2099
查看次数