2016-06-21 5 views
0

私はスキームレスモードで連鎖されたdataimporthandlerでした。以下に示すように、config.paramを「add-unknown-fields-to-the-schema」をdataimporthandlerに追加し、すべてを設定します。 Dataimporthandlerはデータをインポートして正常に動作しますが、solrはスキーマに未知のフィールドを追加できません。既存のフィールドでのみ機能します。ここでは、リクエストに対するデータインポートハンドラの回答があります。未知のフィールドを追加するためにDataimporthandlerとスキーマレスを連結できませんでした

{ "responseHeader": { "status": 0, "QTime": 0 }, "initArgs": [ "defaults", [ "update.chain", "add-unknown-fields-to-the-schema", "config", "db-data-config.xml" ] ], "command": "status", "status": "idle", "importResponse": "", "statusMessages": { "Total Requests made to DataSource": "1", "Total Rows Fetched": "273", "Total Documents Processed": "273", "Total Documents Skipped": "0", "Full Dump Started": "2016-06-21 13:29:48", "": "Indexing completed. Added/Updated: 273 documents. Deleted 0 documents.", "Committed": "2016-06-21 13:29:49", "Time taken": "0:0:0.543" } }

あなたは私の設定が大丈夫であることがわかります。以下はsolrconfigファイルです。

<requestHandler name="/dataimport" class="solr.DataImportHandler"> 
    <lst name="defaults"> 
     <str name="update.chain">add-unknown-fields-to-the-schema</str> 
     <str name="config">db-data-config.xml</str> 
    </lst> 

私は、データベースから、未知のフィールドを追加できるようにしたいです。

答えて

1

DataImportHandlerは、スキルレスモードに先行します。列名をフィールド名に自動マップしようとすると、そのフィールドがスキーマ内に存在するかどうかを調べて、それをどのようにマップするかを知るために実装されます。そうすれば、スキーマで必要なフィールドだけを定義でき、残りのフィールドは無視されます。それは、スキーマレスモードがそれを補うことができ、またフィールド除外の代替メカニズムを提供しないことを知らない(がすべてのフィールドを受け入れることが必要な場合はがデフォルトであった)。

DIHでフィールドマッピングを明示的に定義すると、それが機能するはずです。

あなたが実際に持っているフィールドがわからない場合は、データベースコンテンツからCSV、XML、またはJSONファイルを生成し、DIHを使用せずにSolrにプッシュする方がよい場合があります。

+0

DIHにはチェーンプロセッサも含まれています。スキーマジェネレータを除いて使用する必要があります。私はそれをどこかに輸出する選択肢があることを知っていますが、それは私の必要性を足元ではありません。 –

関連する問題