2017-05-04 13 views
0

私はSOLR 6.0.0を使用していますが、データインポートハンドラを使用してMySQLからSOLRへのインデックス処理を処理します。SOLRデータインポートハンドラは要求をスキップまたは無視します

私はDB-データ-config.xmlファイルにクエリの下に持って

<entity name="user" query="SELECT ID, A, B, C FROM `USER` U WHERE U.ID = '${dataimporter.request.id}' OR '' = '${dataimporter.request.id}'"> 
    <field column="A" name="A" .... 
    ....... 
</entity> 

私はIDを渡す場合は基本的には、インデックスだけでID、それ以外の場合は、意志インデックステーブル全体をでしょう。

問題は、私は頻繁に挿入、更新を持って、

です。

最初に挿入した後、レコードが更新される直後に数ミリ秒後に単一id/doc/rowのインデックスにリクエストを送信するので、同じIDのインデックスを要求します。今度はSOLRが2番目のリクエストをスキップしているように見えますが、両方のリクエストは行っても、更新されたデータはSOLRには存在しません。

これはユニークでないアイテム(同じIDではない)でも発生します。私は同時に2つまたは3つのデータインポートを要求し、第2の要求をスキップ/無視します。

私はDIHハンドラが要求を実行しているビジー状態の場合、

http://localhost:8983/solr/user/dataimport?command=full-import&verbose=false&clean=false&commit=true&optimize=false&core=user&id=1 

答えて

0

を次のクエリを送信し、HTTPメソッドでそれを要求し、あなたがそれに送信するすべての追加の要求を無視します。あなたは高い編集頻度を持って言うように、idでインデックスの再作成する最善のことを思えません

  • 、somethign時間:

    だから、あなたはどのように/ DIH、いくつかのアイデアを呼び出すについてあなたのアプローチを検討する必要がありますよりスケーラブルであるように見えます。 'lastUpdated'列を追加することができます(行が作成/更新されるときにトリガーを使用して作成されます)、Xごとに再インデックスを呼び出します(1分、5分...余裕があります)。 1つの要求が無視されてもデータが失われない場合、再索引付けされるはずの行は、次に実行されるデルタで再索引付けされます。

  • あなたがする必要があり、あなたのIDに基づいたアプローチ維持したい場合は:あなたがしながら、idを追加し続けることができますいくつかのバッファを可能に新しいもの
  • を送信する前に、以前のDIH要求が行われるまで
    • 待機\をあなたは
あなたの中に複数のIDのDIH設定できるよう
  • を待ちます
  • 関連する問題