elastics学习笔记-常用方法使用

go中elasticsearch sdk 常用基础操作

1、创建客户端

func getCli() *es.Client{

cli :=es.SetURL("http://127.0.0.1:9200")

client, err :=es.NewClient(es.SetSniff(enabled), cli)

if err !=nil {

panic(err)

}

}

2、定义数据结构


type ParamModel struct {

Id int64 `json:"id"`

Content string `son:"content"`

.....

}

3、数据解析器

func ParserFlOrder(res *es.SearchResult) (out interface{}) {

temp :=ParamModel{}

list :=make([]ParamModel, 0)

for _, item :=range res.Each(reflect.TypeOf(temp)) {

list =append(list, item.(ParamModel))

}

return list

}

4、查询所用数据

func querySearchList(name string, page, size int, fn func(re *es.SearchResult, ) (out interface{})) (interface{}, error) {

client :=getCli()

ser := client.Search(name)

if page >0 {

ser = ser.From((page -1) * size)

}

if size >0 {

ser = ser.Size(size)

}

res, err := ser.Do(context.Background())

if err !=nil {

cfg.LogErr("err:", err)

return nil, err

}

out := fn(res)

return out, nil

}

5、通过Id查询数据

func queryById(name, id string, obj interface{}) error{

client :=getCli()

resp, err := client.Get().Index(name).Id(id).Do(context.Background())

if err != nil {

cfg.LogErr("err:", err)

return err

}

err = json.Unmarshal(resp.Source, &obj)

return err

}

6、更新数据

func updateById(name, id string, obj interface{})error {

client :=getCli()

resp, err := client.Update().Index(name).Id(id).Doc(obj).Do(context.Background())

if err !=nil {

cfg.LogErr("err:", err)

return err

}

cfg.LogInfo("resp:", resp)

return nil

}

7、删除数据

func delById(name string, idstring)error {

client :=getCli()

resp, err := client.Delete().Index(name).Id(id).Do(context.Background())

if err !=nil {

cfg.LogErr("err:", err)

}

cfg.LogInfo("resp:", resp)

return nil

}

8、批量写入数据

func addList(name string, list []ParamModel) {

client :=getCli()

bulkRequest := client.Bulk()

for _, v :=range list {

req :=es.NewBulkIndexRequest().Index(name).Id(v.Id).Doc(v)

bulkRequest = bulkRequest.Add(req)

}

bulkResponse, err := bulkRequest.Do(context.Background())

if err !=nil {

cfg.LogErr("err:", err)

}

if bulkResponse !=nil {

cfg.LogErr("err:", err)

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、数据类型转换 https://studygolang.com/articles/10838 package m...
    蓓蓓的万能男友阅读 1,170评论 0 1
  • 谈到docker源码,其实网上有很多的源码的分析的文章,也看过一些大牛写的docker源码解读的文章,收获很大。我...
    跨界师阅读 1,444评论 2 3
  • consul agent 分client server client 一般部署在靠近应用的地方,甚至本机用于对应用...
    wwq2020阅读 3,840评论 0 0
  • 1 go语言的RPC机制 RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计...
    中v中阅读 2,814评论 0 1
  • 1)简介 gRPC负载平衡的主要实现机制是外部负载平衡,即通过外部负载平衡器来向客户端提供更新后的服务器列表。 g...
    Jay_Guo阅读 13,649评论 6 22

友情链接更多精彩内容