Solrインデックスを最適化する方法。 solrのインデックス作成を最適化したいのですが、solrconfig.xmlでインデックスを作成するように変更しようとしていますが、それらが最適化されていることと、インデックスの最適化に関係していることを確認する方法が必要です。
これがSolrインデックスを最適化する最も簡単な方法だと思います。私の文脈では、「最適化」とは、すべてのインデックスセグメントをマージすることを意味します。
curl http://localhost:8983/solr/<core_name>/update -F stream.body=' <optimize />'
開始する前に、それぞれのコアのサイズを確認してください。
ターミナル1を開く:
watch -n 10 "du -sh /path to core/data/*"
ターミナル2を開いて実行します。
curl http://hostname:8980/solr/<core>/update?optimize=true
「コア」の代わりに、コアのそれぞれの名前を更新します。
コアのサイズは、インデックス付きデータのサイズの約2倍に徐々に増加し、突然減少することがわかります。これには時間がかかりますが、solrデータによって異なります。
たとえば、50Gのインデックス付きデータは90G近くまで急上昇し、最適化された25Gデータまで低下します。そして通常、この量のデータには30〜45分かかります。
ドキュメントを削除したときにインデックスディレクトリが(すぐに)小さくならないのはなぜですか?マージを強制しますか?最適化しますか?
Solrを最適化するためにsolr要求を更新するには、optimize=true
を渡す必要があります。
インデックスを最適化するにはさまざまな方法があります。 solrの基本スクリプトの1つをトリガーできます: http://wiki.Apache.org/solr/SolrOperationsTools#optimize
(完全な)インポート時または新しいデータの追加中にoptimize=true
を設定することもできます。 ...または単にoptimize=true
でコミットをトリガーします
たぶん、これはあなたのニーズにとって興味深いかもしれません: http://wiki.Apache.org/solr/UpdateXmlMessages#A.22commit.22_and_.22optimize.22
インデックス作成を最適化する変更の量をテストするには、カスタムインデクサーを作成し、ランダムに生成されたコンテンツを追加するだけです。多数のドキュメント(500.000または1.000.000)を追加し、それにかかる時間を測定します。
上記で共有した記事に従って、私は自分でカスタムインデクサーを作成し、ドキュメントのインデックス作成にかかる時間を80%最適化するように管理しました。
Solrコア/シャードデータの最適化に関しては、次のようなコマンドを実行するのと同じくらい簡単です。
curl http://hostname:8980/solr/<COLLECTION_NAME>/update?optimize=true'
ただし、これは無料ではないことに注意してください。大量のデータがある場合、Solrノードで非常に多くのI/Oが発生し、プロセス自体に多くの時間がかかる可能性があります。ほとんどの場合、インデックス自体を強制的にマージするのではなく、マージプロセスの調整から始めたいと思います。
Lucene/Solr革命中にそのトピックについて話しました-スライドをご覧になりたい場合は、ここのビデオにリンクがあります: https://sematext.com/blog/solr-optimize- is-not-bad-for-you-lucene-solr-revolution /