結果セットのエクスポート

/export リクエストハンドラを使用すると、特別な ランククエリパーサーレスポンスライター を使用して、完全にソートされた結果セットを Solr からストリーミング出力できます。これらは、数百万レコードのソートとエクスポートを含むシナリオを処理するために連携するように特別に設計されています。

この機能は、ミリ秒以内にレコードの送信を開始し、結果セット全体がソートおよびエクスポートされるまで結果のストリーミングを続行するストリームソート技術を使用します。

この機能が役立つ場合としては、セッション分析、分散マージ結合、時系列ロールアップ、カーディナリティの高いフィールドの集計、完全に分散されたフィールドの折りたたみ、ソートベースの統計などがあります。

フィールド要件

ソートおよびエクスポートされるすべてのフィールドは、docValues を true に設定する必要があります。詳細については、ドキュメント値 のセクションを参照してください。

/export リクエストハンドラ

適切な構成の /export リクエストハンドラは、Solr のすぐに使用できるリクエストハンドラの 1 つです。詳細については、暗黙的リクエストハンドラ を参照してください。

このリクエストハンドラのプロパティは「不変量」として定義されているため、別の時刻(クエリ時など)に渡された他のプロパティによってオーバーライドすることはできません。

結果エクスポートのリクエスト

/export を使用して、クエリの結果セットをエクスポートするリクエストを行うことができます。

すべてのクエリには sort パラメータと fl パラメータを含める必要があります。そうでない場合、クエリはエラーを返します。フィルタクエリもサポートされています。

オプションパラメータ batchSize は、部分的な結果の内部バッファのサイズを決定します.デフォルト値は`30000`ですが、メモリ使用量を制限するために小さい値を指定するか(パフォーマンスが低下する代わりに)、エクスポートパフォーマンスを向上させるために大きい値を指定することができます(関係は線形ではなく、大きい値にしてもパフォーマンスの向上は比例しません)。

サポートされているレスポンスライターは、jsonjavabin です。下位互換性のために `wt=xsort` も入力としてサポートされていますが、`wt=xsort` は `wt=json` と同じように動作します。デフォルトの出力形式は `json` です。

インデックス付きログデータのエクスポートリクエストの例を次に示します

https://127.0.0.1:8983/solr/core_name/export?q=my-query&sort=severity+desc,timestamp+desc&fl=severity,timestamp,msg

ソート基準の指定

sort プロパティは、エクスポートされた結果セットでドキュメントをソートする方法を定義します。結果は、フィールドタイプが int、long、float、double、string の任意のフィールドでソートできます。ソートフィールドは単一値フィールドである必要があります。

ソートフィールドを追加するほど、エクスポートのパフォーマンスは低下します。ソートフィールドを読み込むための JVM 外の物理メモリが十分にある場合、パフォーマンスはソートフィールドの追加に伴って線形に低下します。そうでない場合はさらに悪化する可能性があります。

フィールドリストの指定

fl プロパティは、結果セットと共にエクスポートされるフィールドを定義します。ソート可能なフィールドタイプ(int、long、float、double、string、date、boolean)は、フィールドリストで使用できます。フィールドは単一値または複数値です。

フィールドリストにはワイルドカードパターンを使用できます(例:fl=*_i)。ワイルドカードパターンは、パターンに一致し、エクスポート可能なフィールドのリストに展開されます。フィールド要件を参照してください。

現時点では、スコアの返却はサポートされていません。

ローカルストリーミング式の指定

オプションの expr プロパティは、ドキュメントが結果セットにエクスポートされる前にローカルで処理できるようにする ストリーム式 を定義します。

式は、/export ハンドラーからの元の結果を表す特別な input() ストリームを使用する必要があります。ストリーム式の出力は、/export ハンドラーの出力になります。このストリーミング式では、&streamLocalOnly=true フラグが常に設定されます。

これらの式では、ストリーム デコレータエバリュエータ のみがサポートされています。定義済みの input() を除く ソース 式を使用すると、エラーが発生します。

/export ハンドラーでストリーム式を使用すると、返されるドキュメント数のローカルメモリ内削減により、パフォーマンスが大幅に向上する可能性があります。

上位N個の結果のみを返すために top デコレータを使用する例を次に示します。

https://127.0.0.1:8983/solr/core_name/export?q=my-query&sort=timestamp+desc,&fl=timestamp,reporter,severity&expr=top(n=2,input(),sort="timestamp+desc")

top デコレータのソート仕様は、ハンドラーパラメータのソート仕様と一致する必要があることに注意してください。)

unique デコレータを使用する例を次に示します。

https://127.0.0.1:8983/solr/core_name/export?q=my-query&sort=reporter+desc,&fl=reporter&expr=unique(input(),over="reporter")

over パラメータは、fl パラメータで要求されたフィールドのいずれかを使用する必要があることに注意してください。)

分散サポート

分散サポートについては、ストリーミング式 のセクションを参照してください。