Я пытаюсь загрузить большое количество документов - около 7 миллионов.
Я создал действия для каждого документа, который нужно добавить, и разделил их на около 260 файлов, по 30 тысяч документов каждый.
Вот формат действий:
a = someDocument with nesting
esActionFromFile = [{
'_index': 'mt-interval-test-9',
'_type': 'doc',
'_id': 5641254,
'_source': a,
'_op_type': 'create'}]
Я пытался использовать helpers.bulk, helpers.parallel_bulk и helpers.streaming_bulk и добился частичного успеха с использованием helpers.bulk и helpers.streaming_bulk.
Каждый раз, когда я запускаю тест, я удаляю, а затем воссоздаю индекс, используя:
# Refresh Index
es.indices.delete(index=index, ignore=[400, 404])
es.indices.create(index = index, body = mappings_request_body)
Когда я частично добился успеха - много документов загружено, но в итоге я получаю ошибку конфликта версии 409.
Мне известно, что могут возникать конфликты версий, когда у ES недостаточно времени для обработки удаления отдельных документов после выполнения удаления по запросу.
Сначала я подумал, что здесь происходит нечто подобное. Однако я понял, что часто получаю ошибки из файлов при первой их обработке (т. Е. Даже если удаление вызывало проблемы, этот конкретный файл никогда не загружался, поэтому не мог быть конфликтом).
Используемое мной значение _id является первичным ключом из исходной базы данных , из которой я извлекаю данные - поэтому Я уверен, что они уникальны . Кроме того, я проверил, было ли непреднамеренное дублирование записей в моих массивах действий или файлы, из которых я их создал, и нет дубликатов .
Я затрудняюсь объяснить, почему это происходит, и изо всех сил пытаюсь найти решение для загрузки моих данных.
Любая помощь будет принята с благодарностью!