ALTER SEARCH INDEX CONFIG

DSE Search構成の検索インデックスを変更します。

cassandra.yaml

cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra.yaml
tarボール・インストール installation_location/resources/cassandra/conf/cassandra.yaml

検索インデックスの保留中の構成を変更します。

保留中およびアクティブな検索インデックスを表示するには、CQLシェル・コマンドのDESCRIBE SEARCH INDEXを使用します。変更をアクティブな構成に適用するには、RELOAD SEARCH INDEXコマンドを使用します。

制約事項: DSE Searchノードでのみ使用できるコマンドです。大きなデータセットに対して検索インデックスの管理コマンドを実行すると、CQLSHのデフォルトで指定された10分のタイムアウトよりも長くかかることがあります。必要に応じて、CQLSHクライアント・タイムアウトの値を引き上げてください。

構文

ALTER SEARCH INDEX CONFIG ON [keyspace_name.]table_name
  ( ADD element_path [ attribute_list ] WITH $$ json_map $$
  | SET element_identifier = 'value'
  | SET shortcut = value
  | DROP element_identifier
  | DROP shortcut ) ;
1. 凡例
構文規則 説明
大文字 リテラル・キーワード。
小文字 リテラル以外。
イタリック体 変数値。ユーザー定義値と置き換えます。
[] 任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。
( ) グループ。丸かっこ(( ))は、選択肢を含むグループを示します。丸かっこは入力しないでください。
| または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。
... 繰り返し可能。省略記号(...)は、構文要素を必要な回数だけ繰り返すことができることを示します。
'Literal string' 単一引用符( ' )でCQL文内のリテラル文字を囲みます。大文字を維持するには、単一引用符を使用します。
{ key : value } マップ・コレクション。中かっこ( { } )でマップ・コレクションまたはキーと値のペアを囲みます。コロンでキーと値を区切ります。
<datatype1,datatype2> セット、リスト、マップ、またはタプル。山かっこ(< >)で、セット、リスト、マップまたはタプル内のデータ型を囲みます。データ型はコンマで区切ります。
cql_statement; CQL文の終了。セミコロン( ; )ですべてのCQL文を終了します。
[--] コマンドライン・オプションとコマンド引数は、2つのハイフン(--)。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。
' <schema> ... </schema> ' 検索CQLのみ:単一引用符( ' )でXMLスキーマ宣言全体を囲みます。
@xml_entity='xml_entity_type' 検索CQLのみ:スキーマ・ファイルおよびsolrConfigファイル内のXML要素を上書きするための実体とリテラル値を示します。
keyspace_name.table_name
検索インデックスのテーブルを指定します。テーブルがアクティブなキースペースにない場合、キースペース名は必須です。
element_path
設定のXMLパスを指定します。ピリオドで子要素を区切ります。例:
types.fieldTypes
attribute_list
角かっこで囲まれた属性値ペアのコンマ区切りリスト。以下の構文を使用します。
[@attribute_name = 'value', @attribute_name = 'value', ... ]
json_map
高度な設定。JSON形式を使用して、アナライザー・トークナイザーやフィールド型のフィルター定義などの子要素を定義します。
{ "element_name" : [ { "child_element_name" : { "child_attribute_name" : "value" } } , { "child_element_name" : { "child_attribute_name" : "value" } }, ... ], "element_name" : [ { "child_element_name" : { "child_attribute_name" : "value" } } , { "child_element_name" : { "child_attribute_name" : "value" } }, ... ], ... }
element_identifier
設定のXMLパスを指定します。特定の属性を持つ要素を見つけるには、以下の構文を使用します。
element_name[@attribute_name='value']
shortcut
構成要素の値へのショートカット。SETを使用します。
  • autoCommitTime:デフォルト値は10,000です。
  • defaultQueryField:フィールドの名前です。デフォルトは設定されていません。
    注: SETを使用して追加します。削除するには、DROPを使用します。
  • directoryFactory:directoryFactoryClassオプションの代わりに使用できます。オプションは以下のとおりです。
    • 'standard'
    • 'encrypted'
  • filterCacheLowWaterMark:デフォルトは1024です。
  • filterCacheHighWaterMark:デフォルトは2048です。
  • directoryFactoryClass:ディレクトリー係数の完全修飾名を指定します。標準および暗号化ディレクトリー係数以外のディレクトリー係数に対して、directoryFactoryオプションの代わりに使用します。
  • mergeMaxThreadCount:mergeMaxMergeCountとともに構成する必要があります。デフォルト値は、tpc_coresの数値です(この数値はcassandra.yamlで構成されています)。
  • mergeMaxMergeCount:mergeMaxThreadCountを使用して構成する必要があります。デフォルト値は
    max(max(<maxThreadCount * 2>, <num_tokens * 8>), <maxThreadCount + 5>)
    です。ここで、num_tokensは、仮想ノード(vnode)を割り当てるトークン範囲の数値です(この数値はcassandra.yamlで構成されています)。
  • ramBufferSize:デフォルトは512です。
  • realtime:デフォルトはfalseです。

EBNF

EBNF構文:
alterSearchIndex ::= 'ALTER' 'SEARCH' 'INDEX' 'CONFIG'
          'ON' tableName
          (
          ('ADD' elementPath 'WITH' json) |
          ('SET' elementPath('@' attribute)? '=' value) |
          ('DROP' elementPath('@' attribute)?) |
          )
          tableName        ::= (keyspace '.')? table
          elementPath      ::= elementName 
          ('[' '@' attributeName '=' attributeValue 
          (',' '@' attributeName '=' attributeValue)* ']')?
          ( '.' elementName ('[' '@' attributeName '=' attributeValue 
          (',' '@' attributeName '=' attributeValue)* ']')?)*
レールロード・ダイアグラム:
1. alterSearchIndex
この図はALTER SEARCH INDEX検索CQLコマンドのレールロード・ダイアグラムを示しています
2. tableName
この図はtableNameのレールロード・ダイアグラムを示しています
3. elementPath
この図はelementPathのレールロード・ダイアグラムを示しています

wiki.solrキースペースとテーブル、および指定したオプションについて検索インデックス構成を変更します。

検索インデックスの暗号化を有効にする

検索インデックスの暗号化を有効にします。
  1. 構成スキーマを変更します。
    ALTER SEARCH INDEX CONFIG ON cycling.comments 
    SET directoryFactory = 'encrypted';
  2. 保留中のスキーマでこの変更が適切であることを確認します。
    DESC PENDING SEARCH INDEX CONFIG ON cycling.comments
  3. 構成をアクティブにします。
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <config>
      <luceneMatchVersion>LUCENE_6_0_1</luceneMatchVersion>
      <dseTypeMappingVersion>2</dseTypeMappingVersion>
      <directoryFactory class="solr.EncryptedFSDirectoryFactory" name="DirectoryFactory"/>
      <indexConfig>
        <rt>false</rt>
      </indexConfig>
      <jmx/>
      <updateHandler>
        <autoSoftCommit>
          <maxTime>10000</maxTime>
        </autoSoftCommit>
      </updateHandler>
      <query>
        <filterCache class="solr.SolrFilterCache" highWaterMarkMB="2048" lowWaterMarkMB="1024"/>
        <enableLazyFieldLoading>true</enableLazyFieldLoading>
        <useColdSearcher>true</useColdSearcher>
        <maxWarmingSearchers>16</maxWarmingSearchers>
      </query>
      <requestDispatcher>
        <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048000"/>
        <httpCaching never304="true"/>
      </requestDispatcher>
      <requestHandler class="solr.SearchHandler" default="true" name="search"/>
      <requestHandler class="com.datastax.bdp.search.solr.handler.component.CqlSearchHandler" name="solr_query"/>
      <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>
    </config>
  4. 構成を適用し、インデックスをリビルドします。
    RELOAD SEARCH INDEX ON cycling.comments;

自動ソフト・コミット時間

自動ソフト・コミットの最大時間を10,000ミリ秒にするように、ショートカットを使用してインデックス構成を設定するには、以下のように入力します。
ALTER SEARCH INDEX CONFIG ON cycling.comments 
SET autoCommitTime = 10000;
保留中の変更をアクティブにします(DESCRIBE SEARCH INDEXを使用して、変更点を確認します)。
RELOAD SEARCH INDEX ON cycling.comments;

要求ハンドラー

構成要求ハンドラーを追加します
ALTER SEARCH INDEX CONFIG ON cycling.comments 
ADD requestHandler[@name='/elevate',@class='solr.SearchHandler', @startup='lazy'] 
WITH  $$ {"defaults":[{"echoParams":"explicit"}],"last-components":["elevator"]} $$;
検索インデックスを読み込みます。
RELOAD SEARCH INDEX ON cycling.comments;
これで、requestHandler要素がconfigに追加されます。
<requestHandler name="/elevate" class="solr.SearchHandler"> 
   <lst name="defaults">
      <str name="echoParams">explicit</int>
   </lst>
   <arr name="last-components">
    <str>elevator</str>
   </arr>
</requestHandler>
deletesを自動的に削除できるようにTieredMergePolicyを拡張するには、以下のように入力します。
ALTER SEARCH INDEX CONFIG ON cycling.comments 
SET indexConfig.mergePolicyFactory[@class='org.apache.solr.index.AutoExpungeDeletesTieredMergePolicyFactory'].bool[@name='mergeSingleSegments'] = true;

ALTER SEARCH INDEX CONFIG ON cycling.comments 
SET indexConfig.mergePolicyFactory[@class='org.apache.solr.index.AutoExpungeDeletesTieredMergePolicyFactory'].int[@name='maxMergedSegmentMB'] = 1005;

ALTER SEARCH INDEX CONFIG ON cycling.comments 
SET indexConfig.mergePolicyFactory[@class='org.apache.solr.index.AutoExpungeDeletesTieredMergePolicyFactory'].int[@name='forceMergeDeletesPctAllowed'] = 25;
検索インデックスを読み込みます。
RELOAD SEARCH INDEX ON cycling.comments;

自動コミット時間の変更

自動コミット時間を変更するには、ALTER SEARCH INDEX CONFIGを使用します。例を次に示します。
ALTER SEARCH INDEX CONFIG ON cycling.comments 
SET autoCommitTime = 1000;