2013-09-04 3 views
0

Я мой индексировать распределенное клиентом: 1 клиент < -> 1 осколокElasticSearch: удалить осколок

Когда клиент будет удален Я хочу, чтобы удалить весь осколок, связанные с соответствующими клиентами и будет отлично, если я могу это сделать repdily. Можно ли удалить весь осколок напрямую? Существуют ли какие-либо альтернативы для удаления большого количества данных из elasticsearch?

+0

Как вы достигли такого распределения? (1 клиент = 1 осколок) ES не позволяет изменять количество осколков после создания индекса. Вы можете удалить документы, но осколки останутся там. – shyos

+0

Thats true, как сказал @shyos. Вы можете удалить документы, но осколки останутся там. Пожалуйста, обратитесь к моему ответу ниже для решения. И я думаю, что OP использовал маршрутизацию с псевдонимами. Но даже при этом все, что вы можете сделать, это документы из псевдонима в одном осколке. Это не означает 1 клиент = 1 осколок. Не уверен, как он достиг этого ... –

ответ

1

У клиента может быть что-то общее с идентификатором или что-то в этом роде ... Вы можете использовать delete by query api, чтобы сделать то же самое на основе критериев id.

Пожалуйста, обратите внимание на следующую ссылку:

https://www.elastic.co/guide/en/elasticsearch/reference/0.90/docs-delete-by-query.html

С помощью этого вы можете удалить все документы, которые имеет общий идентификатор (в вашем случае это может быть идентификатор клиента) в индексе.

Я надеюсь, что идентификатор также проиндексирован.

+0

Получил это уже. Исключение по запросу работает очень хорошо, даже для большого количества данных. – odiszapc

+0

Ссылка не работает. – kjw0188

+1

Изменен. Спасибо за введение @ kjw0188 –

Смежные вопросы