Search サービスに同期されたデータは、コミットされた後にのみ表示されます。 ソフトコミットまたはハードコミットのいずれかの方法を使用して、データがコミットされる時間を指定できます。
solrconfig.xml ファイルの構成
インデックスを作成するときは、config set
という名前の構成セットを指定する必要があります。 構成セット内の solrconfig.xml
ファイルを使用して、インデックス内のデータの可視性を制御できます。
ソフトコミット
<autoSoftCommit> <maxTime>${solr.autoSoftCommit.maxTime:15000}</maxTime> </autoSoftCommit>
デフォルトでは、ソフトコミットが実行されてから 15 秒後にデータのクエリを実行できます。
ハードコミット
<autoCommit> <maxTime>${solr.autoCommit.maxTime:30000}</maxTime> <openSearcher>false</openSearcher> </autoCommit>
デフォルトでは、ハードコミットが実行されてから 30 秒後にデータがディスクにフラッシュされます。
説明
ハードコミットと比較して、ソフトコミットは完了までの時間が短くなります。
十分な時間を指定することをお勧めします。 そうしないと、Search サービスは頻繁にデータをディスクにフラッシュし、書き込みパフォーマンスに影響します。 デフォルト値を使用してください。
有効化の方法
必要な構成セットをダウンロードします。
ソフトコミット
とハードコミット
の時間を変更します。構成セットを更新します。
./solr zk upconfig -d conf/ -n myconf
コレクションの再読み込み
クライアントパラメーター
サーバー上の solrconfig.xml ファイルを変更したくない場合は、データを Search インデックスに個別に書き込むときに、commit メソッドを明示的に呼び出してデータを表示することができます。
commitWithinMs
// 2 番目のパラメーター commitWithinMs を使用して、現在のデータのクエリを実行できるタイミングを制御できます。 public UpdateResponse add(SolrInputDocument doc, int commitWithinMs) throws SolrServerException, IOException;
たとえば、同期後 10 秒でデータのクエリを実行できるように指定できます。
cloudSolrClient.add(doc, 1000);
commit API
// 同期後、commit 操作を明示的に呼び出して、サーバーがデータをコミットする時間を指定し、データのクエリを実行できるようにすることができます。 public UpdateResponse commit(boolean waitFlush, boolean waitSearcher, boolean softCommit) throws SolrServerException, IOException;
たとえば、サーバーがすぐにソフトコミットを実行するように指定できます。
cloudSolrClient.commit(false, false, true);