Маршрутизация Elasticsearch shard vs manual shard, зачем мне использовать маршрутизацию? - PullRequest
0 голосов
/ 18 октября 2019

У меня есть БД с предложениями номеров в отеле, один документ на комбинацию отеля, дня и номера.

Я использую индекс в месяц, вроде offers_201910, так что индексы для старых месяцев могут быть сброшены позже, и я хотел бы, чтобы все предложения, касающиеся одного и того же отеля, были в одном и том же шарде, так как оничасто собираются вместе. Кроме того, таким образом, в случае отказа осколка, я просто не получаю неправильные результаты об отелях там, я просто не получаю результаты о них вообще.

У меня есть два варианта, когда я думаю о шардинге:

Elasticsearch sharding

Во время индексации я могу предоставить routing=<hotel_id>, поэтому предложения о том же отеле группируются в один и тот же шард. Во время запроса я просто запрашиваю отель, и ES делает волшебство, чтобы найти их. Проблема в том, что я не могу изменить счетчик осколков позже.

Ручной шардинг

Я могу создать множество индексов для одного месяца с буквой в конце,это был бы мой созданный вручную осколок. Например: offers_201910a, offers_201910b, offers_201910c и так далее. Затем, во время запроса, я указываю, что я хочу сделать запрос по шаблону индекса offers_201910*, и он должен работать AFAIK. Преимущество состоит в том, что я могу добавить больше этих ручных осколков и заставить новые отели использовать их вместо прежних.


В соответствии с 'Elasticsearch окончательное руководство', это то же самое, что запрос индекса с 50 шардами, что 50 индексов с 1 шардом каждый.

Что-то не так с руководствомподход шардинга? Имеет ли это смысл?

...