Поэтому я хочу переписать код с помощью ElasticSearch Java Api Client в моем весеннем проекте.
Большинство функций модифицируются правильно, но я не нашел подходящего способа изменить эту функцию.
Ниже приведен мой существующий код.
Код: Выделить всё
// import org.elasticsearch.index.reindex.DeleteByQueryRequest;
private String deleteLarge(String indexName, Long categoryNumber, Optional age) {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
.filter(QueryBuilders.matchQuery("category", categoryNumber));
age.ifPresent(a -> boolQueryBuilder
.filter(QueryBuilders.matchQuery("age", a)));
DeleteByQueryRequest request = new DeleteByQueryRequest(indexName)
.setQuery(boolQueryBuilder)
.setSlices(10);
try {
TaskSubmissionResponse taskSubmissionResponse = restHighLevelClient.submitDeleteByQueryTask(request, RequestOptions.DEFAULT);
logger.info("DeleteByQueryTask task id: {}", taskSubmissionResponse.getTask());
return taskSubmissionResponse.getTask();
} catch (Exception e) {
logger.error(e.getMessage());
}
return null;
}
Однако, похоже, клиент ElasticSearch Java API не имеет такой функции. В официальной документации есть такой класс, как ElasticsearchTasksClient, который предоставляет возможность получать информацию или отменять задачу, но не отправлять новые задачи.
Вот мои вопросы:
- ES больше не поддерживает задачи? Постепенно ли он устаревает?
- Если нет, есть ли другой способ отправки новых задач?
- Если он действительно недоступен, существует ли другой способ для достижения аналогичной функциональности? Будет ли использование deleteByQuery в ElasticsearchAsyncClient эквивалентом отправки задачи?
Подробнее здесь: https://stackoverflow.com/questions/793 ... api-client
Мобильная версия