是否可以使用org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate删除索引?

时间:2020-01-28 09:41:14

标签: elasticsearch spring-data-elasticsearch

Elasticsearch Spring Data的org.springframework.data.elasticsearch.core.ElasticsearchTemplate的非反应性对等方提供了一种方法public boolean deleteIndex(String indexName),我可以使用该方法删除索引。但是,在ReactiveElasticsearchTemplate中找不到类似功能的任何提示。

1 个答案:

答案 0 :(得分:1)

由{p>创建的DefaultReactiveElasticsearchClient

ReactiveRestClients.create(ClientConfiguration clientConfiguration)

实现接口org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient.Indices,该接口有两种删除索引的方法:

    default Mono<Void> deleteIndex(DeleteIndexRequest deleteIndexRequest) {
        return deleteIndex(HttpHeaders.EMPTY, deleteIndexRequest);
    }

    default Mono<Void> deleteIndex(Consumer<DeleteIndexRequest> consumer) {
        DeleteIndexRequest request = new DeleteIndexRequest();
        consumer.accept(request);
        return deleteIndex(request);
    }

    default Mono<Void> deleteIndex(DeleteIndexRequest deleteIndexRequest) {
        return deleteIndex(HttpHeaders.EMPTY, deleteIndexRequest);
    }

因此,没有什么可直接传递索引名的,但是DeleteIndexRequest的构造函数只接受索引名。

((DefaultReactiveElasticsearchClient)client).deleteIndex(new DeleteIndexRequest(indexname)).

因此,目前这种转换很丑陋,但是可以做到。我们有a ticket可以在Operations界面和实现中添加此功能。