【发布时间】:2017-10-28 20:07:41
【问题描述】:
我是社区的新手,所以如果我做错了什么,我深表歉意。
我正在使用 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
);
}
}
所以我创建了一个批量方法来处理两者,但我无法访问私有方法 prepareIndex。
您是否知道批量索引和删除文档的任何解决方案,或者我应该使用反射来更改 prepareIndex 方法的可见性 或者有什么简单的方法可以从模型/POJO 创建 indexRequest?
【问题讨论】:
标签: java spring elasticsearch spring-data-elasticsearch