У меня есть новая база данных из 2 миллионов записей (около 3 ГБ при сбросе json), создаваемых каждые несколько дней. Я хочу быстро поместить его в ElasticSearch.
Вот что я сейчас делаю:
refresh_interval
к -1
.bulk
index api batch after batch (разумеется, ожидая возврата результатов перед отправкой следующего пакета). Я также пробовал делать это одновременно, по 3-5 пакетов одновременно.После обработки ~ 10% документов массовый API ElasticSearch время от времени запускает тайм-аут (тайм-аут запроса составляет 30 секунд). Я добавил повторные попытки, но ближе к 30-40% некоторые партии начинают давать сбой примерно 10 раз подряд.
Я пробовал манипулировать разными числами. С меньшими партиями это слишком медленно. С большими партиями / параллелизмом он просто терпит неудачу быстрее.
Запросы отправляются с того же компьютера, на котором находится ElasticSearch. У меня много памяти:
$ free -g
total used free shared buffers cached
Mem: 31 24 6 0 0 8
-/+ buffers/cache: 15 15
Swap: 15 6 9
В то время на сервере больше ничего не происходит.
Итак, что я могу делать не так? Я пытался найти единственный верный способ индексировать множество документов, но не нашел.