2013-07-25 10 views
6

Próbuję skonfigurować wielordzeniowy serwer Solr dla naszego webaplikacji, ale mam problem z utworzeniem nowego rdzenia za pośrednictwem usługi coreadmin.Solr (4.4+) lokalizacja solrconfig.xml podczas tworzenia rdzeni

Używam Solr-4,4 bo 4,3 wpadł problemów utrzymujących się rdzeni w solr.xml (datadir nie zachował się) więc używam nowego Solr.xml konfigurację 4.4 and beyond

Moja solr.xml obecnie wygląda następująco:

<solr> 
    <str name="coreRootDirectory">default-instance/cores/</str> 
</solr> 

solrconfig.xml znajduje się w (solrhome) /default-instance/conf/solrconfig.xml

Gdy próbuje stworzyć rdzeń z adresem URL

http:/example.org/solr/admin/cores?action=CREATE&name=test-name&schema=schema-test.xml&loadOnStartup=false 

daje mi błąd:

Error CREATEing SolrCore 'test-name': Unable to create core: test-name Caused by: Can't find resource 'solrconfig.xml' in classpath or 'default-instance/cores/test-name/conf/', cwd=/var/lib/tomcat7

Poniższy wydaje się działać:

http:/example.org/solr/admin/cores?action=CREATE&name=test-name&schema=schema-test.xml&loadOnStartup=false&config=/absolute/file/path/to/solrconfig.xml 

Problemem jest to tylko wydaje się działać z bezwzględną ścieżkę (lub ewentualnie ścieżka względna z/var/lib/tomcat7), który nie jest rozwiązaniem wykonalnym.

To, czego szukam, to sposób na umieszczenie pliku solrconfig.xml, dzięki czemu można go użyć do utworzenia nowych rdzeni z tą konfiguracją (lub sposobem na utworzenie tych rdzeni z bieżącą lokalizacją).

Mniej więcej to samo będzie potrzebne do schematów

Odpowiedz

2

miałem ten sam problem: solrconfig.xml nie był w ścieżce klasy. Rozwiązałem go, kopiując szablony plików konfiguracyjnych do ścieżki klasy.

Tak więc przyjrzałem się http://localhost:8983/solr/#/~java-properties, aby zobaczyć definicję klasy solrsspath, a następnie skopiowałem szablon solrconfig.xml i schema.xml do folderu C:\servers\solr-4.4.0\example\resources. Ponadto skopiowałem wszystkie rzeczy, które tam znalazłem ...

To rozwiązanie nie jest w pełni satysfakcjonujące, ale działa. Dodanie innej ścieżki do ścieżki klas również powinno działać. Jestem nieco zaskoczony, że domyślna konfiguracja nowych rdzeni nie może być zadeklarowana w ramach solr.xml

4

W moim przypadku skorzystałem z funkcji Core Discovery w wersji 4.4+, zamiast tworzyć rdzeń za pomocą interfejsu sieciowego do zarządzania.

Wymagało to po prostu skopiowania folderu z przykładami collection1 z katalogu examples (którego zwykle używam jako punktu początkowego).

Następnie musiałem się upewnić, że jest core.properties w katalogu głównym mojego nowego rdzenia z name=<new core name> wewnątrz. Solr automatycznie wykrył nowy rdzeń i pozwolił mi go używać bez żadnych problemów.

Dzięki temu uniknięto konieczności kopiowania solrconfig.xml i schema.xml w specjalne miejsce.

+0

jest to możliwe w SolrCloud? lub musimy dodać nowy rdzeń do innych węzłów w chmurze jeden po drugim? – stephanruhl

+0

Nie wiem. Odtąd zaczęłam używać ElasticSearch. – mydoghasworms

+0

@mydoghasworms Użyłem tego podejścia i zadziałało to dla mnie .. dzięki. – Joe

2

Polecam nowe zestawy konfiguracyjne dla tego przypadku użycia.

Jeśli umieścisz plik schema.xml i solrconfig.XML (i inne pliki konfiguracyjne, takie jak stopwords itp) w katalogu $SOLR_HOME/configsets/myConfig/conf, można utworzyć nowy rdzeń z tej konfiguracji poprzez wywołanie:

http://solr/admin/cores?action=CREATE&name=mycore&instanceDir=my_instance&configSet=myConfig

Zobacz https://cwiki.apache.org/confluence/display/solr/Config+Sets

Ale nie są one dostępne do Solr 4.8, zobacz https://issues.apache.org/jira/browse/SOLR-4478

10

To zadziałało. Ran na linii poleceń i był widoczny w konsoli administracyjnej:

solr tworzyć -C (nazwa rdzenia lub kolekcji)

See README.txt aby uzyskać więcej informacji.

+1

To jest dostępne tylko w Solr 5 – Evgeny

+0

Komenda CLI działała również dla mnie. Dzięki! –

+1

powinniśmy również wiedzieć, że polecenie powinno być wykonywane jako użytkownik 'solr' – MhdSyrwan

Powiązane problemy