すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for HBase:インデックス内のデータの可視性

最終更新日:Jan 16, 2025

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 秒後にデータがディスクにフラッシュされます。

説明
  1. ハードコミットと比較して、ソフトコミットは完了までの時間が短くなります。

  2. 十分な時間を指定することをお勧めします。 そうしないと、Search サービスは頻繁にデータをディスクにフラッシュし、書き込みパフォーマンスに影響します。 デフォルト値を使用してください。

有効化の方法

  1. 必要な構成セットをダウンロードします。

  2. ソフトコミットハードコミット の時間を変更します。

  3. 構成セットを更新します。

    ./solr zk upconfig -d conf/ -n myconf
  4. コレクションの再読み込みindex

クライアントパラメーター

サーバー上の 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);

参照

https://lucene.apache.org/solr/guide/7_3/updatehandlers-in-solrconfig.html#updatehandlers-in-solrconfig