Я хотел узнать больше об эластичном удалении, это высокоуровневый API удаления Java и возможность массового удаления.
Ниже приведена информация о конфигурации
- Ява: 8
- Эластичная версия: 7.1.1
Добавлены эластичные зависимости:
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.1.1</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.1.1</version> </dependency>
В моем случае ежедневно в индекс dev-answer
добавляется около 10 тысяч записей. Я хочу инициировать операцию удаления (это можно запускать ежедневно, или раз в неделю, или раз в месяц), которая в основном удалит все документы сверху index
, если выполняется определенное условие. (Который я дам в DeleteByQueryRequest
)
Для удаления существует API, указанный в последней версии doc, на который я ссылаюсь.
DeleteByQueryRequest request = new DeleteByQueryRequest("source1", "source2");
При чтении документации я столкнулся со следующими запросами, которые я не могу понять.
Как в документе:
It’s also possible to limit the number of processed documents by setting size. request.setSize(10);
Что означает обработанный документ? Будет ли удалено только 10 документов?Какой размер партии я должен установить?
request.setBatchSize(100);
его производительность зависит от того, сколько документов мы собираемся удалить?Должен ли я сначала позвонить
get no of documents
и на основании этогоsetBatchSize
следует изменить?request.setSlices(2);
Срезы должны зависеть от того, сколько ядер у машины-исполнителя или от количества ядер в эластичном кластере?В документации указан метод
setSlices(2)
, который я не могу найти в классеorg.elasticsearch.index.reindex.DeleteByQueryRequest
. Что мне здесь не хватает?Давайте рассмотрим, выполняю ли я этот запрос на удаление в асинхронном режиме, который занимает 0,5-1,0 секунды, между тем, если я делаю запрос на получение этого индекса, выдаст ли это какое-то исключение? Также в то же время, если я вставлю новый документ и извлеку его, сможет ли он дать ответ?
_delete_by_query
, а не о конечной точке_bulk
? Если вы спрашиваете о конечной точке_delete_by_query
, можете ли вы переименовать вопрос, чтобы избежать недоразумений, потому что_bulk
также позволяет удалять документы. - person Pierre-Nicolas Mougel   schedule 05.07.2019public final void deleteByQueryAsync(DeleteByQueryRequest deleteByQueryRequest, RequestOptions options, ActionListener<BulkByScrollResponse> listener)
from classorg.elasticsearch.client.RestHighLevelClient
. Итак, он собирается сделать массовый запрос или удалить по запросу? Также в случае удаления более 10 КБ в очень немногих случаях близко к 1 КБ записей, что будет хорошо?delete_by_query
или_bulk
? - person AshwinK   schedule 05.07.2019deleteByQuery
, которая возвращаетBulkByScrollResponse
, поэтому возникает путаница, где это_bulk
удалить илиdelete_by_query
- person AshwinK   schedule 05.07.2019_delete_by_query
будет внутренне выполнятьbulk
запросы для эффективного удаления документов, но это определенно разные конечные точки. - person Pierre-Nicolas Mougel   schedule 05.07.2019delete_by_query
вместоdelete
в заголовке, чтобы избежать путаницы и помочь другим пользователям найти этот вопрос?delete
также является еще одной конечной точкой. Пишу полный ответ на ваш вопрос. - person Pierre-Nicolas Mougel   schedule 05.07.2019