Django Elastic Search - Как улучшить скорость индексирования больших данных в ES
У меня есть Epsiode Index, где есть только 1 поле, которое я использую для поиска. У меня 53 миллиона записей в PostgreSQL. Я использовал django-elasticsearch-dsl lib. для эластичной поисковой системы. Проблема в том, что когда я запускаю команду для дампа таблицы эпизодов PostgreSQL в Episode Index, это занимает почти 5-6 часов. Как я могу решить эту проблему. Это узкое место для меня при развертывании на prod.
documents.py
search_analyzer = analyzer('search_analyzer',
filter=["lowercase"],
tokenizer=tokenizer('autocomplete', 'edge_ngram', min_gram=1, max_gram=15))
@registry.register_document
class EpisodeDocument(Document):
title = fields.TextField(analyzer=search_analyzer)
class Index:
name = 'episode'
settings = {
'number_of_shards': 4,
'number_of_replicas': 2,
'max_ngram_diff': 10
}
class Django:
model = Episode
queryset_pagination = 5000
cmd для дампа данных в ES
python manage.py search_index --rebuild
ES машина: t3.2xlarge