2017-10-17 20 views
0

スキーマレスモードでSolrを実行しています。​​の構文で特定のフィールドのインデックスをクエリすると、そのフィールドを含むドキュメントがまだインデックスに登録されていないと、"undefined field <myfield>"エラーが発生します。スキーマレスのフィールドの照会Solrが「未定義フィールド」エラーをスローする

このような種類は、スキルレスモードの目的を無効にします。回避策はありますか?

答えて

2

Solrのスキルレスモードはプロダクション用ではないこと、新しいWebアプリケーションのプロトタイプ作成、または大量のデータを簡単に読み込んで解析することを前提にしたいが、コレクションが安定した後は、無効にする。

クエリを作成して、使用しているフィールドが実際に存在するかどうかを確認する前にSolr Schema APIを使用できます。

http://localhost:8983/solr/gettingstarted/schema/fields 

はUPDATE:あなたはSolrのにを求めている

<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,add-schema-fields"> 

:Solrのスキーマレスモードの欠点を説明し、提案

スキーマレスモードがアクティブな場合(update.autoCreateFieldsが設定されているtrue)を追加しましたあなたがインデックスを作成しているそれぞれの新しいフィールドのタイプを推測してください。では、Solrが残念ながら間違っているとどうなりますか?スキーマを手動で変更する別の方法はありません。ほとんどの場合、完全な再インデックスが必要です。

確かに、いくつかの未知の方法で新しいフィールドが更新中に到着したため、本番スキーマの変更は望ましくありません。

フィールドが動的に追加されるソリューションを使用する場合は、動的フィールドを使用することをお勧めします。だから、あなたは2つの利点があります:あなたはFIELDTYPEを決める

  1. をあなたがFIELDTYPEを知っているときに、新しいフィールド
  2. を追加した場合にのみ、myfield_str:valueのようなクエリでは、フィールドが存在しない場合でも、任意の例外をスローしません。
+0

私がやったことは何ですか?プロダクションでは、Schemress Solrの欠点は何ですか? –

+1

プロダクションでSchemaless Solrの欠点を説明しようと私の答えを更新しました。 – freedev

関連する問題