Проблемы с переиндексацией в Algolia

При выполнении algolia:reindex с помощью rake-задачи произошла ошибка со следующим сообщением:

Очистка пользователей из Algolia
Отправка пользователей в Algolia
...
Успешно отправлено 1849 пользователей в Algolia
Очистка тегов из Algolia
Отправка тегов в Algolia
..
Успешно отправлено 53 тега в Algolia
Очистка постов из Algolia
Отправка постов в Algolia
rake aborted!
Algolia::AlgoliaHttpError: Запись на позиции 662 с objectID=690 слишком велика: размер 20920/20000 байт. Пожалуйста, ознакомьтесь с документацией: https://www.algolia.com/doc/guides/sending-and-managing-data/prepare-your-data/in-depth/index-and-records-size-and-usage-limitations/#record-size-limits (Algolia::AlgoliaHttpError)

Насколько я могу судить, плагин не содержит функциональности для разделения длинных постов на отдельные фрагменты. Мне удалось обойти проблему, исключив длинные посты, добавив

objects.reject! { |object| object.to_json.bytesize > 20000 }

непосредственно перед вызовом @index.save_objects, но это также означает, что такие посты вообще не индексируются.

2 лайка

Есть какие-то идеи, что ожидает API? Нам нужно обрезать данные или отправлять их несколькими частями?

Согласно https://www.algolia.com/doc/guides/sending-and-managing-data/prepare-your-data/how-to/indexing-long-documents/, документы необходимо разбивать на фрагменты, а при поиске параметр distinct должен быть установлен в true.

Максимальный размер зависит от тарифного плана https://support.algolia.com/hc/en-us/articles/4406981897617-Is-there-a-size-limit-for-my-index-records, но я не смог найти способ запросить эту информацию. Учитывая, что на некоторых тарифах также существует ограничение на «средний размер записи по всем записям», возможно, стоит разбивать документы на фрагменты размером ~10 КБ~ 10 000 байт.

2 лайка