Spring Data Elasticsearch 批量索引和删除

14

我是新来的社区成员,如果我做错了什么,请原谅。

我正在使用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?

1个回答

0

不确定您指的是哪些版本

(2.0.4/2.4)

目前无法进行批量删除操作。也不能在一个请求中组合不同的操作,比如索引/更新。

你能否在Jira中提交一个问题,以添加对批量删除的支持和在一次调用中执行不同的操作的可能性?尽管恐怕这不会包含在下一个版本中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接