スキーマ API
スキーマ API を使用すると、HTTP API を使用してスキーマの多くの要素を管理できます。
この API は、各コレクション(または、SolrCloud を実行していない場合はコア)の Solr スキーマへの読み取りおよび書き込みアクセスを提供します。すべてのスキーマ要素への読み取りアクセスがサポートされています。フィールド、動的フィールド、フィールドタイプ、および copyField ルールは、追加、削除、または置換できます。今後の Solr リリースでは、書き込みアクセスが拡張され、より多くのスキーマ要素を修正できるようになります。
スキーマ API は、最新の Solr バージョンでのデフォルトのスキーマファクトリである ManagedIndexSchemaFactory
クラスを利用します。インデックスのスキーマファクトリの選択の詳細については、スキーマファクトリの構成のセクションを参照してください。
管理されたスキーマの手動編集は推奨されません
構成例の "managed-schema.xml" という名前のファイルには、ファイルを手動で編集しないことを推奨する注意書きが含まれている場合があります。スキーマ API が存在する前は、このような編集がスキーマを変更する唯一の方法であり、ユーザーはこの方法で変更を続けることを強く望んでいるかもしれません。 これが推奨されない理由は、ここで説明するスキーマ API を後で変更に使用した場合、コアまたはコレクションがリロードされるか、スキーマ API を使用する前に Solr が再起動されない限り、スキーマの手動編集が失われる可能性があるためです。手動編集後、常にリロードまたは再起動するように注意すれば、そのような編集を行うことにまったく問題はありません。 Solr 9 より前は、この xml ファイルはファイル拡張子のない |
API では、すべての呼び出しに対して JSON または XML の 2 つの出力モードを使用できます。完全なスキーマを要求する場合、XML 形式である managed-schema.xml ファイル自体をモデルにした XML の別の出力モードがあります。
API でスキーマを変更する場合、その後インデックスが作成されたドキュメントですぐに変更を利用できるようにするために、コアのリロードが自動的に行われます。以前にインデックスが作成されたドキュメントは自動的に更新されません。変更したスキーマ要素を使用する既存のインデックスデータがある場合は、それらを再インデックスする必要があります。
スキーマの変更後に再インデックスしてください!
スキーマを変更する場合は、すべてのドキュメントを再インデックスする必要がある可能性があります。そうしないと、ドキュメントへのアクセスが失われたり、ドキュメントを適切に解釈できなかったりする可能性があります(例:フィールドタイプを置換した後)。 スキーマを変更しても、既にインデックスが作成されているドキュメントは変更されません。スキーマの変更を適用するには、ドキュメントを再インデックスする必要があります。変更後に行われたクエリと更新では、変更前には存在しなかったエラーが発生する可能性があります。インデックスを完全に削除して再構築することが、通常、このようなエラーを修正する唯一の方法です。 再インデックス作成の詳細については、再インデックス作成のセクションを参照してください。 |
このセクションのすべての例では、「techproducts」Solr の例を実行していることを前提としています
bin/solr -e techproducts
スキーマの変更
フィールド、動的フィールドルール、コピーフィールドルール、または新しいフィールドタイプを追加、削除、または置換するには、要求されたアクションを実行するための JSON 形式の一連のコマンドを含む POST リクエストを /schema/
エンドポイントに送信できます。次のコマンドがサポートされています。
-
add-field
: 指定されたパラメータで新しいフィールドを追加します。 -
delete-field
: フィールドを削除します。 -
replace-field
: 既存のフィールドを、異なる設定で置き換えます。 -
add-dynamic-field
: 指定されたパラメータで新しい動的フィールドルールを追加します。 -
delete-dynamic-field
: 動的フィールドルールを削除します。 -
replace-dynamic-field
: 既存の動的フィールドルールを、異なる設定で置き換えます。 -
add-field-type
: 指定されたパラメータで新しいフィールドタイプを追加します。 -
delete-field-type
: フィールドタイプを削除します。 -
replace-field-type
: 既存のフィールドタイプを、異なる設定で置き換えます。 -
add-copy-field
: 新しいコピーフィールドルールを追加します。 -
delete-copy-field
: コピーフィールドルールを削除します。
これらのコマンドは、個別のPOSTリクエストでも、同じPOSTリクエストでも発行できます。コマンドは、指定された順序で実行されます。
どの場合でも、レスポンスにはステータスとリクエストの処理時間が含まれますが、スキーマ全体は含まれません。
APIでスキーマを変更すると、変更が後でインデックスされるドキュメントにすぐに適用されるように、コアのリロードが自動的に行われます。以前にインデックスされたドキュメントは自動的に処理されません。変更したスキーマ要素を使用した場合は、再インデックスする必要があります。
新しいフィールドの追加
add-field
コマンドは、新しいフィールド定義をスキーマに追加します。同じ名前のフィールドが存在する場合は、エラーがスローされます。
手動でスキーマを編集してフィールドを定義する際に使用できるすべてのプロパティは、API経由で渡すことができます。これらのリクエスト属性については、「フィールド」セクションで詳しく説明しています。
たとえば、「sell_by」という名前の新しい保存済みフィールドを、タイプ「pdate」で定義するには、次のリクエストをPOSTします。
V1 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field":{
"name":"sell_by",
"type":"pdate",
"stored":true }
}' https://127.0.0.1:8983/solr/techproducts/schema
V2 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field":{
"name":"sell_by",
"type":"pdate",
"stored":true }
}' https://127.0.0.1:8983/api/collections/techproducts/schema
フィールドの削除
delete-field
コマンドは、スキーマからフィールド定義を削除します。フィールドがスキーマに存在しない場合、またはフィールドがコピーフィールドルールのソースまたは宛先である場合は、エラーがスローされます。
たとえば、「sell_by」という名前のフィールドを削除するには、次のリクエストをPOSTします。
V1 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"delete-field" : { "name":"sell_by" }
}' https://127.0.0.1:8983/solr/techproducts/schema
V2 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"delete-field" : { "name":"sell_by" }
}' https://127.0.0.1:8983/api/collections/techproducts/schema
フィールドの置換
replace-field
コマンドは、フィールドの定義を置き換えます。フィールドの完全な定義を指定する必要があることに注意してください。このコマンドは、フィールドの定義を部分的に変更しません。フィールドがスキーマに存在しない場合は、エラーがスローされます。
手動でスキーマを編集してフィールドを定義する際に使用できるすべてのプロパティは、API経由で渡すことができます。これらのリクエスト属性については、「フィールド」セクションで詳しく説明しています。
たとえば、既存のフィールド「sell_by」の定義を、タイプ「date」にして保存しないように置き換えるには、次のリクエストをPOSTします。
V1 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"replace-field":{
"name":"sell_by",
"type":"date",
"stored":false }
}' https://127.0.0.1:8983/solr/techproducts/schema
V2 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"replace-field":{
"name":"sell_by",
"type":"date",
"stored":false }
}' https://127.0.0.1:8983/api/collections/techproducts/schema
動的フィールドルールの追加
add-dynamic-field
コマンドは、新しい動的フィールドルールをスキーマに追加します。
スキーマを編集するときに使用できるすべてのプロパティは、POSTリクエストで渡すことができます。「動的フィールド」セクションには、動的フィールドルールに定義できるすべての属性の詳細が記載されています。
たとえば、末尾が「_s」で終わるすべての受信フィールドが保存され、フィールドタイプが「string」になる新しい動的フィールドルールを作成するには、次のようなリクエストをPOSTできます。
V1 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-dynamic-field":{
"name":"*_s",
"type":"string",
"stored":true }
}' https://127.0.0.1:8983/solr/techproducts/schema
V2 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-dynamic-field":{
"name":"*_s",
"type":"string",
"stored":true }
}' https://127.0.0.1:8983/api/collections/techproducts/schema
動的フィールドルールの削除
delete-dynamic-field
コマンドは、スキーマから動的フィールドルールを削除します。動的フィールドルールがスキーマに存在しない場合、またはスキーマに、この動的フィールドルールにのみ一致するターゲットまたは宛先を持つコピーフィールドルールが含まれている場合は、エラーがスローされます。
たとえば、「*_s」に一致する動的フィールドルールを削除するには、次のようなリクエストをPOSTできます。
V1 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"delete-dynamic-field":{ "name":"*_s" }
}' https://127.0.0.1:8983/solr/techproducts/schema
V2 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"delete-dynamic-field":{ "name":"*_s" }
}' https://127.0.0.1:8983/api/collections/techproducts/schema
動的フィールドルールの置換
replace-dynamic-field
コマンドは、スキーマ内の動的フィールドルールを置き換えます。動的フィールドルールの完全な定義を指定する必要があることに注意してください。このコマンドは、動的フィールドルールの定義を部分的に変更しません。動的フィールドルールがスキーマに存在しない場合は、エラーがスローされます。
スキーマを編集するときに使用できるすべてのプロパティは、POSTリクエストで渡すことができます。「動的フィールド」セクションには、動的フィールドルールに定義できるすべての属性の詳細が記載されています。
たとえば、「*_s」動的フィールドルールの定義を、フィールドタイプが「text_general」で保存されないものに置き換えるには、次のようなリクエストをPOSTできます。
V1 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"replace-dynamic-field":{
"name":"*_s",
"type":"text_general",
"stored":false }
}' https://127.0.0.1:8983/solr/techproducts/schema
V2 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"replace-dynamic-field":{
"name":"*_s",
"type":"text_general",
"stored":false }
}' https://127.0.0.1:8983/solr/techproducts/schema
新しいフィールドタイプの追加
add-field-type
コマンドは、新しいフィールドタイプをスキーマに追加します。
手動でスキーマを編集するときに使用できるすべてのフィールドタイプのプロパティは、POSTリクエストで使用できます。コマンドの構造は、名前、クラス、インデックスおよびクエリのアナライザ定義などを含む、標準のフィールドタイプ定義のJSONマッピングです。使用可能なすべてのオプションの詳細については、「フィールドタイプ定義とプロパティ」セクションで説明しています。
たとえば、「myNewTxtField」という名前の新しいフィールドタイプを作成するには、次のようにリクエストをPOSTできます。
単一分析のV1 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field-type" : {
"name":"myNewTxtField",
"class":"solr.TextField",
"positionIncrementGap":"100",
"analyzer" : {
"charFilters":[{
"name":"patternReplace",
"replacement":"$1$1",
"pattern":"([a-zA-Z])\\\\1+" }],
"tokenizer":{
"name":"whitespace" },
"filters":[{
"name":"wordDelimiter",
"preserveOriginal":"0" }]}}
}' https://127.0.0.1:8983/solr/techproducts/schema
この例では、インデックス分析とクエリ分析に適用される単一のアナライザセクションのみを定義していることに注意してください。
2つのアナライザを使用するV1 API
別々の分析を定義する場合は、上記の例のanalyzer
セクションを、indexAnalyzer
とqueryAnalyzer
の別々のセクションで置き換えます。この例のように
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field-type":{
"name":"myNewTextField",
"class":"solr.TextField",
"indexAnalyzer":{
"tokenizer":{
"name":"pathHierarchy",
"delimiter":"/" }},
"queryAnalyzer":{
"tokenizer":{
"name":"keyword" }}}
}' https://127.0.0.1:8983/solr/techproducts/schema
2つのアナライザを使用するV2 API
V2 APIで2つのアナライザを定義するには、異なるエンドポイントを使用するだけです
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field-type":{
"name":"myNewTextField",
"class":"solr.TextField",
"indexAnalyzer":{
"tokenizer":{
"name":"pathHierarchy",
"delimiter":"/" }},
"queryAnalyzer":{
"tokenizer":{
"name":"keyword" }}}
}' https://127.0.0.1:8983/api/collections/techproducts/schema
フィールドタイプの削除
delete-field-type
コマンドは、スキーマからフィールドタイプを削除します。フィールドタイプがスキーマに存在しない場合、またはスキーマ内のフィールドまたは動的フィールドルールがそのフィールドタイプを使用している場合は、エラーがスローされます。
たとえば、「myNewTxtField」という名前のフィールドタイプを削除するには、次のようにPOSTリクエストを行うことができます。
V1 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"delete-field-type":{ "name":"myNewTxtField" }
}' https://127.0.0.1:8983/solr/techproducts/schema
V2 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"delete-field-type":{ "name":"myNewTxtField" }
}' https://127.0.0.1:8983/api/collections/techproducts/schema
フィールドタイプの置換
replace-field-type
コマンドは、スキーマ内のフィールドタイプを置き換えます。フィールドタイプの完全な定義を指定する必要があることに注意してください。このコマンドは、フィールドタイプの定義を部分的に変更しません。フィールドタイプがスキーマに存在しない場合は、エラーがスローされます。
手動でスキーマを編集するときに使用できるすべてのフィールドタイプのプロパティは、POSTリクエストで使用できます。コマンドの構造は、名前、クラス、インデックスおよびクエリのアナライザ定義などを含む、標準のフィールドタイプ定義のJSONマッピングです。使用可能なすべてのオプションの詳細については、「フィールドタイプ定義とプロパティ」セクションで説明しています。
たとえば、「myNewTxtField」という名前のフィールドタイプの定義を置き換えるには、次のようにPOSTリクエストを行うことができます。
V1 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"replace-field-type":{
"name":"myNewTxtField",
"class":"solr.TextField",
"positionIncrementGap":"100",
"analyzer":{
"tokenizer":{
"name":"standard" }}}
}' https://127.0.0.1:8983/solr/techproducts/schema
V2 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"replace-field-type":{
"name":"myNewTxtField",
"class":"solr.TextField",
"positionIncrementGap":"100",
"analyzer":{
"tokenizer":{
"name":"standard" }}}
}' https://127.0.0.1:8983/api/collections/techproducts/schema
新しいコピーフィールドルールの追加
add-copy-field
コマンドは、新しいコピーフィールドルールをスキーマに追加します。
コマンドでサポートされる属性は、以下のように手動でスキーマを編集してコピーフィールドルールを作成する場合と同じです。
source
-
必須
デフォルト:なし
コピー元のフィールド。
dest
-
必須
デフォルト:なし
コピー先のフィールド、またはコピー元のフィールドがコピーされるフィールドの配列。
maxChars
-
オプション
デフォルト:なし
コピーする文字数の上限。詳細については、「コピーフィールド」セクションを参照してください。
たとえば、フィールド「shelf」を「location」フィールドと「catchall」フィールドにコピーするルールを定義するには、次のリクエストをPOSTします。
V1 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-copy-field":{
"source":"shelf",
"dest":[ "location", "catchall" ]}
}' https://127.0.0.1:8983/solr/techproducts/schema
V2 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-copy-field":{
"source":"shelf",
"dest":[ "location", "catchall" ]}
}' https://127.0.0.1:8983/api/collections/techproducts/schema
コピーフィールドルールの削除
delete-copy-field
コマンドは、スキーマからコピーフィールドルールを削除します。コピーフィールドルールがスキーマに存在しない場合は、エラーがスローされます。
このコマンドには、source
属性とdest
属性が必要です。
たとえば、フィールド「shelf」を「location」フィールドにコピーするルールを削除するには、次のリクエストをPOSTします。
V1 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"delete-copy-field":{ "source":"shelf", "dest":"location" }
}' https://127.0.0.1:8983/solr/techproducts/schema
V2 API
curl -X POST -H 'Content-type:application/json' --data-binary '{
"delete-copy-field":{ "source":"shelf", "dest":"location" }
}' https://127.0.0.1:8983/api/collections/techproducts/schema
単一POSTでの複数コマンド
1つのコマンドで1つ以上の追加リクエストを実行できます。APIはトランザクションであり、単一の呼び出しですべてのコマンドが成功するか、すべて失敗します。
コマンドは、指定された順序で実行されます。つまり、新しいフィールドタイプを作成し、同じリクエストでそのフィールドタイプを新しいフィールドで使用する場合は、フィールドタイプを作成するリクエストのセクションが、新しいフィールドを作成するセクションより前にある必要があります。同様に、コピーフィールドルールで使用されるフィールドが存在する必要があるため、フィールドを追加するリクエストは、コピーフィールドルールのソースまたは宛先としてフィールドを使用するリクエストより前にある必要があります。
複数のリクエストを行うための構文は、いくつかの方法をサポートしています。まず、次のリクエストのように、コマンドを単純に連続して作成できます。これは、新しいフィールドタイプを作成し、そのタイプを使用するフィールドを作成するリクエストです。
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field-type":{
"name":"myNewTxtField",
"class":"solr.TextField",
"positionIncrementGap":"100",
"analyzer":{
"charFilters":[{
"name":"patternReplace",
"replacement":"$1$1",
"pattern":"([a-zA-Z])\\\\1+" }],
"tokenizer":{
"name":"whitespace" },
"filters":[{
"name":"wordDelimiter",
"preserveOriginal":"0" }]}},
"add-field" : {
"name":"sell_by",
"type":"myNewTxtField",
"stored":true }
}' https://127.0.0.1:8983/solr/techproducts/schema
または、次の例のように、同じコマンドを繰り返すことができます。
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field":{
"name":"shelf",
"type":"myNewTxtField",
"stored":true },
"add-field":{
"name":"location",
"type":"myNewTxtField",
"stored":true },
"add-copy-field":{
"source":"shelf",
"dest":[ "location", "catchall" ]}
}' https://127.0.0.1:8983/solr/techproducts/schema
最後に、繰り返されるコマンドは配列として送信できます。
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field":[
{ "name":"shelf",
"type":"myNewTxtField",
"stored":true },
{ "name":"location",
"type":"myNewTxtField",
"stored":true }]
}' https://127.0.0.1:8983/solr/techproducts/schema
レプリカ間でのスキーマ変更
SolrCloudモードで実行している場合、1つのノードでスキーマに対して行われた変更は、コレクション内のすべてのレプリカに伝播されます。
リクエストにupdateTimeoutSecs
パラメータを渡して、すべてのレプリカがスキーマの更新を適用したことを確認するまで待機する秒数を設定できます。これにより、クライアントアプリケーションの堅牢性が向上し、定義された時間内にすべてのレプリカに特定のスキーマ変更が適用されていることを確認できます。
指定された時間内にすべてのレプリカで合意に達しない場合、リクエストは失敗し、エラーメッセージには、問題があったレプリカに関する情報が含まれます。ほとんどの場合、唯一のオプションは、しばらく待ってから変更を再試行することです。問題が解決しない場合は、変更の適用に問題があったレプリカのサーバーログを調査する必要があるでしょう。
updateTimeoutSecs
パラメータを指定しない場合、デフォルトの動作では、更新をZooKeeperに永続化した後、受信ノードがすぐに戻ります。他のすべてのレプリカは、更新を非同期的に適用します。したがって、タイムアウトを指定しない場合、クライアントアプリケーションは、すべてのレプリカが変更を適用したことを確認できません。
スキーマ情報の取得
次のエンドポイントを使用すると、スキーマがどのように定義されているかを読み取ることができます。スキーマ全体を取得することも、必要に応じてその一部のみを取得することもできます。
スキーマを変更するには、前のセクション「スキーマの変更」を参照してください。
スキーマ全体の取得
GET /コレクション/schema
スキーマパラメータの取得
パスパラメータ
collection
-
必須
デフォルト:なし
コレクション(またはコア)の名前。
クエリパラメータ
クエリパラメータは、「?」の後でAPIリクエストに追加する必要があります。
wt
-
オプション
デフォルト:
json
レスポンスの形式を定義します。オプションは、
json
、xml
、またはschema.xml
です。
スキーマレスポンスの取得
出力コンテンツ
出力には、リクエストされた形式(JSONまたはXML)で、すべてのフィールド、フィールドタイプ、動的ルール、コピーフィールドルールが含まれます。スキーマ名とバージョンも含まれます。
スキーマ取得の例
スキーマ全体をJSONで取得します。
curl https://127.0.0.1:8983/solr/techproducts/schema
{
"responseHeader":{
"status":0,
"QTime":5},
"schema":{
"name":"example",
"version":1.5,
"uniqueKey":"id",
"fieldTypes":[{
"name":"alphaOnlySort",
"class":"solr.TextField",
"sortMissingLast":true,
"omitNorms":true,
"analyzer":{
"tokenizer":{
"class":"solr.KeywordTokenizerFactory"},
"filters":[{
"class":"solr.LowerCaseFilterFactory"},
{
"class":"solr.TrimFilterFactory"},
{
"class":"solr.PatternReplaceFilterFactory",
"replace":"all",
"replacement":"",
"pattern":"([^a-z])"}]}}],
"fields":[{
"name":"_version_",
"type":"long",
"indexed":true,
"stored":true},
{
"name":"author",
"type":"text_general",
"indexed":true,
"stored":true},
{
"name":"cat",
"type":"string",
"multiValued":true,
"indexed":true,
"stored":true}],
"copyFields":[{
"source":"author",
"dest":"text"},
{
"source":"cat",
"dest":"text"},
{
"source":"content",
"dest":"text"},
{
"source":"author",
"dest":"author_s"}]}}
スキーマ全体をXMLで取得します。
curl https://127.0.0.1:8983/solr/techproducts/schema?wt=xml
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">5</int>
</lst>
<lst name="schema">
<str name="name">example</str>
<float name="version">1.5</float>
<str name="uniqueKey">id</str>
<arr name="fieldTypes">
<lst>
<str name="name">alphaOnlySort</str>
<str name="class">solr.TextField</str>
<bool name="sortMissingLast">true</bool>
<bool name="omitNorms">true</bool>
<lst name="analyzer">
<lst name="tokenizer">
<str name="class">solr.KeywordTokenizerFactory</str>
</lst>
<arr name="filters">
<lst>
<str name="class">solr.LowerCaseFilterFactory</str>
</lst>
<lst>
<str name="class">solr.TrimFilterFactory</str>
</lst>
<lst>
<str name="class">solr.PatternReplaceFilterFactory</str>
<str name="replace">all</str>
<str name="replacement"/>
<str name="pattern">([^a-z])</str>
</lst>
</arr>
</lst>
</lst>
...
<lst>
<str name="source">author</str>
<str name="dest">author_s</str>
</lst>
</arr>
</lst>
</response>
スキーマ全体を「schema.xml」形式で取得します。
curl https://127.0.0.1:8983/solr/techproducts/schema?wt=schema.xml
<schema name="example" version="1.5">
<uniqueKey>id</uniqueKey>
<types>
<fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.PatternReplaceFilterFactory" replace="all" replacement="" pattern="([^a-z])"/>
</analyzer>
</fieldType>
...
<copyField source="url" dest="text"/>
<copyField source="price" dest="price_c"/>
<copyField source="author" dest="author_s"/>
</schema>
フィールド一覧
すべてのフィールドのリストを取得します。
GET /collection/schema/fields
GET /collection/schema/fields/fieldname
フィールド一覧パラメータ
パスパラメータ
collection
-
必須
デフォルト:なし
コレクション(またはコア)の名前。
fieldname
-
オプション
デフォルト:なし
特定のフィールド名(リクエストを単一のフィールドに制限する場合)。
クエリパラメータ
クエリパラメータは、APIリクエストの後に「?」を追加することで指定できます。
wt
-
オプション
デフォルト:
json
レスポンスの形式を定義します。オプションは
json
またはxml
です。 fl
-
オプション
デフォルト:なし
返される1つ以上のフィールドをカンマまたはスペースで区切って指定したリスト。指定しない場合は、デフォルトですべてのフィールドが返されます。
includeDynamic
-
オプション
デフォルト:
false
true
の場合、かつfl
クエリパラメータが指定されているか、fieldname
パスパラメータが使用されている場合、一致する動的フィールドがレスポンスに含まれ、dynamicBase
プロパティで識別されます。fl
クエリパラメータもfieldname
パスパラメータも指定されていない場合、includeDynamic
クエリパラメータは無視されます。false
の場合、一致する動的フィールドは返されません。 showDefaults
-
オプション
デフォルト:
false
true
の場合、各フィールドのフィールドタイプからのすべてのデフォルトフィールドプロパティがレスポンスに含まれます(例:solr.TextField
のtokenized
)。false
の場合、明示的に指定されたフィールドプロパティのみが含まれます。
フィールド一覧レスポンス
出力には、各フィールドと各フィールドに対して定義された構成が含まれます。定義された構成はフィールドごとに異なる場合がありますが、最低限、フィールドのname
、type
、indexed
であるか、stored
であるかが含まれます。
multiValued
がtrueまたはfalse(ほぼtrueの場合が多い)として定義されている場合、それも表示されます。各パラメータの詳細については、フィールドのセクションを参照してください。
フィールド一覧の例
V1 API
https://127.0.0.1:8983/techproducts/schema/fields
V2 API
curl -X GET "https://127.0.0.1:8983/api/collections/techproducts/schema/fields"
以下の出力例は、一部のフィールドのみを表示するために切り捨てられています。
{
"fields": [
{
"indexed": true,
"name": "_version_",
"stored": true,
"type": "long"
},
{
"indexed": true,
"name": "author",
"stored": true,
"type": "text_general"
},
{
"indexed": true,
"multiValued": true,
"name": "cat",
"stored": true,
"type": "string"
},
"..."
],
"responseHeader": {
"QTime": 1,
"status": 0
}
}
動的フィールド一覧
GET /collection/schema/dynamicfields
GET /collection/schema/dynamicfields/name
動的フィールド一覧パラメータ
パスパラメータ
collection
-
必須
デフォルト:なし
コレクション(またはコア)の名前。
name
-
オプション
デフォルト:なし
動的フィールドルールの名前(リクエストを単一の動的フィールドルールに制限する場合)。
クエリパラメータ
クエリパラメータは、APIリクエストの後に「?」を追加することで指定できます。
wt
-
オプション
デフォルト:
json
レスポンスの形式を定義します。オプションは
json
またはxml
です。 showDefaults
-
オプション
デフォルト:
false
true
の場合、各動的フィールドのフィールドタイプからのすべてのデフォルトフィールドプロパティがレスポンスに含まれます(例:solr.TextField
のtokenized
)。false
の場合、明示的に指定されたフィールドプロパティのみが含まれます。
動的フィールド一覧レスポンス
出力には、各動的フィールドルールと、各ルールに対して定義された構成が含まれます。定義された構成はルールごとに異なる場合がありますが、最低限、動的フィールドのname
、type
、indexed
であるか、stored
であるかが含まれます。各パラメータの詳細については、動的フィールドのセクションを参照してください。
動的フィールド一覧の例
すべての動的フィールド宣言のリストを取得します。
V1 API
https://127.0.0.1:8983/techproducts/schema/dynamicfields
V2 API
curl -X GET "https://127.0.0.1:8983/api/collections/techproducts/schema/dynamicfields"
以下の出力例は切り捨てられています。
{
"dynamicFields": [
{
"indexed": true,
"name": "*_coordinate",
"stored": false,
"type": "tdouble"
},
{
"multiValued": true,
"name": "ignored_*",
"type": "ignored"
},
{
"name": "random_*",
"type": "random"
},
{
"indexed": true,
"multiValued": true,
"name": "attr_*",
"stored": true,
"type": "text_general"
},
{
"indexed": true,
"multiValued": true,
"name": "*_txt",
"stored": true,
"type": "text_general"
}
"..."
],
"responseHeader": {
"QTime": 1,
"status": 0
}
}
フィールドタイプ一覧
GET /collection/schema/fieldtypes
GET /collection/schema/fieldtypes/name
フィールドタイプ一覧パラメータ
パスパラメータ
collection
-
必須
デフォルト:なし
コレクション(またはコア)の名前。
name
-
オプション
デフォルト:なし
フィールドタイプの名前(リクエストを単一のフィールドタイプに制限する場合)。
クエリパラメータ
クエリパラメータは、APIリクエストの後に「?」を追加することで指定できます。
wt
-
オプション
デフォルト:
json
レスポンスの形式を定義します。オプションは
json
またはxml
です。 showDefaults
-
オプション
デフォルト:
false
true
の場合、各動的フィールドのフィールドタイプからのすべてのデフォルトフィールドプロパティがレスポンスに含まれます(例:solr.TextField
のtokenized
)。false
の場合、明示的に指定されたフィールドプロパティのみが含まれます。
フィールドタイプ一覧レスポンス
出力には、各フィールドタイプと、タイプに対して定義された構成が含まれます。定義された構成はタイプごとに異なる場合がありますが、最低限、フィールドタイプのname
とclass
が含まれます。クエリまたはインデックスのアナライザー、トークナイザー、またはフィルターが定義されている場合は、他の定義されたパラメータと共に表示されます。さまざまなタイプのフィールドを構成する方法の詳細については、フィールドタイプ定義とプロパティのセクションを参照してください。
フィールドタイプ一覧の例
すべてのフィールドタイプのリストを取得します。
V1 API
curl https://127.0.0.1:8983/solr/techproducts/schema/fieldtypes
V2 API
curl -X GET "https://127.0.0.1:8983/api/collections/techproducts/schema/fieldtypes"
以下の出力例は、リストの異なる部分からいくつかの異なるフィールドタイプを表示するために切り捨てられています。
{
"fieldTypes": [
{
"analyzer": {
"class": "solr.TokenizerChain",
"filters": [
{
"class": "solr.LowerCaseFilterFactory"
},
{
"class": "solr.TrimFilterFactory"
},
{
"class": "solr.PatternReplaceFilterFactory",
"pattern": "([^a-z])",
"replace": "all",
"replacement": ""
}
],
"tokenizer": {
"class": "solr.KeywordTokenizerFactory"
}
},
"class": "solr.TextField",
"name": "alphaOnlySort",
"omitNorms": true,
"sortMissingLast": true
},
{
"class": "solr.FloatPointField",
"name": "float",
"positionIncrementGap": "0"
}]
}
コピーフィールド一覧
GET /collection/schema/copyfields
コピーフィールド一覧パラメータ
パスパラメータ
collection
-
必須
デフォルト:なし
コレクション(またはコア)の名前。
クエリパラメータ
クエリパラメータは、APIリクエストの後に「?」を追加することで指定できます。
wt
-
オプション
デフォルト:
json
レスポンスの形式を定義します。オプションは
json
またはxml
です。 source.fl
-
オプション
デフォルト:なし
レスポンスに含める1つ以上のcopyFieldソースフィールドをカンマまたはスペースで区切って指定したリスト。他のすべてのソースフィールドを持つCopyFieldディレクティブはレスポンスから除外されます。指定しない場合は、すべてのcopyFieldが含まれます。
dest.fl
-
オプション
デフォルト:なし
レスポンスに含める1つ以上のcopyField宛先フィールドをカンマまたはスペースで区切って指定したリスト。他のすべての
dest
フィールドを持つCopyFieldディレクティブは除外されます。指定しない場合は、すべてのcopyFieldが含まれます。
コピーフィールド一覧レスポンス
出力には、schema.xml
で定義された各コピーフィールドルールのsource
とdest
(宛先)が含まれます。コピーフィールドの詳細については、コピーフィールドのセクションを参照してください。
コピーフィールド一覧の例
すべてのコピーフィールドのリストを取得します。
V1 API
curl https://127.0.0.1:8983/solr/techproducts/schema/copyfields
V2 API
curl -X GET "https://127.0.0.1:8983/api/collections/techproducts/schema/copyfields"
以下の出力例は、最初のいくつかのコピー定義に切り捨てられています。
{
"copyFields": [
{
"dest": "text",
"source": "author"
},
{
"dest": "text",
"source": "cat"
},
{
"dest": "text",
"source": "content"
},
{
"dest": "text",
"source": "content_type"
},
],
"responseHeader": {
"QTime": 3,
"status": 0
}
}
スキーマ名を表示
GET /collection/schema/name
スキーマバージョンを表示
GET /collection/schema/version
UniqueKey一覧
GET /collection/schema/uniquekey
グローバル類似度を表示
GET /collection/schema/similarity
グローバル類似度パラメータを表示
パスパラメータ
collection
-
必須
デフォルト:なし
コレクション(またはコア)の名前。
クエリパラメータ
クエリパラメータは、APIリクエストの後に「?」を追加することで指定できます。
wt
-
オプション
デフォルト:
json
レスポンスの形式を定義します。オプションは
json
またはxml
です。
グローバル類似度の例を表示
類似度の実装を取得します。
V1 API
curl https://127.0.0.1:8983/solr/techproducts/schema/similarity
V2 API
curl -X GET "https://127.0.0.1:8983/api/collections/techproducts/schema/similarity"
{
"responseHeader":{
"status":0,
"QTime":1},
"similarity":{
"class":"org.apache.solr.search.similarities.DefaultSimilarityFactory"}}
リソースデータの管理
管理されたリソースREST APIは、SolrプラグインがCRUD(作成、読み取り、更新、削除)操作をサポートする必要があるリソースを公開するためのメカニズムを提供します。スキーマでどのフィールドタイプとアナライザーが構成されているかに応じて、追加の/schema/
REST APIパスが存在する場合があります。