Ho un programma client che genera un documento Solr da 1 a 50 milioni e li aggiunge a Solr.
Sto utilizzando ConcurrentUpdateSolrServer per inviare i documenti dal client, 1000 documenti per richiesta.
I documenti sono relativamente piccoli (pochi campi di testo di piccole dimensioni).
Desidero migliorare la velocità di indicizzazione.
Ho provato ad aumentare "ramBufferSizeMB" a 1G e "mergeFactor" a 25 ma non ho visto alcuna modifica.
Mi chiedevo se ci sono altre impostazioni consigliate per migliorare la velocità di indicizzazione di Solr.
Si apprezzeranno eventuali collegamenti a materiali pertinenti.Come configurare Solr per una migliore velocità di indicizzazione
risposta
Sembra che si stia eseguendo un'importazione in serie di dati in Solr, quindi non è necessario cercare immediatamente alcun dato.
Innanzitutto, è possibile aumentare il numero di documenti per richiesta. Dal momento che i tuoi documenti sono piccoli, lo aumenterei addirittura a 100.000 documenti per richiesta o più e proverei.
In secondo luogo, si desidera ridurre il numero di volte che i commit si verificano quando si esegue l'indicizzazione di massa. Nella vostra solrconfig.xml cercare:
<!-- 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>
È possibile disattivare autoCommit del tutto e quindi chiamare un commit dopo che tutti i documenti sono pubblicati. Altrimenti puoi modificare i numeri come segue:
Il valore predefinito maxTime
è 15 secondi, quindi un commit automatico avviene ogni 15 secondi se ci sono documenti non salvati, quindi puoi impostarlo su qualcosa di grande, diciamo 3 ore (cioè 3 * 60 * 60 * 1000). È inoltre possibile aggiungere <maxDocs>50000000</maxDocs>
, il che significa che un commit automatico si verifica solo dopo aver aggiunto 50 milioni di documenti. Dopo aver pubblicato tutti i tuoi documenti, chiama il commit una volta manualmente o da SolrJ - ci vorrà un po 'di tempo per eseguire il commit, ma nel complesso sarà molto più veloce.
Anche dopo aver terminato l'importazione di massa, ridurre maxTime
e maxDocs
, in modo che i post incrementali che verranno eseguiti in Solr vengano eseguiti molto prima. O utilizzare commitWithin
come indicato in solrconfig.
È possibile che si esaurisca la memoria se i commit sono completamente disabilitati. Ma non riaprire l'utente è una buona idea. –
Ciao Puoi consigliare come configurarlo in modo che non riaprire il ricercatore? – Krunal
' false openSearcher>' non aprirà un nuovo ricercatore dopo che è avvenuto un commit automatico. –
arun