Индексирование 10 миллионов документов с помощью Elasticsearch

Я пытаюсь проиндексировать 10 миллионов документов в свой индекс Elasticsearch, используя API Elastica. Я запускаю свой скрипт на сервере Ubuntu с 16 ГБ ОЗУ и 8 ядрами.

Пока я не могу проиндексировать более 250 000 документов. Мой скрипт ломается и возвращает неизвестную ошибку.

Может ли кто-нибудь описать мне, как обеспечить индексацию такого объема данных?

Я нашел вопрос, похожий на мой здесь, но ответы не кажутся мне очень ясными.

ИЗМЕНИТЬ:

Я запустил индексный скрипт, который Nate предложил здесь, и я получил следующий вывод:

close index
{
 "acknowledged" : true
}
refresh rate
{
 "acknowledged" : true
}
merge policy
{
 "acknowledged" : true
}
replicas
{
 "acknowledged" : true
}
flush
{
 "acknowledged" : true
}
buffer
{
 "acknowledged" : true
}
{
 "acknowledged" : true
}

PS: я немного изменил сценарий для большей наглядности вывода

EDIT 2: я переключился с Elastica на использование elasticsearch-jdbc- river, и теперь он индексирует около 5 миллионов, но все еще не всю базу данных.

Вот файл json для реки, а файл сценария для размещения его в Elasticsearch: здесь.


person eliasah    schedule 23.04.2014    source источник
comment
Вопрос, который ваша ссылка больше основан на производительности, вы, кажется, столкнулись с исключением. Убедитесь, что ведение журнала включено, и зафиксируйте трассировку стека, предшествовавшую возникновению ошибки.   -  person Nathan Smith    schedule 23.04.2014
comment
Как я могу это сделать? На самом деле я борюсь как с производительностью, так и с этим исключением   -  person eliasah    schedule 23.04.2014
comment
Запустите сценарии, упомянутые в этом ответе - stackoverflow.com/a/22763203/1218285   -  person Nathan Smith    schedule 24.04.2014
comment
Что касается журналов, перейдите к своей установке и найдите каталог журналов. Найдите соответствующий журнал для нужной вам даты, [ClusterName].log.[Date] — это формат, который вам следует искать. Обновите свой вопрос с помощью трассировки стека во время   -  person Nathan Smith    schedule 24.04.2014
comment
Обновление никому не поможет решить вашу проблему, почему вы можете индексировать только определенное количество документов, это просто подтверждение от Elasticsearch относительно операций, которые вы выполняете. Пожалуйста, найдите журналы, которые я отметил выше, и обновите свой вопрос.   -  person Nathan Smith    schedule 24.04.2014
comment
Можете ли вы включить это в свой ответ?   -  person Michael at qbox.io    schedule 25.04.2014
comment
Я настроил режим DEBUG в logging.yml и path.log, чтобы я мог получать данные журнала, но он ничего не записывает в него. Я также пытаюсь увидеть, что происходит с режимом поиска elasticsearch console, и все равно ничего. Я даже не вижу, что он индексирует.   -  person eliasah    schedule 25.04.2014
comment
Я также добавил некоторый журнал исключений из сценария, который я запускаю, и я получил следующее: Indexer/vendor/ruflin/elastica/lib/Elastica/Transport/Http.php : Operation timed out   -  person eliasah    schedule 25.04.2014
comment
ссылки не работают   -  person Kashif Saleem    schedule 20.04.2021


Ответы (1)


Я давно решил этот вопрос, но забыл написать ответ.

Я рассмотрел второе решение, применяющее elasticsearch-jdbc-river, которое устарело с этого момента, когда я пишу ответ.

Тем не менее, проблема с рекой тогда заключалась в рассмотрении параметра query_timeout по умолчанию, который по умолчанию кажется недостаточным, учитывая большой SQL-запрос, который я использовал. Опция убила процесс по истечении query_timeout.

Я увеличил значение query_timeout, и это решило мою проблему.

person eliasah    schedule 03.09.2015