2016-06-29 2 views
0

新しい2.X NESTクライアントを使用しています。その部分は重要です。なぜなら、ここで潜在的な回答に影響を与えるような大きな変化がたくさんあるからです。2.X NESTクライアントで検索応答のリクエスト本体を取得する

以前は、Glimpse Elasticsearchプラグインを使用して、NESTによって生成された基本クエリを確認しました。しかし、プラグインはもはや2.X NESTと互換性がないように見えます。結果として、私はJSONクエリを見るための回避策を見つけようとしています。ここでの問題は、リクエスト本体にアクセスするための古い方法であるresponse.RequestInformationにアクセスしてしまったということです。これは、ApiCall,CallDetails、およびDebugInformationの組み合わせに置き換えられているようです。ここで問題となるのは、これらのすべてで、ConnectionSettingsインスタンスに.DisableDirectStreaming()を追加しないと、リクエストバイト配列がElasticClientに渡されない限り、リクエストバイト配列がnullであることです。問題は、Ninjectで依存関係注入を使用していることをすべて処理していることです。そのため、コントローラアクションのようなものでは、ConnectionSettingsインスタンスへのアクセス権がありません。私はちょうど.DisableDirectStreaming()をグローバルに追加することができると思いますが、私はそれの潜在的な結果が何であるか分かりませんし、これに関する文書はぎりぎりとしていません。

ここに回答の道がありますが、私はそれを受け入れます。まず、誰かが2.Xで動作するGlimpseプラグインを取得できたら、あなたがしたことを知りたい。しかし、基本的なAPIが劇的に変化したという事実に基づいて、私の前提は、プラグインが誰かが2.Xのためにブランチするまで根本的に壊れているか、またはElasticが独自のバージョンを持っているということです。未来)。

第2に、直接ストリーミングを無効にせずにリクエスト本体にアクセスする方法がある場合、それを逃しただけです。私はそこの指導に感謝します。誰もが、私はコントローラのアクション・レベルで直接ストリーミングを無効にする方法のための任意のアイデアを持っている場合、私のNinjectの設定に影響を与えたり、グローバルに適用することなく、チャイム気軽に

第三に、。

最後に、それは素晴らしいことですElasticチームのメンバーが私に直接ストリーミングを無効にする効果とそれから生じる可能性のある問題を教えてもらえれば、グローバルに適用するかどうかを決めることができます。

答えて

2

.DisableDirectStreaming()がtrueに設定されている場合、要求バイトと応答バイトはそれぞれresponse.RequestBodyInBytesresponse.ResponseBodyInBytesを介して応答で使用できるようにバッファリングされます。

デフォルトではfalseに設定されているため、 SearchDescriptor<T>,SearchRequest<T>などは、http要求のリクエストストリームに直接シリアル化され、同様に、レスポンスタイプはレスポンスストリームからデシリアライズされます。したがって、それをtrueに設定するオーバーヘッドは、レスポンス(およびGCキックイン)の有効期間中、リクエストとレスポンスのバイトをメモリ内に保持しています。

接続設定では、アプリケーションの存続期間中に1つのインスタンスを持つことをお勧めします。シリアライズ設定は、接続設定ごとにキャッシュされ、フィールドおよびプロパティ式のキャッシュもキャッシュされます。現在のところ、要求ごとにリクエストバイトとレスポンスバイトを保持する方法はありません。つまり、アドホックイントロスペクションですが、これは便利な追加方法だと思います。私はそれに問題を追加します:)

私は個人的にGlimpseの統合に慣れているわけではありませんが、いくつかの変更のためにNEST 2.xで動作するように更新する必要があると思います。ちょうどそれを簡単に見て、変更はかなり簡単に見えます。このように見えるのは、.DisableDirectStreaming()をtrueに設定せずに、要求ストリームに書き込まれる前に要求バイトを取得するだけで済みます。

+0

NEST 5.xでは、要求ごとに直接ストリーミングを無効にすることができます.2x –

+0

にバックポートできるかどうかを調べることができますここ - https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/debug-information.html - 'SearchDescriptor'は' RequestConfiguration'を受け入れます。 –

関連する問題