2013-03-27 9 views
10

Mam program klienta, który generuje dokumenty Solr o wartości od 1 do 50 milionów i dodaje je do Solr.
Używam ConcurrentUpdateSolrServer do wysyłania dokumentów od klienta, 1000 dokumentów na żądanie.
Dokumenty są stosunkowo małe (kilka małych pól tekstowych).
Chcę poprawić szybkość indeksowania.
Próbowałem zwiększyć "ramBufferSizeMB" do 1G i "mergeFactor" do 25, ale nie widziałem żadnej zmiany.
Zastanawiam się, czy istnieją inne zalecane ustawienia poprawiające szybkość indeksowania Solr.
Wszelkie linki do odpowiednich materiałów zostaną docenione.Jak skonfigurować Solr w celu poprawy szybkości indeksowania?

Odpowiedz

8

Wygląda na to, że robisz zbiorczy import danych do Solr, więc nie musisz od razu wyszukiwać żadnych danych.

Po pierwsze, można zwiększyć liczbę dokumentów na żądanie. Ponieważ twoje dokumenty są małe, zwiększyłbym je nawet do 100K dokumentów na żądanie lub więcej i spróbuj.

Po drugie, chcesz zmniejszyć liczbę zdarzeń, które mają miejsce w przypadku indeksowania zbiorczego. W swojej solrconfig.xml szukać:

<!-- AutoCommit 

    Perform a hard commit automatically under certain conditions. 
    Instead of enabling autoCommit, consider using "commitWithin" 
    when adding documents. 

    http://wiki.apache.org/solr/UpdateXmlMessages 

    maxDocs - Maximum number of documents to add since the last 
       commit before automatically triggering a new commit. 

    maxTime - Maximum amount of time in ms that is allowed to pass 
       since a document was added before automatically 
       triggering a new commit. 

    openSearcher - if false, the commit causes recent index changes 
    to be flushed to stable storage, but does not cause a new 
    searcher to be opened to make those changes visible. 
    --> 
<autoCommit> 
    <maxTime>15000</maxTime> 
    <openSearcher>false</openSearcher> 
</autoCommit> 

Można wyłączyć AUTOCOMMIT całkowicie, a następnie wywołać commit po wszystkie dokumenty zostały wysłane. W przeciwnym razie możesz poprawić numery w następujący sposób:

Domyślna maxTime to 15 sekund, więc automatyczne zatwierdzanie zdarza się co 15 sekund, jeśli istnieją niezatwierdzone dokumenty, więc możesz ustawić to na coś dużego, powiedzmy 3 godziny (np. 3 * 60 * 60 * 1000). Możesz również dodać <maxDocs>50000000</maxDocs>, co oznacza, że ​​automatyczne zatwierdzanie ma miejsce tylko po dodaniu 50 milionów dokumentów. Po opublikowaniu wszystkich dokumentów, zatwierdź commit raz lub ręcznie z SolrJ - zatwierdzenie zajmie trochę czasu, ale ogólnie będzie to znacznie szybsze.

Również po zakończeniu importu zbiorczego, zmniejsz maxTime i maxDocs, tak aby wszelkie przyrostowe wpisy, które zrobisz Solr, zostaną zatwierdzone znacznie wcześniej. Lub użyj commitWithin, jak wspomniano w solrconfig.

+0

Może zabraknąć pamięci, jeśli zatwierdzenia zostaną całkowicie wyłączone. Ale ponowne otwarcie wyszukiwarki to dobry pomysł. –

+0

Witam Czy możesz doradzić, jak go skonfigurować, aby nie otwierać ponownie wyszukiwarki? – Krunal

+0

' false' nie otworzy nowego użytkownika po tym, jak nastąpi automatyczne zatwierdzanie. – arun

Powiązane problemy