Heim >Backend-Entwicklung >Golang >golang request es-Schnittstelle

golang request es-Schnittstelle

PHPz
PHPzOriginal
2023-05-10 09:04:361344Durchsuche

Mit dem Aufkommen des Big-Data-Zeitalters widmen die Menschen der Datenverarbeitung und -speicherung immer mehr Aufmerksamkeit. In vielen Anwendungsszenarien müssen Daten durchsucht, analysiert und abgefragt werden. Zu dieser Zeit entwickelte sich Elasticsearch (ES) zu einer beliebten Such- und Analysemaschine, die von vielen Unternehmen und Institutionen genutzt wurde. Wie kann bei Verwendung von ES die Interaktion mit ES über Golang implementiert werden? In diesem Artikel wird unter folgenden Aspekten erläutert, wie Sie mit Golang die ES-Schnittstelle anfordern.

1. Installieren Sie Go-Sprache und ES

Zuerst müssen Sie Go-Sprache und ES installieren. Ersteres kann von der offiziellen Website heruntergeladen und installiert werden, letzteres kann von der offiziellen Website heruntergeladen oder mit einem Container gestartet werden. In diesem Artikel verwenden wir das Docker-Image von ES, um ES zu installieren.

2. Installieren Sie die ES-Client-Bibliothek

Um uns die Verwendung von Golang für die Interaktion mit ES zu erleichtern, stellt ES einige offizielle Client-Bibliotheken zur Verfügung. Sie können den folgenden Befehl verwenden, um die Golang-Clientbibliothek von ES zu installieren:

go get github.com/elastic/go-elasticsearch/v8

Hinweis: Während der Installation müssen Sie die Version des Zweigs v8 verwenden, da diese Version unterstützt ES 7.x-Version. v8 分支的版本,因为该版本支持 ES 的 7.x 版本。

3. 连接 ES

在使用 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 集群,通过调用 Info 方法检查是否连接成功。如果连接成功,会在控制台输出 ES连接成功!。如果无法连接到 ES 集群,会在控制台输出相应的错误信息。

4. 使用 ES API

ES 提供了一系列的 API 来操作 ES 集群中的数据,包括索引操作、搜索、聚合等。在使用 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

3. Mit ES verbinden

Bevor Sie ES verwenden, müssen Sie eine Verbindung zum ES-Cluster herstellen. ES unterstützt Verbindungen über HTTP oder TCP, wobei die HTTP-Verbindung die am häufigsten verwendete Methode ist. Der Beispielcode für die Verwendung von Golang zum Herstellen einer Verbindung mit ES lautet wie folgt:

rrreee

Der obige Code erstellt das ES-Client-Verbindungsobjekt, stellt dann eine Verbindung zum ES-Cluster her und prüft, ob die Verbindung erfolgreich ist, indem er aufruft Info-Methode. Wenn die Verbindung erfolgreich ist, wird ES-Verbindung erfolgreich! . Kann keine Verbindung zum ES-Cluster hergestellt werden, wird die entsprechende Fehlermeldung auf der Konsole ausgegeben.

4. ES-API verwenden#🎜🎜##🎜🎜#ES bietet eine Reihe von APIs zum Betreiben von Daten im ES-Cluster, einschließlich Indexoperationen, Suchen, Aggregationen usw. Bei der Verwendung der API müssen Sie auf die entsprechende Anforderungsmethode, den Anforderungspfad, den Anforderungstext und andere Details achten. #🎜🎜##🎜🎜#Im Folgenden wird der Suchvorgang als Beispiel genommen. Der Beispielcode lautet wie folgt: #🎜🎜#rrreee#🎜🎜#Der obige Code erstellt das ES-Client-Verbindungsobjekt und ruft dann den Search-Methode Um einen Suchvorgang durchzuführen, müssen Sie den Indexnamen und die Suchabfrageanweisung angeben. Die Ergebnisse werden im JSON-Format zurückgegeben und relevante Suchergebnisse können durch Parsen der JSON-Daten erhalten werden. #🎜🎜##🎜🎜#Zusätzlich zu Suchvorgängen sollten Sie bei Verwendung der ES-API bei Bedarf die entsprechenden Dokumente konsultieren und entsprechende Verarbeitungen und Anpassungen basierend auf dem tatsächlichen Szenario vornehmen. #🎜🎜##🎜🎜#5. Zusammenfassung#🎜🎜##🎜🎜#In diesem Artikel wird beschrieben, wie Sie mit Golang die ES-Schnittstelle anfordern. Durch die Verbindung mit dem ES-Cluster und die Verwendung der ES-API können Sie problemlos mit ES interagieren und die entsprechende API-Aufrufmethode an die tatsächlichen Anforderungen anpassen, um Vorgänge wie das Suchen und Aggregieren von Daten im ES-Cluster auszuführen. #🎜🎜#

Das obige ist der detaillierte Inhalt vongolang request es-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Hat Golang Vererbung?Nächster Artikel:Hat Golang Vererbung?