With the advent of the big data era, people are paying more and more attention to data processing and storage. In many application scenarios, data needs to be searched, analyzed, and queried. At this time, Elasticsearch (ES) became a popular search engine and analytics engine used by many businesses and institutions. When using ES, how to implement interaction with ES through Golang? This article will introduce how to use Golang to request the ES interface from the following aspects.
First, you need to install Go language and ES. The former can be downloaded and installed from the official website, and the latter can be downloaded from the official website or started using a container. In this article, we will use the ES Docker image to install ES.
In order to make it easier for us to use Golang to interact with ES, ES provides some official client libraries. You can use the following command to install the Golang client library of ES:
go get github.com/elastic/go-elasticsearch/v8
Note: When installing, you need to use the version of the v8
branch, because this version supports the 7.x version of ES.
Before using ES, you need to connect to the ES cluster. ES supports connections via HTTP or TCP, with HTTP connection being the most commonly used method. The sample code for connecting to ES using Golang is as follows:
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连接成功!") }
The above code creates the ES client connection object, then connects to the ES cluster, and checks whether the connection is successful by calling the Info
method. If the connection is successful, ES connection successful! will be output on the console!
. If it cannot connect to the ES cluster, the corresponding error message will be output on the console.
ES provides a series of APIs to operate data in the ES cluster, including index operations, search, aggregation, etc. When using the API, you need to pay attention to the corresponding request method, request path, request body and other details.
The following takes the search operation as an example. The sample code is as follows:
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) }
The above code creates the ES client connection object, and then performs the search operation by calling the Search
method, which requires Specify the index name and search query statement. The results will be returned in JSON format, and relevant search results can be obtained by parsing the JSON data.
In addition to search operations, when using the ES API, you should consult the corresponding documents as needed, and make corresponding processing and adjustments based on the actual scenario.
This article introduces how to use Golang to request the ES interface. By connecting to the ES cluster and using the ES API, you can easily interact with ES, and adjust the corresponding API calling method according to actual needs to achieve operations such as searching and aggregating data in the ES cluster.
The above is the detailed content of golang request es interface. For more information, please follow other related articles on the PHP Chinese website!