ホームページ  >  記事  >  バックエンド開発  >  Orivere/elastic elasticsearch go ライブラリを使用するときに生成されたクエリをデバッグ/表示するにはどうすればよいですか?

Orivere/elastic elasticsearch go ライブラリを使用するときに生成されたクエリをデバッグ/表示するにはどうすればよいですか?

WBOY
WBOY転載
2024-02-15 09:09:081106ブラウズ

使用 olivere/elastic elasticsearch go 库时如何调试/查看生成的查询?

生成されたクエリのデバッグと表示は、olivere/elastic elasticsearch go ライブラリを使用する場合に非常に重要な手順です。開発中は、構築したクエリが正しく、期待した結果が返されることを確認する必要がよくあります。 PHP エディター Xinyi では、コードが適切に動作していることを確認するために、生成されたクエリをデバッグおよび表示するためのいくつかの方法を紹介します。開発環境でも運用環境でも、これらのヒントはコードをより深く理解し、デバッグするのに役立ちます。

質問の内容

https://github.com/olivere/elastic ライブラリが、elasticsearch サーバーに送信される実際の json 値クエリとしてどのようなクエリを生成するかを調べようとしています。

トレース ログに関するドキュメントがいくつかあります (私が使用するものを以下に示します) が、これにはクエリが含まれていないようです。

リーリー

また、ここのドキュメントにも関連するものが見つからないようです: https://pkg.go.dev/github.com/olivere/elastic?utm_source=godoc

回避策

ドキュメントによると、独自の http クライアントを提供できます:

// クライアントを取得します。ここで独自の http クライアントを提供することもできます。
クライアント、エラー:= elastic.newclient(elastic.seterrorlog(errorlog))

さて、これでドキュメントは終わりです :)...実際には、doer インターフェースを提供する必要があります。
doer インターフェイスを実装する構造体をインスタンス化し、http.request ダンプをログに記録するために http.do() を装飾しました。

免責事項: この質問の範囲に関して、これは、Docker コンテナーで実行されているエラスティック インスタンスに対して使用しているものの最小限の例にすぎません。運用環境では、安全でない TLS を実行しない、資格情報をハードコーディングしない、必要に応じて http トランスポートを構成しないなどです。 リーリー

これは出力です:

リーリー

#settracelog

も使用できるだろうと思いましたが、既知のパスを選択しました。

以上がOrivere/elastic elasticsearch go ライブラリを使用するときに生成されたクエリをデバッグ/表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。