当前位置:   article > 正文

Go Elasticsearch 增删改查(CRUD)快速入门_go elasticsearch curd

go elasticsearch curd

在这里插入图片描述

文章目录

1.入门简介

Elasticsearch 入门简介

2.客户端库

ES 的 Go 客户端较为流行的有 Elastic 公司官方库go-elasticsearch 和第三方库 olivere/elastic,后者较为流行。

因项目中使用的是 olivere/elastic/v7,所以本文将介绍通过该库完成对 ES 的增删改查。

注意,ES 不同版本需要使用对应版本的 olivere/elastic 包,对应关系如下:

Elasticsearch version

Elastic version

Package URL

Remarks

7.x

7.0

github.com/olivere/elastic/v7

Use Go modules

6.x

6.0

github.com/olivere/elastic

Use a dependency manager

5.x

5.0

gopkg.in/olivere/elastic.v5

Actively maintained

本次使用 ES 的 7.x 的版本,所以使用 github.com/olivere/elastic/v7 作为客户端库,使用 go.mod 来管理依赖:

require(
	github.com/olivere/elastic/v7 v7.0.24
)
  • 1
  • 2
  • 3

3.创建客户端

前面铺垫了这么多基础概念,下面正式开始 Go ES 的增删改查。

在开始实战之前,先介绍一下本文代码示例要实现的功能:

  • 添加用户信息
  • 更新用户信息
  • 删除用户信息
  • 根据 ID 查询单个用户
  • 根据用户信息分页查询相关用户

在进行开发之前,需要创建一个 client,用于操作 ES。这里使用单例模式来实现。

// ES 客户端
var (
	esOnce sync.Once
	esCli  *elastic.Client
)

// GetESClient 获取 ES client
func GetESClient() *elastic.Client {
	if esCli != nil {
		return esCli
	}

	esOnce.Do(func() {
		cli, err := elastic.NewSimpleClient(
			elastic.SetURL("http://test.es.db"),    // 服务地址
			elastic.SetBasicAuth("user", "secret"), // 账号密码
			elastic.SetErrorLog(log.New(os.Stderr, "", log.LstdFlags)), 	// 设置错误日志输出
			elastic.SetInfoLog(log.New(os.Stdout, "", log.LstdFlags)),  	// 设置info日志输出
		)
		if err != nil {
			panic("new es client failed, err=" + err.Error())
		}
		esCli = cli
	})
	return esCli
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

这里创建 ES client 是使用的 NewSimpleClient() 这个方法进行实现的,当然也可以使用另外两个方法:

// NewClient creates a new client to work with Elasticsearch.
func NewClient(options ...ClientOptionFunc) (*Client, error)

// NewClientFromConfig initializes a client from a configuration
func NewClientFromConfig(cfg *config.Config) (*Client, error)
  • 1
  • 2
  • 3
  • 4
  • 5

创建时可以提供 ES 连接参数。上面列举的不全,下面给大家介绍一下。

elastic.SetURL(url) 用来设置ES服务地址,如果是本地,就是127.0.0.1:9200。支持多个地址,用逗号分隔即可
elastic.SetBasicAuth("user", "secret") 这个是基于http base auth 验证机制的账号密码
elastic.SetGzip(true) 启动 gzip 压缩
elastic.SetHealthcheckInterval(10*time.Second) 用来设置监控检查时间间隔
elastic.SetMaxRetries(5) 设置请求失败最大重试次数,v7 版本以后已被弃用
elastic.SetSniff(false) 设置是否定期检查集群(默认为true)
elastic.SetErrorLog(log.New(os.Stderr, " ", log.LstdFlags)) 设置错误日志输出
elastic.SetInfoLog(log.New(os.Stdout, "", log.LstdFlags)) 设置info日志输出
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4.index 增删改查

Go Elasticsearch index 增删改查

5.增加

Go Elasticsearch 增加快速入门

6.删除

Go Elasticsearch 删除快速入门

7.修改

Go Elasticsearch 更新快速入门

8.查询

Go Elasticsearch 查询快速入门

9.小结

本文从 ES 的基本概念讲起,然后通过包 github/olivere/elastic/v7 完成 ES 基本的增删改查,并给出对应的 RESTful API 操作语句。

ES 功能太过强大,以至于客户端接口也极其繁多,再加上缺少通俗易懂的说明文档,真地让人眼花缭乱,对初学者来说使用起来并不那么友好。

关于 ES 的搜索能力,本文并未给出过多的相关的示例,后续有机会再另起博文续更。


参考文献

github/elastic/elasticsearch
github/olivere/elastic/v7
pkg.go.dev/github.com/olivere/elastic/v7
DB-Engines Ranking
百度百科.elasticsearch
云+社区.Elasticsearch数据更新全方位解析
golang elasticsearch入门教程- 梯子教程网
golang elasticsearch 查询教程- 梯子教程网
Elasticsearch: 权威指南
go-ElasticSearch入门看这一篇就够了(一)
Golang梦工厂.go-elasticSearch 实战篇,带你学会增删改查
Elasticsearch - mappings之dynamic的三种状态
Elasticsearch Guide [7.13] ? REST APIs ? Document APIs ? ?refresh
Elasticsearch Guide [7.13] ? REST APIs ? Document APIs ? Delete by query API
Elasticsearch Guide [7.14] ? Search your data ? Retrieve selected fields from a search
Elasticsearch Guide [7.14] ? Query DSL ? Compound queries ? Boolean query
Elasticsearch Guide [8.0] ? Mapping ? Field data types

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/633578
推荐阅读
相关标签
  

闽ICP备14008679号