ALTER SEARCH INDEX SCHEMA
DSE Searchの検索インデックスを変更します。
検索インデックスの保留中のスキーマを変更します。
変更をアクティブなスキーマに適用するには、RELOAD SEARCH INDEXコマンドを使用します。
注: 領域節約プロファイルは、最初に作成した検索インデックスにのみ適用されます。たとえば、
spaceSavingNoTextfield
を使用してインデックスを作成した後で、ALTERコマンドを使用してテキスト・カラムをインデックスに追加した場合、フィールド型はTextField
(StrFieldでない)に設定されます。制約事項: 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 )
構文規則 | 説明 |
---|---|
大文字 | リテラル・キーワード。 |
小文字 | リテラル以外。 |
イタリック体 |
変数値。ユーザー定義値と置き換えます。 |
[] |
任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。 |
( ) |
グループ。丸かっこ(( ) )は、選択肢を含むグループを示します。丸かっこは入力しないでください。 |
| |
または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。 |
... |
繰り返し可能。省略記号(... )は、構文要素を必要な回数だけ繰り返すことができることを示します。 |
'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']
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)* ']')?)*
レールロード・ダイアグラム:
例
wiki.solrキースペースとテーブル、および指定したオプションについて検索インデックス・スキーマを変更します。
要素パスと属性リストを使用して、新しいフィールドを追加する:
テーブルに存在しないフィールドをインデックスに追加し、複数のカラムを1つのインデックス付きフィールドに組み合わせて検索することができます。
ALTER SEARCH INDEX SCHEMA ON wiki.solr ADD fields.field[@name='fieldname', @type='StrField', @multiValued = 'true', @indexed='true'];
テーブル・カラムをインデックスに追加する:
フィールド定義を自動的に作成し、必要に応じて、インデックスがまだ作成されていないフィールドにフィールド型を追加します。
ALTER SEARCH INDEX SCHEMA ON demo.health_data ADD FIELD ethnicity;
フィールド名を変更する:
DSEは、カラム名とフィールド名を照合して、CQLカラムを検索インデックス・フィールドにマップします。マップされていないフィールドをコピー・フィールドに使用します。フィールドが存在しない場合は追加されます。
ALTER SEARCH INDEX SCHEMA ON wiki.solr SET field[@name='fieldname']@name = 'anotherFieldName';
フィールド型を変更する:
ALTER SEARCH INDEX SCHEMA ON wiki.solr SET field[@name='fieldname']@type = 'StrField';
インデックスからフィールドを削除する:
ALTER SEARCH INDEX SCHEMA ON wiki.solr DROP field fieldname;
コピー・フィールドを検索インデックスに追加する:
ALTER SEARCH INDEX SCHEMA ON wiki.solr ADD copyField[@source='sourcefield',@dest='destfield'];
注: ソース・フィールドとデスティネーション・フィールドの両方を定義する必要があります。