管理されたスキーマではなくschema.xmlを使用したいので、solrconfig.xmlの以下を以下に変更しました
<schemaFactory class="ManagedIndexSchemaFactory">
<bool name="mutable">true</bool>
<str name="managedSchemaResourceName">managed-schema</str>
</schemaFactory>
に
<schemaFactory class="ClassicIndexSchemaFactory"/>
しかし、postコマンドを使用してフラットファイルにインデックスを付けようとすると、indexschemaは変更可能なエラーにはなりません。
solrconfig.xmlのAddSchemaFieldsUpdateProcessorFactory
構成からupdateRequestProcessorChain
セクションを削除します
Solrconfig.xmlのschemaFactoryオプション。これは、スキーマを「マネージドインデックススキーマ」として定義する必要があるかどうかを制御します。スキーマの変更は、スキーマAPIを介してのみ可能です。デフォルトでは、schemaFactoryが指定されていない場合、デフォルトの動作は_"ClassicIndexSchemaFactory"
_を使用することです。
ClassicIndexSchemaFactoryでは、schema.xmlファイルを使用する必要があります。このファイルは手動で編集でき、コレクションが読み込まれるときにのみ読み込まれます。この設定は、スキーマを変更するスキーマAPIメソッドを許可しません。
代わりにManagedIndexSchemaFactoryが指定されている場合、Solrはschema.xmlではなく、managedSchemaResourceName
で指定されたリソースからスキーマをロードします。
AddSchemaFieldsUpdateProcessorFactory:スキーマのフィールドまたは動的フィールドと一致しない1つ以上のフィールドが入力ドキュメントに含まれている場合、このプロセッサはフィールドをスキーマに動的に追加します。
つまり、上記のプロセスファクトリは管理スキーマに使用されます。 ManagedIndexSchemaFactoryを使用したくない場合は、updateRequestProcessorChainから削除する必要があります。
詳細については、solrコードをチェックアウトするか、_AddSchemaFieldsUpdateProcessorFactory.Java
_のソースコードを読み取ることができます__メソッドのデバッグprocessAdd(AddUpdateCommand cm)
を使用すると、同じことを行うのに役立ちます。
少なくともSolr 7.2では、コメントが示すようにsolrconfig.xmlのupdateRequestProcessorChain定義でpdate.autoCreateFieldsをfalseに切り替えるだけで済みます。
<!-- The update.autoCreateFields property can be turned to false to disable schemaless mode -->
<updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:false}"
processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date,add-schema-fields">
<processor class="solr.LogUpdateProcessorFactory"/>
<processor class="solr.DistributedUpdateProcessorFactory"/>
<processor class="solr.RunUpdateProcessorFactory"/>
</updateRequestProcessorChain>
それはうまくいきました、そして今私はかなりのエラーメッセージだけを受け取っています
http:// localhost:8983/solr のサーバーからのエラー:エラー:[doc = urn:nbn:cz:tst01-000001]不明なフィールド 'title'
schema.xmlで静的なアンマネージスキーマを調整しているため。
Solrconfig.xmlでautoCreateFields
をfalseに更新します。
${update.autoCreateFields:false}
solrconfig.xml
ファイルを編集する代わりにこれを行う別の方法は、update.autoCreateFields=false
値をcore.properties
ファイルに追加することです。
SOLR 7.7.2の場合
UpdateRequestProcessorChainから「add-schema-field」を削除します。
<updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:true}"
processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date">
<processor class="solr.LogUpdateProcessorFactory"/>
<processor class="solr.DistributedUpdateProcessorFactory"/>
<processor class="solr.RunUpdateProcessorFactory"/>
</updateRequestProcessorChain>
この投稿が古いことに気づきましたが、jsonファイルをインポートするときに、今日同じ動作に遭遇しました。問題は、.jsonが適切に形成されていないことでした。ファイルの上部と下部の[](角括弧)とオブジェクト間の「、」(コンマ)が欠落していました。 http://jslint.com/ を使用してファイルを検証しました。これらの変更を行うと、エラーは解決しました。
注:これらは私のファイルが適切に形成されないようにする問題でした。私はあなたがあなたのファイルが持っているかもしれないどんな問題も除外するためにあなたがあなたのデータをあるタイプのバリデーターを通して実行することを勧めます。
これがお役に立てば幸いです。