Я использую Searchkick для взаимодействия с эластичным поиском api в приложении Rails, и он работает нормально почти для всех случаев, но проблема, с которой я столкнулся, - у меня есть поле статуса в моей модели , а также при помощи флажка «Выбрать все» пользователь может изменить статус всех записей, поэтому я обновляю свои данные с помощью update_all
, который не запускает обратный вызов и выполняет поиск данных reindex с помощью обратного вызова after_commit
. и поскольку, мои данные не получают reindexed
в Elastic Search таким образом, он дает те же результаты, что я должен делать, вызывает Model.reindex
вручную - это хороший вариант?Rails Elastic Search reindex data after update_all
1
A
ответ
3
я на самом деле решил ее, без повторной индексации всей информации, которая была бы действительно наивным решением, вместо того, что мы можем повторно индексировать одну запись, как ниже
product = Product.find 10
product.reindex
# or to reindex in the background
product.reindex_async
1
Вы должны позвонить по телефону Model.reindex
вручную. action_all
предназначен для непосредственного внесения изменений на уровне БД. Подробнее here.
Вы можете создать фильтр after_action
для переиндексации данных.
Смежные вопросы
- 1. Sphinx Search Reindex
- 2. Asciifolding not working Elastic Search Rails
- 3. Elastic Search Rails найти связанные атрибуты модели
- 4. Rails update_all с hstore
- 5. ConnectTransportException in Elastic Search
- 6. update_all ruby on rails
- 7. Elastic search plugin
- 8. Elastic Search Post API
- 9. Elastic Search Query
- 10. Объединить Elastic Search Запросы
- 11. Sql on Elastic Search
- 12. Tiebreaking in Elastic Search
- 13. Adavancedquery in Elastic search
- 14. Elastic Search Scroll Behavior
- 15. Kibana without Elastic search
- 16. RDBMS to Elastic Search
- 17. Elastic Search IndexShardGatewayRecoveryException
- 18. Spring Data Elastic Search Вложенные поля и NativeSearchQueryBuilder.withFields
- 19. Reindex crawled data Solr 5.4.1
- 20. Broken sort after search
- 21. reload kendo after search mvc
- 22. Elastic Search Search Query Returning Неверные результаты
- 23. Smart Search in Elastic Search, как Google
- 24. Hibernate Search - Reindex при обновлении связанного объекта
- 25. Elastic Search Ошибка версии Lucene
- 26. Пользовательский рейтинг в Elastic Search
- 27. И запрос в Elastic Search
- 28. CircleCI Elastic Search with Haystack
- 29. Search API Elastic Индекс поиска
- 30. Elastic search- search_analyzer vs index_analyzer
Это ОКК, чтобы сделать это на местном I попробовал, но разве это не создаст проблему на производстве, у нас есть 50к + записи на производстве, переиндексация 50 тыс. записей может занять достойное время? –
Да, вам потребуется время, которое вы также можете назвать этим переиндексисом в фоновом режиме. Создайте фоновое задание только для reindex. И назовите его в 'afetr_action'. –
Вы можете сделать это так же 'models.find_each {| m | m.update_attributes (params)} 'Это займет больше времени. Поскольку update и reindex будут вызывать количество записей. –