Heim  >  Artikel  >  Backend-Entwicklung  >  Point-in-Time-Request-API von Elasticsearch in Golang

Point-in-Time-Request-API von Elasticsearch in Golang

王林
王林nach vorne
2024-02-13 15:39:21893Durchsuche

Golang 中的 Elasticsearch 时间点请求 API

In Golang ist Elasticsearch eine sehr beliebte verteilte Such- und Analysemaschine. Es verfügt über leistungsstarke Funktionen und eine flexible Abfragesprache, um verschiedene Datenabrufanforderungen zu erfüllen. Unter anderem ist die Zeitpunktanforderungs-API eine wichtige Funktion von Elasticsearch, die es uns ermöglicht, Daten nach Zeitbereich abzurufen und zu aggregieren. In diesem Artikel stellt PHP-Redakteur Xinyi die Verwendung und Vorsichtsmaßnahmen der Elasticsearch-Zeitpunktanforderungs-API in Golang ausführlich vor, um den Lesern zu helfen, diese Funktion besser zu verstehen und anzuwenden.

Frageninhalt

Ich versuche, die Point-in-Time-API in Golang mithilfe der offiziellen go-elasticsearch-Bibliothek zu verwenden. Ich kann anscheinend keine Dokumentation finden, die erklärt, wie man es benutzt.

Ich konnte OpenPointInTime 对象并检索 PIT id。我不知道如何处理它或将其放置在 elasticsearch.Client.Search Positionen innerhalb einer Funktion erstellen. Ich kann auch kein Beispiel finden. Kann jemand anhand der offiziellen Bibliothek ein einfaches Beispiel geben?

Workaround

Nachdem ich die geschlossenen Issues im Github-Repository der Elasticsearch-Bibliothek durchsucht habe, habe ich diesen Issue-Thread gefunden: https://www.php.cn/link/4bdb6179647296e518bd72e62d3bf5c1

Laut diesem Thread muss ich die Pit-ID aus der openpointintime-Antwort abrufen und sie dem Text hinzufügen. Das hat bei mir funktioniert:

var query_buffer bytes.Buffer
body := `
    {
        "query": {
            "term": {
                "_id": "AkUN7YUB2JzVdyKtJ8bD"
            }
        },
        "pit": {
            "id":  "your pit id here", 
            "keep_alive": "3m"  
        }
    }
`
es, _ := elasticsearch.NewDefaultClient()
json.NewDecoder(&query_buffer).Decode(&body)
res, err := es.Search(
    es.Search.WithAllowPartialSearchResults(true),
    es.Search.WithBody(&query_buffer),
)

Das obige ist der detaillierte Inhalt vonPoint-in-Time-Request-API von Elasticsearch in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen