分享
  1. 首页
  2. 文章

Golang操作elasticsearch(一)

洛杉矶银河 · · 7786 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

使用第三方包:olivere github。总结一下olivere操作ES的常用功能
说明:以下例子用到的 es address: "http://127.0.0.1:9200"

  1. 获取Es客户端

     func GetEsClient() *elastic.Client {
     file := "./eslog.log"
     logFile, _ := os.OpenFile(file, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0766) // 应该判断error,此处简略
     client,err:=elastic.NewClient(
     elastic.SetURL("http://127.0.0.1:9200/"),
     //docker
     elastic.SetSniff(false),
     elastic.SetInfoLog(log.New(logFile, "ES-INFO: ", 0)),
     elastic.SetTraceLog(log.New(logFile, "ES-TRACE: ", 0)),
     elastic.SetErrorLog(log.New(logFile, "ES-ERROR: ", 0)),
     )
     if err!=nil{
     return nil
     }
     return client
     }
    
  2. 查看某文档是否存在,给定文档ID查询

     func IsDocExists(id int,index string) bool {
     client := GetEsClient()
     defer client.Stop()
     exist,_ := client.Exists().Index(index).Id(strconv.Itoa(id)).Do(context.Background())
     if !exist{
     log.Println("ID may be incorrect! ",id)
     return false
     }
     return true
     }
    
  3. 获取文档

     func GetDoc(id int,index string)( *elastic.GetResult ,error){
     client := GetEsClient()
     defer client.Stop()
     if !IsDocExists(id,index){
     return nil,fmt.Errorf("id不存在")
     }
     esResponse,err := client.Get().Index(index).Id( strconv.Itoa(id) ).Do(context.Background())
     if err != nil {
     return nil,err
     }
     return esResponse,nil
     }
    
  4. 添加文档

     func AddDoc(id int,doc string,index string)( *elastic.IndexResponse,error){
     client := GetEsClient()
     defer client.Stop()
     if IsDocExists(id,index){
     return nil,fmt.Errorf("id不存在")
     }
     rsp ,err:=client.Index().Index(index).Id( strconv.Itoa(id) ).BodyJson(doc).Do(context.Background())
     if err!=nil{
     return nil,err
     }
     return rsp,nil
     }
    
  5. 更新文档

     func UpdateDoc(updateField *map[string]interface{},id int,index string)(*elastic.UpdateResponse,error){
     client := GetEsClient()
     defer client.Stop()
     if !IsDocExists(id,index){
     return nil,fmt.Errorf("id不存在")
     }
     rsp,err:=client.Update().Index(index).Id(strconv.Itoa(id)).Doc(updateField).Do(context.Background())
     if err != nil{
     fmt.Println(err)
     return nil,err
     }
     return rsp,nil
     }
    
  6. 删除文档

     func DeleteDoc(id int,index string)(*elastic.DeleteResponse, error){
     client := GetEsClient()
     defer client.Stop()
     rsp,err:=client.Delete().Index(index).Id(strconv.Itoa(id)).Do(context.Background())
     if err != nil{
     return nil,err
     }
     return rsp,nil
     }

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:洛杉矶银河

查看原文:Golang操作elasticsearch(一)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
7786 次点击
被以下专栏收入,发现更多相似内容
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏