2016-07-09 7 views
0

我々はデータインポートハンドラのApache SolrのインデックスSQLデータ

例使用してApache Solrの中に残ったところから大きなSQLデータセットのインデックスを続行するにはどのような方法があります:私は、抽出した後、行1000年でインデックス作成を停止よう は、データと処理が完了しましたSolrを停止しインデックスが更新されましたが、ここから続行します。

どうすればよいですか?

これは私のdata-config.xml

<entity name="id" query="select movie_id as 'id',title, genres from movies;"> 
    <field column="title" name="movie_name"/> 
    <field column="genres" name="genres"/> 
    <entity name="links_id" query="select imdb_id,tmdb_id from links where movie_id=${id.id};"> 
     <field name="imdb_id" column="imdb_id" /> 
     <field name="tmdb_id" column="tmdb_id" /> 
    </entity> 
    <entity name="movie_rating" query="select avg(rating),count(*) from ratings where movie_id=${id.id};"> 
     <field column="avg(rating)" name="avg_rating"/> 
     <field column="count(*)" name="total_users_rated"/> 
    </entity> 
</entity> 

答えて

0

があなたのDIH構成でSQLでLIMITステートメントを使用します。 Solrは、索引付けされた行の数と索引付けプロセスの再開の間にSQLデータベースが変更されたかどうかを知ることができないため、Solrでこれを行う自動化方法はありません。

完全インポートを呼び出すときに、設定ファイルの${}構文を使用してその値(start_at=1000またはそれに類するもの)を参照するときに、URLを介してインポートプロセスにパラメータを送信することもできます。しかし、1つまたは2つのオフの場合は、DIH構成ファイルでハードコードされた値を使用してください。

+0

実際、私はこれを行うことを考えましたが、完全なインポートでインデックスを再作成すると、前のインデックスファイルが削除されるという問題があります。 –

+0

deltaImportを使用して別のクエリを提供できますが、URLに 'clean =(default 'true')を追加すると、' clean = false'をURLに追加することもできます。索引付けを開始する前に索引をクリーンアップするかどうかを指示します。 – MatsLindh