Размеры магазина Elasticsearch reindex сильно различаются - PullRequest
0 голосов
/ 04 сентября 2018

Я использую Elasticsearch 6.2.4. У меня есть программа, которая автоматически создаст для меня индекс, а также сопоставления, необходимые для моих данных. Для этой проблемы я создал индекс с именем "Landsat", но на самом деле он должен называться "Landsat_8", поэтому я решил переиндексировать. Оригинальный индекс "Landsat" имеет 2 осколка и 0 реплик чтения. Размер хранилища составляет ~ 13,4 ГБ с ~ 6,6 ГБ на осколок, а индекс содержит чуть более 515 000 документов.

Я создал новый индекс под названием "landsat_8" с 5 осколками, 1 репликой чтения и запустил переиндекс без специальных опций. На очень маленьком кластере Elastic Cloud (4 ГБ ОЗУ) он завершился за 8 минут. Интересно было увидеть, что окончательный размер хранилища составлял всего 4,2 ГБ, но в нем по-прежнему содержалось все 515 000 документов.

После того, как это было закончено, я понял, что мне не удалось создать свои отображения перед переиндексацией, поэтому я сдул его и начал все сначала. Я был шокирован, обнаружив, что через час конечная точка / cat / _indices показала, что только 7,5 ГБ данных и 154 800 документов были переиндексированы. 4 часа спустя вся работа, казалось, умерла в 13.1 ГБ, но это только показало, что 254 000 документов были переиндексированы.

В этом небольшом 4-гигабайтном кластере эта операция переиндексации использовала максимальную загрузку процессора Я увеличил кластер до самого большого из предлагаемых Elastic Cloud (64 ГБ оперативной памяти), 5 осколков, 0 руб. И снова приступил к работе. На этот раз я установил значение refresh_interval для нового индекса равным -1 и изменил размер операции переиндексации на 2000. Короче говоря, эта работа закончилась где-то между 1h10m и 1h19m. Однако на этот раз у меня был общий размер магазина 25 ГБ, где каждый осколок содержал ~ 5 ГБ.

Я очень озадачен тем, почему операция переиндексации приводит к таким сильно отличающимся результатам в размере магазина и производительности переиндексации. Почему, когда я не определяю явно какие-либо сопоставления и не позволяю ES автоматически создавать сопоставления, размер хранилища намного меньше? И почему, когда я использую те же сопоставления, что и исходный индекс, магазин становится намного больше?

Любой совет будет принят с благодарностью. Спасибо!

ОБНОВЛЕНИЕ 1: Вот единственные различия в отображениях:

enter image description here

Левое изображение - "Landsat", а правое - "Landsat_8". В исходном индексе Landsat есть поле типа «root» и вложенное поле «properties.type». Я забыл, что одна из моих целей заключалась в удалении поля «properties.type» из данных во время переиндексации. Кажется, я преуспел в этом, но в то же время случайно переименовал отображение поля «тип» корневого уровня в «провайдер», таким образом, у «landsat_8» есть неиспользуемое сопоставление «провайдер» и автоматически созданный тип. "отображение.

Так что здесь есть некоторые проблемы, но я не думаю, что это почти удвоит размер моего магазина ...

...