Как остановить удаление ядер Solr при перезапуске Tomcat

Я использую Solr-4.10.1 на Tomcat-7. Я поместил необходимые schema.xml и solrconfig.xml в /usr/share/solr/data/test/conf и создал новое ядро, используя:

curl --request POST 'xx.xx.xx.xx:8080/solr/admin/cores' --data "action=CREATE&name=test&instanceDir=/usr/share/solr/data/test&config=solrconfig.xml&schema=schema.xml&dataDir=/usr/share/solr/data/test"

из командной строки. Затем я могу писать и читать из ядра, но когда я перезапускаю Tomcat, ядро ​​исчезает.

У меня есть читал, что установка persist=true в solr.xml решает проблему, однако я также читал, что это скоро будет объявлено устаревшим здесь и здесь:

Постоянный атрибут больше не поддерживается в solr.xml.

Кто-нибудь знает, как сохранить ядра для новейших версий Solr?

Редактировать:

Вот содержимое моего solr.xml, расположенного по адресу /etc/tomcat7/Catalina/localhost/solr.xml.

<Context docBase="/usr/share/solr/example/multicore/solr.war" debug="0" crossContext="true">
  <Environment name="solr/home" type="java.lang.String" value="/usr/share/solr/example/multicore" override="true" />
</Context>

person peter-b    schedule 22.10.2014    source источник
comment
Какой стиль solr.xml вы используете? Тот, который выполняет автоматическое обнаружение ядер, или тот, что в старом стиле, который перечисляет каждое ядро?   -  person Alexandre Rafalovitch    schedule 23.10.2014
comment
Я добавил содержимое моего solr.xml в сообщение. Обратите внимание, что это значения по умолчанию, созданные на этапах установки, следующих из webikon.com/cases/   -  person peter-b    schedule 23.10.2014
comment
Это неправильный файл solr.xml. Это определение tomcat для поиска веб-приложения solr. У вас должен быть еще один в вашем доме solr: /usr/share/solr/example/multicore в вашем случае.   -  person Alexandre Rafalovitch    schedule 23.10.2014
comment
Ах я вижу. Большое спасибо за помощь. Основываясь на вашей помощи, я опубликовал то, что теперь является ответом, если другие столкнутся с этой проблемой с конфигурацией нового стиля.   -  person peter-b    schedule 28.10.2014


Ответы (2)


Решение:

По умолчанию solr.xml для Tomcat указывало, что Solr использует /usr/share/solr/example/multicore в качестве каталога данных, а не туда, куда я поместил свои новые ядра. Я изменил /etc/tomcat7/Catalina/localhost/solr.xml, чтобы указать на мой новый каталог данных в /usr/share/solr/data:*

<Context docBase="/usr/share/solr/example/multicore/solr.war" debug="0" crossContext="true">
  <Environment name="solr/home" type="java.lang.String" value="/usr/share/solr/data" override="true" />
</Context>

В моем новом каталоге данных я создал новый solr.xml со следующим содержимым, которое я скопировал из примера, предоставленного при установке в /usr/share/solr/example/solr/solr.xml (комментарии здесь обрезаны). Это все шаблоны по умолчанию.

<?xml version="1.0" encoding="UTF-8" ?>
<solr>

  <solrcloud>
    <str name="host">${host:}</str>
    <int name="hostPort">${jetty.port:8983}</int>
    <str name="hostContext">${hostContext:solr}</str>
    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
  </solrcloud>

  <shardHandlerFactory name="shardHandlerFactory"
    class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:0}</int>
    <int name="connTimeout">${connTimeout:0}</int>
  </shardHandlerFactory>

</solr>

Это solr.xml в новом стиле, поэтому обнаружение ядра включено. См. эту ссылку для получения дополнительной информации.

Наконец, я поместил пустой core.properties в корень каждого ядра, которое я хотел обнаружить при перезагрузке, например. в 11_. Ядра теперь сохраняются при перезапуске Tomcat.

Большое спасибо @alexandre-rafalovitch за его помощь и указание меня в правильном направлении - см. комментарии под вопросом.

*: Примечание для наблюдательных: я оставил solr.war на прежнем месте, поскольку он не имеет отношения к рассматриваемому вопросу.

person peter-b    schedule 28.10.2014

Мое приложение solr работает на причале. Я пробовал все, но ничего не работало. Затем я понял, что мое приложение было создано в разделе «многоядерный». Я пробовал 2 вещи: а. Я изменил свой solr.xml (\example\multicore) следующим образом:

<solr persistent="true" sharedLib="lib">

б. Я перезапустил свой start.jar с помощью

java -Dsolr.solr.home=multicore -jar start.jar

и это сработало. Надеюсь, поможет.

person Shashank    schedule 08.09.2016