弹簧数据弹性搜索批量索引和删除

我是社区的新手,所以如果我做错了什么,我很抱歉。

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

@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
        );
    }
}

因此,我创建了一个批量方法来处理这两种方法,但我无法访问私有方法prepIndex。

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


答案 1

不确定您指的是哪个版本

(2.0.4/2.4)

目前没有批量删除的可能性。并且没有在一个请求中组合不同的操作(如索引/更新)。

您能否在 Jira 中提交问题以添加对批量删除的支持,并有可能在一次调用中执行不同的操作?虽然这不会进入下一个版本,但恐怕。


答案 2

推荐