Стратегии развертывания Solr для 100% времени работы при создании всего индекса

Я работаю над Solr 3.6 с проектом электронной коммерции ASP.net MVC3.

У меня есть индекс appx. 1 лакированные продукты в Solr. Есть некоторые изменения в требованиях, и нам нужно перестроить весь индекс. Вся индексация занимает почти полтора часа, в течение которых сайт должен быть недоступен.

Как я могу перестроить индекс, а также сохранить работоспособность сайта, который обслуживает содержимое из более старого индекса. Каковы лучшие практики для сокращения времени простоя при восстановлении всего индекса. Хотел бы я сделать это со 100% безотказной работой.

Изменить. Я сохраняю несколько URL-адресов в данные Solr как сохраненное поле и, следовательно, которые динамически генерируются при добавлении данных в Solr. Если я развертываю приложение в другом поддомене, например test.example.com, тогда он принимает неправильный URL-адрес, при этом он будет работать только с example.com. Так что размещение другого приложения для меня не вариант.


person Krunal    schedule 13.08.2012    source источник


Ответы (2)


Вы можете использовать концепцию нескольких ядер в Solr и, таким образом, получить действующее ядро, которое пользователи в настоящее время ищут. против и резервное ядро, где вы можете вносить изменения в схему, повторно индексировать и т. д. Затем с помощью SWAP вы можете переключать действующее и резервное ядра без простоя пользователя. Своп будет обрабатываться внутри Solr, и ваши пользователи никогда не заметят разницы.

person Paige Cook    schedule 13.08.2012
comment
спасибо, сейчас работаю над реализацией этого. Отлично. Спасибо. - person Krunal; 16.08.2012
comment
А как насчет каталога данных? все ядра должны иметь разные каталоги данных ... ?? - person Dharmik Bhandari; 17.08.2012
comment
Да, у вас должен быть отдельный каталог данных для каждого ядра. Загляните в папку / example / multicore в загрузке Solr, чтобы узнать, как они рекомендуют настраивать структуру. (В каждой папке coreX есть conf и также будет папка данных для индекса). См. Файл solr.xml, чтобы узнать, как настроить solr для папки в соответствии с настройками ядра. - person Paige Cook; 17.08.2012

Как я вижу, есть несколько способов правильно решить эту проблему:

  1. Не перестраивайте весь индекс - просто обновляйте необходимые записи на лету, когда они меняются, Solr может сделать это довольно просто
  2. Создайте 2 экземпляра Solr на разных портах и ​​используйте их один за другим. Когда первый перестраивается, во втором вы можете использовать старый индекс. И когда первый будет перестроен, вы можете использовать его до тех пор, пока индекс на втором экземпляре не будет перестроен.
  3. Добавьте в свой индекс логическое поле с именем, например, "old_index". И когда начнется переиндексация, обновите все текущие записи и установите old_index = 1, затем напишите где-нибудь в конфигурации, что вы ищете записи с old_index == 1. Затем начните переиндексировать, чем удалите старые записи. Это можно сделать с помощью Solr`s deleteByQuery и либо автоматическим обновлением в Solr 4.x, либо обновлением вручную.
person DarkFighter    schedule 13.08.2012