ALTER SEARCH INDEX SCHEMA

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

検索インデックスの保留中のスキーマを変更します。

検索インデックスの管理」を参照してください。

変更をアクティブなスキーマに適用するには、RELOAD SEARCH INDEXコマンドを使用します。

注: 領域節約プロファイルは、最初に作成した検索インデックスにのみ適用されます。たとえば、spaceSavingSlowTriePrecisionなどのresource_generation_profilesを使用してインデックスを作成した後で、ALTERコマンドを使用して数値カラムをインデックスに追加した場合、新しいカラムのトライ・フィールドprecisionStepは'0’に設定されません。
制約事項: DSE Searchノードでのみ使用できるコマンドです。大きなデータセットに対して検索インデックスの管理コマンドを実行すると、CQLSHのデフォルトで指定された10分のタイムアウトよりも長くかかることがあります。必要に応じて、CQLSHクライアント・タイムアウトの値を引き上げてください。

構文

ALTER SEARCH INDEX SCHEMA ON [keyspace_name.]table_name
  ( ADD field column_name
  | ADD element_path [ attribute_list ] WITH $$ json_map $$
  | SET element_identifier = 'value'
  | DROP field field_name
  | DROP element_identifier ) ;
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
検索インデックスのテーブルを指定します。テーブルがアクティブなキースペースにない場合、キースペース名は必須です。
column_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']
ADD
新しいフィールド、またはその他の設定を保留中のスキーマに挿入します。
DROP
保留中のスキーマから、フィールドに直接対応するテーブル・カラムまたは以下の構成のいずれかを削除します。要素別の必須属性は以下のとおりです。
  • field - name属性
  • fieldType - name属性
  • dynamicField - name属性
  • copyField - sourceおよびdest
検索インデックス・フィールドの管理」を参照してください。
SET
保留中のスキーマの設定の構成を変更します。

EBNF

EBNF構文:
alterSearchIndex ::= 'ALTER' 'SEARCH' 'INDEX' 'SCHEMA'
          'ON' tableName
          (
          ('ADD' elementPath 'WITH' json) |
          ('ADD' 'FIELD' fieldName) |
          ('SET' elementPath('@' attribute)? '=' value) |
          ('DROP' elementPath('@' attribute)?) |
          ('DROP' 'FIELD' fieldName)
          )
          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つのインデックス付きフィールドに組み合わせて検索することができます。
注: ADD fields.field fieldnameの先頭要素fields.の追加は任意であり、表示上の構造のみを提供します。
ALTER SEARCH INDEX SCHEMA ON cycling.comments 
ADD fields.field[@name='fieldname', @type='StrField', @multiValued = 'false', @indexed='true'];
ALTER SEARCH INDEX SCHEMA
ON cycling.comments
SET types.fieldType[@name='TextField']@class='org.apache.solr.schema.TextField';

ALTER SEARCH INDEX SCHEMA
ON cycling.comments
SET fields.field[@name='comment']@type='TextField';
スキーマの変更を適用するには:
RELOAD SEARCH INDEX ON cycling.comments;

テーブル・カラムをインデックスに追加する

フィールド定義を自動的に作成し、必要に応じて、インデックスがまだ作成されていないフィールドにフィールド型を追加します。
ALTER SEARCH INDEX SCHEMA ON cycling.comments 
ADD FIELD record_id;
スキーマの変更を適用し、インデックスをリビルドするには:
RELOAD SEARCH INDEX ON cycling.comments;

REBUILD SEARCH INDEX ON cycling.comments;

フィールド名の変更

DSEは、カラム名とフィールド名を照合して、CQLカラムを検索インデックス・フィールドにマップします。マップされていないフィールドをコピー・フィールドに使用します。フィールドが存在しない場合は追加されます。
ALTER SEARCH INDEX SCHEMA ON cycling.comments 
SET field[@name='fieldname']@name = 'anotherFieldName';

スキーマの変更を適用するには:

スキーマの変更を適用し、インデックスをリビルドするには:
RELOAD SEARCH INDEX ON cycling.comments;

REBUILD SEARCH INDEX ON cycling.comments;

フィールド型の変更

フィールド型を、スキーマ内で既に定義されている別の型に変更します。
ALTER SEARCH INDEX SCHEMA ON cycling.comments 
SET field[@name='fieldname']@type = 'UUIDField';

スキーマの変更を適用するには:

スキーマの変更を適用し、インデックスをリビルドするには:
RELOAD SEARCH INDEX ON cycling.comments;

REBUILD SEARCH INDEX ON cycling.comments;

フィールドの削除

テーブルではなく、検索インデックスからフィールドを削除します。
ALTER SEARCH INDEX SCHEMA ON cycling.comments 
DROP field anotherFieldName;
スキーマの変更を適用し、インデックスをリビルドするには:
RELOAD SEARCH INDEX ON cycling.comments;

REBUILD SEARCH INDEX ON cycling.comments;

テキスト・フィールドの追加

テキスト・フィールドを追加するには、2つのコマンドが必要です。

ALTER SEARCH INDEX SCHEMA
ON cycling.comments
SET types.fieldType[@name='TextField']@class='org.apache.solr.schema.TextField';

ALTER SEARCH INDEX SCHEMA
ON cycling.comments
SET fields.field[@name='comment']@type='TextField';