go-elasticsearch连接查询聚合elasticsearch

Posted 小龙在山东

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go-elasticsearch连接查询聚合elasticsearch相关的知识,希望对你有一定的参考价值。

简介

go-elasticsearch是elasticsearch官方的Go版本客户端,兼容多个版本。

查看ES版本号

package main

import (
	"context"
	"log"
	"strings"

	elasticsearch "github.com/elastic/go-elasticsearch/v6"
	"github.com/elastic/go-elasticsearch/v6/esapi"
)

func main() 
	cfg := elasticsearch.Config
		Addresses: []string
			"http://user:pass@192.168.1.1:9200",
		,
	
	es, _ := elasticsearch.NewClient(cfg)
	log.Println(elasticsearch.Version)
	res, _ := es.Info()
	defer res.Body.Close()
	log.Print(res)



查询单个文档

// 查询单个文档 GET /index/_doc/1
req := esapi.GetRequest
	Index:        "index",
	DocumentType: "_doc",
	DocumentID:   "13",

res, err := req.Do(context.Background(), es)
if err != nil 
	log.Fatalf("Error:%s", err)

log.Print(res)

查询多个文档

// 查询多个文档
req1 := esapi.MgetRequest
	Index:        "index",
	DocumentType: "_doc",
	Body:         strings.NewReader(`"docs":["_id":"111","_id":"222"]`),

res, err = req1.Do(context.Background(), es)
if err != nil 
	log.Fatalf("Error:%s", err)

log.Print(res)

搜索

// 搜索
req2 := esapi.SearchRequest
	Index: []string"index",
	Body: strings.NewReader(`"query":"match":"content":"老师"`),

res, err := req2.Do(context.Background(), es)
if err != nil 
	log.Fatalf("Error:%s", err)

log.Print(res)

聚合

// 聚合
req2 := esapi.SearchRequest
	Index: []string"index",
	Body: strings.NewReader(`
		"aggs":
			"2":
				"date_histogram":"field":"@timestamp","interval":"1d","time_zone":"Asia/Shanghai","min_doc_count":1
			, 
		"query": "bool":"must":[
			"match_all":, 
			"range": "@timestamp":"gte": 1666512528818,"lte": 1671696528818,"format": "epoch_millis"
		
		]
	`),

res, err := req2.Do(context.Background(), es)
if err != nil 
	log.Fatalf("Error:%s", err)

log.Print(res)

以上是关于go-elasticsearch连接查询聚合elasticsearch的主要内容,如果未能解决你的问题,请参考以下文章

聚合查询+联合查询+子查询

Spark 上的 Hive 不返回聚合或连接查询的结果

聚合函数,分组查询,连接查询综合样例

聚合和连接 2 个表或子查询

SQL 查询不起作用 - 聚合和连接

SQL——连接查询聚合函数开窗函数