用go查询es,要求使用4000_game_flow_all-*的所有索引,appcode等于2605,最近5分钟的数据,size等于10000
时间: 2023-03-05 16:57:19 浏览: 62
以下是使用Go语言查询 Elasticsearch 的代码,满足要求使用所有以 "4000_game_flow_all-*" 开头的索引,查询 appcode 等于 2605 的最近5分钟的数据,返回前10000条数据:
```go
package main
import (
"context"
"encoding/json"
"fmt"
"time"
"github.com/elastic/go-elasticsearch/v8"
"github.com/elastic/go-elasticsearch/v8/esapi"
)
func main() {
// 创建 Elasticsearch 客户端实例
es, err := elasticsearch.NewDefaultClient()
if err != nil {
fmt.Println("Error creating Elasticsearch client:", err)
return
}
// 设置查询条件
query := map[string]interface{}{
"query": map[string]interface{}{
"bool": map[string]interface{}{
"must": []interface{}{
map[string]interface{}{
"match": map[string]interface{}{
"appcode": 2605,
},
},
map[string]interface{}{
"range": map[string]interface{}{
"@timestamp": map[string]interface{}{
"gte": "now-5m",
},
},
},
},
},
},
"size": 10000,
}
// 执行查询请求
res, err := es.Search(
es.Search.WithContext(context.Background()),
es.Search.WithIndex("4000_game_flow_all-*"),
es.Search.WithBody(strings.NewReader(fmt.Sprintf("%v", query))),
es.Search.WithTrackTotalHits(true),
es.Search.WithPretty(),
)
if err != nil {
fmt.Println("Error executing search request:", err)
return
}
defer res.Body.Close()
// 解析查询结果
var result map[string]interface{}
err = json.NewDecoder(res.Body).Decode(&result)
if err != nil {
fmt.Println("Error parsing search result:", err)
return
}
fmt.Println(result)
}
```
需要注意的是,查询最近5分钟的数据需要使用 Elasticsearch 的时间格式,这里使用了 "now-5m" 表示当前时间减去5分钟。另外,查询结果以 JSON 格式返回,可以根据需要进行解析。