栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

golang操作elasticsearch详解

golang操作elasticsearch详解

golang操作elasticsearch详解
直接上代码

package main

import (
	"bytes"
	"context"
	"fmt"
	"github.com/olivere/elastic/v7"
	"log"
)

const IndexName = "test_index"

func main() {
	IsDocExists("xxx", IndexName)
}

//获取Es客户端
func GetEsClient() *elastic.Client {
	var buf bytes.Buffer
	client, err := elastic.NewClient(
		elastic.SetURL("http://127.0.0.1:9200/"),
		//docker
		elastic.SetSniff(false),
		elastic.SetInfoLog(log.New(&buf, "ES-INFO: ", 0)),
		elastic.SetTraceLog(log.New(&buf, "ES-TRACE: ", 0)),
		elastic.SetErrorLog(log.New(&buf, "ES-ERROR: ", 0)),
	)

	if err != nil {
		return nil
	}

	return client
}

//查看某文档是否存在,给定文档ID查询
func IsDocExists(id, index string) bool {
	client := GetEsClient()
	defer client.Stop()
	exist, _ := client.Exists().Index(index).Id(id).Do(context.Background())
	if !exist {
		log.Println("ID may be incorrect! ", id)
		return false
	}
	return true
}

//获取文档
func GetDoc(id, 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(id).Do(context.Background())
	if err != nil {
		return nil, err
	}

	return esResponse, nil
}

//添加文档
func AddDoc(id, 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(id).BodyJson(doc).Do(context.Background())

	if err != nil {
		return nil, err
	}

	return rsp, nil
}

//更新文档
func UpdateDoc(updateField *map[string]interface{}, id, 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(id).Doc(updateField).Do(context.Background())
	if err != nil {
		fmt.Println(err)
		return nil, err
	}

	return rsp, nil

}

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号