我正在尝试使用官方 go-elasticsearch 库在 golang 中使用时间点 api。我似乎找不到任何解释如何使用它的文档。
我已经能够创建 OpenPointInTime
对象并检索 PIT id。我不知道如何处理它或将其放置在 elasticsearch.Client.Search
函数中的位置。我也找不到例子。
谁能给出一个使用官方库的基本示例。
在浏览了elasticsearch库的github存储库上的已关闭问题后,我发现了这个问题线程:https://github.com/elastic/go-elasticsearch/issues/234
根据这个线程,我需要从 openpointintime
响应中获取 pit id 并将其添加到正文中。
这对我有用:
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), )