Maison  >  Article  >  développement back-end  >  API de requête ponctuelle Elasticsearch dans Golang

API de requête ponctuelle Elasticsearch dans Golang

王林
王林avant
2024-02-13 15:39:21903parcourir

Golang 中的 Elasticsearch 时间点请求 API

Dans Golang, Elasticsearch est un moteur de recherche et d'analyse distribué très populaire. Il dispose de fonctions puissantes et d'un langage de requête flexible pour répondre à divers besoins de récupération de données. Parmi eux, l'API de demande de point temporel est une fonctionnalité importante d'Elasticsearch, qui nous permet de récupérer et d'agréger des données en fonction d'une plage horaire. Dans cet article, l'éditeur PHP Xinyi présentera en détail l'utilisation et les précautions de l'API de demande de point temporel Elasticsearch dans Golang pour aider les lecteurs à mieux comprendre et appliquer cette fonction.

Contenu de la question

J'essaie d'utiliser l'API ponctuelle dans Golang en utilisant la bibliothèque officielle go-elasticsearch. Je n'arrive pas à trouver de documentation expliquant comment l'utiliser.

J'ai pu créer OpenPointInTime 对象并检索 PIT id。我不知道如何处理它或将其放置在 elasticsearch.Client.Searchpostes au sein d'une fonction. Je ne trouve pas non plus d'exemple. Quelqu'un peut-il donner un exemple de base en utilisant la bibliothèque officielle.

Solution de contournement

Après avoir parcouru les problèmes résolus sur le référentiel github de la bibliothèque elasticsearch, j'ai trouvé ce fil de discussion : https://www.php.cn/link/4bdb6179647296e518bd72e62d3bf5c1

Selon ce fil de discussion, je dois obtenir l'identifiant de la fosse à partir de la réponse openpointintime et l'ajouter au corps. Cela a fonctionné pour moi :

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),
)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer