golang使用post方式查询elastic中多组index和id对应的日志

在云原生环境下,存储日志大多采用elastic集群。
当前需求是根据多组indexid查询日志。

elastic语句示例如下:

POST /_mget
{
  "docs": [
    {
      "_index": "index001",
      "_id": "1"
    },
    {
      "_index": "index002",
      "_id": "2"
    }
  ]
}

通常情况下我们都是采用search的方法去查询,根据已知的信息,比如说pod_namenamespaceinstancetimestamp等信息,采用的golang代码库是github.com/elastic/go-elasticsearch/v7

如果要满足上述需求,需要变更查询方法,改为Mget,经过一番尝试后,决定弃用该方式,总之就是一句话–不会!

但是问题总是要解决的,所以在全网搜索+多次试错后,终于找到了一个非常好用的方法。前提是需要变更依赖库为github.com/olivere/elastic/v7

详细代码如下:

func main() {

    //下面关于es的信息需要替换
    url := "http://10.xx.xx.xx"
    username := "username"
    password := "password"

    // 待查询数据
    indexMap := make(map[string]string,0)
    indexMap["index001"] = "1"
    indexMap["index002"] = "2"

    // 创建es客户端
    esClient, _ := elastic.NewClient(elastic.SetURL(url), elastic.SetBasicAuth(username, password))

    mgetsvc := esClient.MultiGet()

    // 增加es查询的信息
    for index, id := range scLocList {
        mgetsvc.Add(elastic.NewMultiGetItem().Index(index).Id(id))
    }

    // 执行查询
    rsp, err := mgetsvc.Do(ctx)

    logData := rsp.Docs

    fmt.Println(logData)
}

上述查询可以简单快捷的实现mget的查询,希望可以对学习使用golang查询elastic的同学有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值