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

Вернуться на верх