2017-02-20 28 views
1

Я пытаюсь оптимизировать скорость индексирования в ElasticSearch, так как мы постоянно переиндексируем индексы каждый час, и тем быстрее мы можем переиндексировать наши данные, тем меньше отставания мы можем достичь.Возможно проиндексировать 1M docs/sec в ElasticSearch?

Я столкнулся с этой статьей, в которой говорится о достижении переиндексации пропускной способности 100K: https://thoughts.t37.net/how-we-reindexed-36-billions-documents-in-5-days-within-the-same-elasticsearch-cluster-cd9c054d1db8#.4w3kl9ebf, и этот вопрос StackOverflow, который достигает более высокого уровня: ElasticSearch - high indexing throughput.

Вопрос в том, можно ли обеспечить устойчивую пропускную способность индексации в 1 миллион документов в секунду, и если да, то как?

ответ

1

Это будет зависеть от нескольких факторов, но почему это невозможно? Вот несколько ключевых факторов, которые будут ускорить процесс индексации:

  • размера документов (меньше быстрее)
  • количества ядер и размера памяти (чем больше, тем быстрее)
  • числа машины (чем больше, тем быстрее)
  • количества копий (меньше быстрее)

в качестве примера, с небольшими документами и один восемь основной машиной, я была в состоянии index at about 70k-120k docs/s. Бросьте еще несколько ядер или машин, и вы можете обратиться к 1M docs/s.


Update: Еще один тестовый прогон с Elasticsearch 6.1.0, на одном 32-ядре E5, с 64G JVM кучи. Здесь esbulk может индексировать около 330000 документов/с, используя 10M небольшие документы размером 20-40 байт.


Отказ от ответственности: Я написал esbulk.