Можно ли удалить индекс с помощью org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate? - PullRequest
0 голосов
/ 28 января 2020

Неактивный аналог Elasticsearch Spring Data's org.springframework.data.elasticsearch.core.ElasticsearchTemplate предоставляет метод public boolean deleteIndex(String indexName), который я могу использовать для удаления индексов. Тем не менее, я не могу найти никаких подсказок аналогичной функциональности в ReactiveElasticsearchTemplate.

1 Ответ

1 голос
/ 29 января 2020

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)).

Так что в настоящее время это уродливо с этим приведением, но это можно сделать. У нас есть билет , чтобы добавить эту функциональность в интерфейс и реализации Operations.

...