コンテンツストリーム

コンテンツストリームとは、Solr へのリクエストとともに渡されるバルクデータのことです。

パスベースの URL を使用して Solr RequestHandler にアクセスすると、リクエストのパラメータを含む SolrQueryRequest オブジェクトには、リクエストのバルクデータを含む ContentStream のリストも含まれる場合があります。(SolrQueryRequest という名前は少し誤解を招きやすいかもしれません。クエリリクエストであろうと更新リクエストであろうと、すべてのリクエストに関与します。)

コンテンツストリームのソース

現在、リクエストハンドラはさまざまな方法でコンテンツストリームを取得できます。

  • マルチパートファイルアップロードの場合、各ファイルはストリームとして渡されます。

  • content-type が application/x-www-form-urlencoded ではない POST リクエストの場合、生の POST ボディはストリームとして渡されます。POST ボディ全体がパラメータとして解析され、Solr パラメータに含まれます。

  • パラメータ stream.body の内容は、ストリームとして渡されます。SOLR_ENABLE_STREAM_BODY=true が必要です。

  • stream.url および stream.file パラメータは、解決/取得され、ストリームとして渡されます。SOLR_ENABLE_REMOTE_STREAMING=true が必要です。

デフォルトでは、curl は contentType="application/x-www-form-urlencoded" ヘッダーを送信します。SolrContentHeader コンテンツストリームをテストする必要がある場合は、curl の -H フラグでコンテンツタイプを設定する必要があります。

リモートストリーミング

リモートストリーミングを使用すると、URL の内容をストリームとして特定の Solr RequestHandler に送信できます。リモートストリーミングを使用して、リモートファイルまたはローカルファイルを更新プラグインに送信できます。

リモートストリーミングはデフォルトで無効になっています。信頼できないリモートクライアントとの間にセキュリティを追加せずに、本番環境で有効にすることはお勧めしません。

リモートストリーミングを使用する場合、これにより誰でも任意の URL またはローカルファイルにリクエストを送信できることに注意してください。また、DumpRequestHandler を使用すると、誰でも Solr がアクセスできるものを表示できます。

この環境変数を使用して有効にします。SOLR_ENABLE_REMOTE_STREAMING=true

データのソースは gzip を使用して圧縮でき、Solr は通常これを検出します。検出は、Content-Encoding: gzip HTTP ヘッダーの存在、またはファイルが .gz または .gzip で終わるかどうかに基づきます。Gzip は stream.body には適用されません。

リクエストのデバッグ

暗黙の "dump" RequestHandler (「暗黙のリクエストハンドラ」を参照) は、指定されたライタータイプ wt を使用して、Solr QueryRequest の内容を出力するだけです。これは、RequestHandlers で利用可能なストリームを理解するのに役立つ便利なツールです。