検索インデックス構成
検索インデックスのクエリー動作を変更するためのリファレンス情報。
- DataStaxでは、CQL CREATE SEARCH INDEXコマンドとALTER SEARCH INDEX CONFIGコマンドを推奨しています。
- dsetoolコマンドは、検索インデックスの管理にも使用できます。
検索インデックス構成の変更
- 検索インデックスを作成します。例を次に示します。
CREATE SEARCH INDEX ON demo.health_data;
- 検索インデックスを変更します。例を次に示します。
ALTER SEARCH INDEX CONFIG ON demo.health_data SET autoCommitTime = 30000;
- 必要に応じて、保留中の検索インデックスのXMLを表示します。例を次に示します。
DESCRIBE PENDING SEARCH INDEX CONFIG on demo.health_data;
- 保留中の変更をアクティブ化します。例を次に示します。
RELOAD SEARCH INDEX ON demo.health_data;
検索インデックス構成のサンプル
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<config>
<abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>
<luceneMatchVersion>LUCENE_6_0_0</luceneMatchVersion>
<dseTypeMappingVersion>2</dseTypeMappingVersion>
<directoryFactory class="solr.StandardDirectoryFactory" name="DirectoryFactory"/>
<indexConfig>
<rt>false</rt>
<rtOffheapPostings>true</rtOffheapPostings>
<useCompoundFile>false</useCompoundFile>
<reopenReaders>true</reopenReaders>
<deletionPolicy class="solr.SolrDeletionPolicy">
<str name="maxCommitsToKeep">1</str>
<str name="maxOptimizedCommitsToKeep">0</str>
</deletionPolicy>
<infoStream file="INFOSTREAM.txt">false</infoStream>
</indexConfig>
<jmx/>
<updateHandler class="solr.DirectUpdateHandler2">
<autoSoftCommit>
<maxTime>10000</maxTime>
</autoSoftCommit>
</updateHandler>
<query>
<maxBooleanClauses>1024</maxBooleanClauses>
<filterCache class="solr.SolrFilterCache" highWaterMarkMB="2048" lowWaterMarkMB="1024"/>
<enableLazyFieldLoading>true</enableLazyFieldLoading>
<useColdSearcher>true</useColdSearcher>
<maxWarmingSearchers>16</maxWarmingSearchers>
</query>
<requestDispatcher handleSelect="true">
<requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048000"/>
<httpCaching never304="true"/>
</requestDispatcher>
<requestHandler class="solr.SearchHandler" default="true" name="search">
<lst name="defaults">
<int name="rows">10</int>
</lst>
</requestHandler>
<requestHandler class="com.datastax.bdp.search.solr.handler.component.CqlSearchHandler" name="solr_query">
<lst name="defaults">
<int name="rows">10</int>
</lst>
</requestHandler>
<requestHandler class="solr.UpdateRequestHandler" name="/update"/>
<requestHandler class="solr.UpdateRequestHandler" name="/update/csv" startup="lazy"/>
<requestHandler class="solr.UpdateRequestHandler" name="/update/json" startup="lazy"/>
<requestHandler class="solr.FieldAnalysisRequestHandler" name="/analysis/field" startup="lazy"/>
<requestHandler class="solr.DocumentAnalysisRequestHandler" name="/analysis/document" startup="lazy"/>
<requestHandler class="solr.admin.AdminHandlers" name="/admin/"/>
<requestHandler class="solr.PingRequestHandler" name="/admin/ping">
<lst name="invariants">
<str name="qt">search</str>
<str name="q">solrpingquery</str>
</lst>
<lst name="defaults">
<str name="echoParams">all</str>
</lst>
</requestHandler>
<requestHandler class="solr.DumpRequestHandler" name="/debug/dump">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="echoHandler">true</str>
</lst>
</requestHandler>
<admin>
<defaultQuery>*:*</defaultQuery>
</admin>
</config>
構成要素は、ショートカットごとにアルファベット順にリストされます。 XML要素は、要素開始タグとともに表示されます。省略記号は、その他の要素または属性が表示されていないことを示しています。
- autoCommitTime
- INSERT、UPDATE、またはDELETEの後に、最新のデータで検索インデックスを更新する間隔を定義します。デフォルトでは、変更は10,000ミリ秒ごとに自動的にコミットされます。更新の間隔を変更するには、以下の手順を実行します。
- 保留中の検索インデックスの自動コミット時間を設定します。
ALTER SEARCH INDEX CONFIG ON wiki.solr SET autoCommitTime = 30000;
- 保留中の検索構成を表示できます。
DESCRIBE PENDING SEARCH INDEX CONFIG on wiki.solr;
表示されたXMLは、更新間隔の最大時間が30000ミリ秒であることを示しています。<updateHandler class="solr.DirectUpdateHandler2"> <autoSoftCommit> <maxTime>30000</maxTime> </autoSoftCommit> </updateHandler>
- 保留中の変更をアクティブ化するには、検索インデックスを再度読み込みます。
RELOAD SEARCH INDEX ON wiki.solr;
- 保留中の検索インデックスの自動コミット時間を設定します。
- defaultQueryField
- クエリーを実行するデフォルト・フィールドの名前。デフォルトは設定されていません。クエリーでフィールドが指定されていない場合に使用するフィールドの設定については、「デフォルトのクエリー・フィールドの設定」を参照してください。
- directoryFactory
- 検索インデックスで使用するディレクトリー係数。暗号化は、検索インデックスごとに有効になります。検索インデックスの暗号化を有効にするには、directoryFactoryのクラスを
EncryptedFSDirectoryFactory
に変更します。- 保留中の検索インデックスの暗号化を有効にします。
ALTER SEARCH INDEX CONFIG ON wiki.solr SET directoryFactory = EncryptedFSDirectoryFactory;
- 保留中の検索構成を表示できます。
DESCRIBE PENDING SEARCH INDEX CONFIG on wiki.solr;
表示されたXMLは、暗号化が有効になっていることを示しています。<directoryFactory class="solr.EncryptedFSDirectoryFactory" name="DirectoryFactory"/>
- 保留中の変更をアクティブ化するには、検索インデックスを再度読み込みます。
RELOAD SEARCH INDEX ON wiki.solr;
- 保留中の検索インデックスの暗号化を有効にします。
- filterCacheLowWaterMark
- デフォルトは、1024 MBです。以下を参照してください。
- filterCacheHighWaterMark
- デフォルトは、2048 MBです。
- mergeFactor
- 新しいセグメントを追加すると最下位のセグメントの数がマージ係数値を超える場合、これらのセグメントはマージされて、1つの大きいセグメントを形成します。マージ係数が10の場合、各マージにより、10個のそれぞれの構成要素の約10倍の大きさを持つ単一セグメントが作成されます。このような大きいセグメントが10個になると、さらに大きい単一のセグメントにマージされます。デフォルトは10です。
- 一度にマージするセグメント数を変更するには、以下の手順を実行します。
ALTER SEARCH INDEX CONFIG ON solr.wiki SET mergeFactor = 5;
- 保留中の検索インデックス構成を表示します。
<indexConfig> ... <mergeFactor>10</mergeFactor> ... </indexConfig>
- 保留中の変更をアクティブ化するには、検索インデックスを再度読み込みます。
RELOAD SEARCH INDEX ON wiki.solr;
- 一度にマージするセグメント数を変更するには、以下の手順を実行します。
- mergeMaxThreadCount
- mergeMaxMergeCountとともに構成する必要があります。検索インデックスに対して、Luceneが実行可能な同時マージ回数。デフォルトのmergeScheduler設定は、自動的に設定されます。この設定は調整しないでください。
デフォルト:tpc_coreの数の1/2
- mergeMaxMergeCount
- mergeMaxThreadCountとともに構成する必要があります。累積できる、保留中のマージ(アクティブでバックログ内にあるもの)の数。この値を超えると、受信書き込み数を抑制するためにセグメントのマージが開始されます。デフォルトのmergeScheduler設定は、自動的に設定されます。この設定は調整しないでください。
デフォルト:mergeMaxThreadCountの2倍
- ramBufferSize
- インデックスRAMバッファー・サイズ(MB)。RAMバッファーは、コミットされていないドキュメントを保持します。RAMバッファーが大きいほど、フラッシュが低減されます。フラッシュが発生すると、セグメントも大きくなります。フラッシュが少ないとI/O負荷を抑えることができるため、書き込みワークロードが大きいシナリオでは理想的です。
たとえば、ライブ・インデックス作成を構成する場合はramBufferSizeを調整します。
ALTER SEARCH INDEX CONFIG ON wiki.solr SET autoCommitTime = 100; ALTER SEARCH INDEX CONFIG ON wiki.solr SET realtime = true; ALTER SEARCH INDEX CONFIG ON wiki.solr SET ramBufferSize = 2048; RELOAD SEARCH INDEX ON wiki.solr ;
デフォルト:512
- realtime
- インデックス作成のスループットを高めるためにライブ・インデックス作成を有効にします。クラスターごとに1つのノードでのみライブ・インデックス作成を有効にしてください。ライブ・インデックス作成はリアルタイム(RT)インデックス作成とも呼ばれ、Lucene RAMバッファーに対する直接検索をサポートしており、より頻繁で安価なソフト・コミットが可能であり、新たにインデックスが作成されたデータをすばやく認識できるようになります。
ライブ・インデックス作成では、他の同等のNRT設定よりも大きいRAMバッファーとメモリー使用量が必要になります。「RTのインデックス作成の調整」を参照してください
ショートカットを持たない構成要素
ショートカットを持たない構成要素を指定するには、設定のXMLパスを指定して、ピリオドで子要素を区切ります。
- deleteApplicationStrategy
- deletesの適用時に削除されたドキュメントの取得方法を制御します。seekexactは安全性の高いデフォルトで、多くの場合に適していますが、パフォーマンスを少し高めたい場合はseekceilingを試してみてください。有効な値は以下のとおりです。大文字と小文字は区別されません。
- seekexact
ブルーム・フィルターを使用して、大半のセグメントからの読み取りを回避します。メモリーが制限され、ユニーク・キー・フィールドのデータがメモリーに収まらない場合に使用します。
- seekceiling
シーケンシャル・キーを使用してデーターベースに対してドキュメントの削除/挿入を行う際のパフォーマンスを高めます。これは、このストラテジでは、単語がもう含まれていないことが判明した時点でセグメントからの読み取りを停止できるためです。
デフォルト:seekexact
- seekexact
- mergePolicyFactory
- AutoExpungeDeletesTieredMergePolicyのカスタム・マージ・ポリシーは、TieredMergePolicyに基づいています。このポリシーは、deletesがパーセントしきい値に到達した時点で大きいセグメントをマージしてクリーンアップします。自動消去マージは1つずつ発生します。deletesが原因で最大のセグメントがマージされない大きいインデックスで使用します。このマージ設定がワークフローに適しているかどうかを判断するには、Solrの[Segment Info]画面でセグメントを確認します。 設定する場合はXMLを以下のように記述します。
<indexConfig> <mergePolicyFactory class="org.apache.solr.index.AutoExpungeDeletesTieredMergePolicyFactory"> <int name="maxMergedSegmentMB">1005</int> <int name="forceMergeDeletesPctAllowed">25</int> <bool name="mergeSingleSegments">true</bool> </mergePolicyFactory> </indexConfig>
deletesを自動的に削除できるようにTieredMergePolicyを拡張するには、以下のように入力します。- deletesの自動削除を有効にするには、以下のようにカスタム・ポリシーを設定します。
ALTER SEARCH INDEX CONFIG ON wiki.solr SET indexConfig.mergePolicyFactory[@class='org.apache.solr.index.AutoExpungeDeletesTieredMergePolicyFactory'].bool[@name='mergeSingleSegments'] = true;
- 最大セグメント・サイズをMB単位で設定します。
ALTER SEARCH INDEX CONFIG ON wiki.solr SET indexConfig.mergePolicyFactory[@class='org.apache.solr.index.AutoExpungeDeletesTieredMergePolicyFactory'].int[@name='maxMergedSegmentMB'] = 1005;
- 大きいセグメントから削除する際のパーセントしきい値を設定します。
ALTER SEARCH INDEX CONFIG ON wiki.solr SET indexConfig.mergePolicyFactory[@class='org.apache.solr.index.AutoExpungeDeletesTieredMergePolicyFactory'].int[@name='forceMergeDeletesPctAllowed'] = 25;
mergeFactorが既存のインデックス構成に含まれている場合は、deletesを自動的に削除できるようにテーブルを変更する前に検索インデックスからmergeFactorを削除する必要があります。ALTER SEARCH INDEX CONFIG ON wiki.solr DROP indexConfig.mergePolicyFactory;
- deletesの自動削除を有効にするには、以下のようにカスタム・ポリシーを設定します。
- parallelDeleteTasks
- 並列処理のソフト/ハード・コミット時に、deletesを適用するために作成されるタスクの数を制御します。RTとNRTのインデックス作成でサポートされています。0より大きい正の数を指定します。
読み取りと書き込みが混在するワークロードの実行時に書き込み負荷で問題が発生した場合を除き、parallelDeleteTasksはデフォルト値のままにします。書き込みによる使用率が急増するときがあり、読み取りパフォーマンスに悪影響を及ぼす場合は、この値を小さくします。
デフォルト:使用可能なプロセッサーの数