スキーマ API

スキーマ API を使用すると、HTTP API を使用してスキーマの多くの要素を管理できます。

この API は、各コレクション(または、SolrCloud を実行していない場合はコア)の Solr スキーマへの読み取りおよび書き込みアクセスを提供します。すべてのスキーマ要素への読み取りアクセスがサポートされています。フィールド、動的フィールド、フィールドタイプ、および copyField ルールは、追加、削除、または置換できます。今後の Solr リリースでは、書き込みアクセスが拡張され、より多くのスキーマ要素を修正できるようになります。

スキーマ API は、最新の Solr バージョンでのデフォルトのスキーマファクトリである ManagedIndexSchemaFactory クラスを利用します。インデックスのスキーマファクトリの選択の詳細については、スキーマファクトリの構成のセクションを参照してください。

管理されたスキーマの手動編集は推奨されません

構成例の "managed-schema.xml" という名前のファイルには、ファイルを手動で編集しないことを推奨する注意書きが含まれている場合があります。スキーマ API が存在する前は、このような編集がスキーマを変更する唯一の方法であり、ユーザーはこの方法で変更を続けることを強く望んでいるかもしれません。

これが推奨されない理由は、ここで説明するスキーマ API を後で変更に使用した場合、コアまたはコレクションがリロードされるか、スキーマ API を使用する前に Solr が再起動されない限り、スキーマの手動編集が失われる可能性があるためです。手動編集後、常にリロードまたは再起動するように注意すれば、そのような編集を行うことにまったく問題はありません。

Solr 9 より前は、この xml ファイルはファイル拡張子のない managed-schema と呼ばれていました。

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セクションを、indexAnalyzerqueryAnalyzerの別々のセクションで置き換えます。この例のように

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

レスポンスの形式を定義します。オプションは、jsonxml、または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.TextFieldtokenized)。falseの場合、明示的に指定されたフィールドプロパティのみが含まれます。

フィールド一覧レスポンス

出力には、各フィールドと各フィールドに対して定義された構成が含まれます。定義された構成はフィールドごとに異なる場合がありますが、最低限、フィールドのnametypeindexedであるか、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.TextFieldtokenized)。falseの場合、明示的に指定されたフィールドプロパティのみが含まれます。

動的フィールド一覧レスポンス

出力には、各動的フィールドルールと、各ルールに対して定義された構成が含まれます。定義された構成はルールごとに異なる場合がありますが、最低限、動的フィールドのnametypeindexedであるか、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.TextFieldtokenized)。falseの場合、明示的に指定されたフィールドプロパティのみが含まれます。

フィールドタイプ一覧レスポンス

出力には、各フィールドタイプと、タイプに対して定義された構成が含まれます。定義された構成はタイプごとに異なる場合がありますが、最低限、フィールドタイプのnameclassが含まれます。クエリまたはインデックスのアナライザー、トークナイザー、またはフィルターが定義されている場合は、他の定義されたパラメータと共に表示されます。さまざまなタイプのフィールドを構成する方法の詳細については、フィールドタイプ定義とプロパティのセクションを参照してください。

フィールドタイプ一覧の例

すべてのフィールドタイプのリストを取得します。

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で定義された各コピーフィールドルールのsourcedest(宛先)が含まれます。コピーフィールドの詳細については、コピーフィールドのセクションを参照してください。

コピーフィールド一覧の例

すべてのコピーフィールドのリストを取得します。

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

スキーマパラメータを表示

パスパラメータ

collection

必須

デフォルト:なし

コレクション(またはコア)の名前。

クエリパラメータ

クエリパラメータは、APIリクエストの後に「?」を追加することで指定できます。

wt

オプション

デフォルト: json

レスポンスの形式を定義します。オプションはjsonまたはxmlです。

スキーマレスポンスを表示

出力は、スキーマに付けられた名前のみになります。

スキーマの例を表示

スキーマ名を取得します。

V1 API

curl https://127.0.0.1:8983/solr/techproducts/schema/name

V2 API

curl -X GET "https://127.0.0.1:8983/api/collections/techproducts/schema/name"
{
  "responseHeader":{
    "status":0,
    "QTime":1},
  "name":"example"}

スキーマバージョンを表示

GET /collection/schema/version

スキーマバージョンパラメータを表示

パスパラメータ

collection

必須

デフォルト:なし

コレクション(またはコア)の名前。

クエリパラメータ

クエリパラメータは、APIリクエストの後に「?」を追加することで指定できます。

wt

オプション

デフォルト: json

レスポンスの形式を定義します。オプションはjsonまたはxmlです。

スキーマバージョンレスポンスを表示

出力は、使用中のスキーマバージョンのみになります。

スキーマバージョンの例を表示

スキーマバージョンを取得します。

V1 API

curl https://127.0.0.1:8983/solr/techproducts/schema/version

V2 API

curl -X GET "https://127.0.0.1:8983/api/collections/techproducts/schema/version"
{
  "responseHeader":{
    "status":0,
    "QTime":2},
  "version":1.5}

UniqueKey一覧

GET /collection/schema/uniquekey

UniqueKey一覧パラメータ

パスパラメータ

collection

必須

デフォルト:なし

コレクション(またはコア)の名前。

クエリパラメータ

クエリパラメータは、APIリクエストの後に「?」を追加することで指定できます。

wt

オプション

デフォルト: json

レスポンスの形式を定義します。オプションはjsonまたはxmlです。

UniqueKey一覧レスポンス

出力には、インデックスのuniqueKeyとして定義されているフィールド名のみが含まれます。

UniqueKey一覧の例

uniqueKeyをリストします。

V1 API

curl https://127.0.0.1:8983/solr/techproducts/schema/uniquekey

V2 API

curl -X GET "https://127.0.0.1:8983/api/collections/techproducts/schema/uniquekey"
{
  "responseHeader":{
    "status":0,
    "QTime":2},
  "uniqueKey":"id"}

グローバル類似度を表示

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パスが存在する場合があります。