ビッグ データ時代の到来により、人々はデータの処理とストレージにますます注目するようになり、多くのアプリケーション シナリオで、データの検索、分析、クエリが必要になります。この時点で、Elasticsearch (ES) は、多くの企業や機関で使用される人気の検索エンジンおよび分析エンジンになりました。 ESを使用する場合、Golangを介してESとの対話を実装するにはどうすればよいですか?この記事では、Golang を使用して ES インターフェースをリクエストする方法を以下の観点から紹介します。
まず、Go 言語と ES をインストールする必要があります。前者は公式サイトからダウンロードしてインストールすることができ、後者は公式サイトからダウンロードするかコンテナを利用して起動することができますが、今回はESのDockerイメージを利用してESをインストールしていきます。
Golang を使用して ES と対話しやすくするために、ES はいくつかの公式クライアント ライブラリを提供しています。次のコマンドを使用して、ES の Golang クライアント ライブラリをインストールできます:
go get github.com/elastic/go-elasticsearch/v8
注: インストールするときは、v8
ブランチのバージョンを使用する必要があります。これは、このバージョンが 7 をサポートしているためです。 ES の .x バージョン。
ES を使用する前に、ES クラスターに接続する必要があります。 ES は HTTP または TCP 経由の接続をサポートしており、HTTP 接続が最も一般的に使用される方法です。 Golang を使用して ES に接続するためのサンプル コードは次のとおりです。
package main import ( "context" "fmt" "github.com/elastic/go-elasticsearch/v8" "log" ) func main() { cfg := elasticsearch.Config{ Addresses: []string{ "http://localhost:9200", }, } es, err := elasticsearch.NewClient(cfg) if err != nil { log.Fatalf("创建ES客户端失败:%s ", err) } _, err = es.Info() if err != nil { log.Fatalf("无法连接到ES集群:%s ", err) } fmt.Println("ES连接成功!") }
上記のコードは、ES クライアント接続オブジェクトを作成し、ES クラスターに接続し、 を呼び出して接続が成功したかどうかを確認します。情報
メソッド。接続に成功すると、コンソールに「ES connection success!」と出力されます。
。 ES クラスターに接続できない場合は、対応するエラー メッセージがコンソールに出力されます。
ES は、インデックス操作、検索、集計など、ES クラスター内のデータを操作するための一連の API を提供します。 APIを使用する場合は、対応するリクエストメソッド、リクエストパス、リクエストボディなどに注意する必要があります。
以下は検索操作を例にしています。サンプル コードは次のとおりです:
package main import ( "context" "encoding/json" "fmt" "github.com/elastic/go-elasticsearch/v8" "log" "strings" ) func main() { cfg := elasticsearch.Config{ Addresses: []string{ "http://localhost:9200", }, } es, err := elasticsearch.NewClient(cfg) if err != nil { log.Fatalf("创建ES客户端失败:%s ", err) } res, err := es.Search( es.Search.WithIndex("test_index"), es.Search.WithBody(strings.NewReader(`{"query":{"match_all":{}}}`)), es.Search.WithPretty(), ) if err != nil { log.Fatalf("搜索失败:%s ", err) } defer res.Body.Close() var r map[string]interface{} if err := json.NewDecoder(res.Body).Decode(&r); err != nil { log.Fatalf("无法解析响应体:%s ", err) } fmt.Println(r) }
上記のコードは ES クライアント接続オブジェクトを作成し、# を呼び出して検索操作を実行します。 ##Search メソッド。インデックス名と検索クエリ ステートメントを指定する必要があります。結果は JSON 形式で返され、JSON データを解析することで関連する検索結果を取得できます。
以上がgolangリクエストインターフェイスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。