elastics學習筆記-常用方法使用

go中elasticsearch sdk 常用基礎操作

1、創(chuàng)建客戶端

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、定義數(shù)據(jù)結構


type ParamModel struct {

Id int64 `json:"id"`

Content string `son:"content"`

.....

}

3、數(shù)據(jù)解析器

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、查詢所用數(shù)據(jù)

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查詢數(shù)據(jù)

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、更新數(shù)據(jù)

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、刪除數(shù)據(jù)

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、批量寫入數(shù)據(jù)

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)

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、數(shù)據(jù)類型轉換 https://studygolang.com/articles/10838 package m...
    蓓蓓的萬能男友閱讀 1,170評論 0 1
  • 談到docker源碼,其實網(wǎng)上有很多的源碼的分析的文章,也看過一些大牛寫的docker源碼解讀的文章,收獲很大。我...
    跨界師閱讀 1,443評論 2 3
  • consul agent 分client server client 一般部署在靠近應用的地方,甚至本機用于對應用...
    wwq2020閱讀 3,831評論 0 0
  • 1 go語言的RPC機制 RPC(Remote Procedure Call,遠程過程調用)是一種通過網(wǎng)絡從遠程計...
    中v中閱讀 2,812評論 0 1
  • 1)簡介 gRPC負載平衡的主要實現(xiàn)機制是外部負載平衡,即通過外部負載平衡器來向客戶端提供更新后的服務器列表。 g...
    Jay_Guo閱讀 13,644評論 6 22

友情鏈接更多精彩內容