文章目录

  • 1.入门简介
  • 2.基本概念
  • 3.客户端库
  • 4.创建客户端
  • 5.index 增删改查
  • 6.增加
  • 7.删除
  • 8.修改
  • 9.查询
  • 10.小结
  • 参考文献

1.入门简介

Elasticsearch 简介

2.基本概念

Elasticsearch 基本概念

3.客户端库

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
)

4.创建客户端

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

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

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

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

// ES 客户端
var (esOnce sync.OnceesCli  *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
}

这里创建 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)

创建时可以提供 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日志输出

5.index 增删改查

Go Elasticsearch index 增删改查

6.增加

Go Elasticsearch 增加快速入门

7.删除

Go Elasticsearch 删除快速入门

8.修改

Go Elasticsearch 更新快速入门

9.查询

Go Elasticsearch 查询快速入门

10.小结

本文从 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
云+社区.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

Go Elasticsearch 快速入门相关推荐

  1. ELK之ElasticSearch快速入门

    ElasticSearch快速入门 一.简介 二.下载 三.启动 4.基本概念 5. 一.简介 官网:https://www.elastic.co/ ElasticSearch是Elastic Sta ...

  2. Elasticsearch快速入门2 - 高级查询功能

    我们在Elasticsearch快速入门1中详细介绍了ES的安装.基本概念和一些基本的REST Api请求,在这篇入门(2)中,我们继续介绍ES的高级查询功能. 为了说明ES强大的搜索功能,我们还以上 ...

  3. 尚硅谷-SpringBoot高级-检索-Elasticsearch快速入门

    前面我们安装好了ElasticSearch,我以后就简称他为ES,而一些人还不知道基本的使用,那我们接下来做一个快速入门,了解一下他的使用方法,以及一些基本概念,方便我们后来整合,那么要学习ES最好的 ...

  4. ElasticSearch快速入门

    官网地址(https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html)而且是中文的 Elastic的快速入门 1.基础 ...

  5. ElasticSearch快速入门详解(亲测好用,强烈推荐收藏)

    3.快速入门 接下来快速看下elasticsearch的使用 3.1.概念 Elasticsearch虽然是一种NoSql库,但最终的目的是存储数据.检索数据.因此很多概念与MySQL类似的. ES中 ...

  6. 京东搜索引擎技术-Elasticsearch快速入门

    一.简介 Elasticsearch是一个基于Lucence的搜索服务器.它提供了一个分布式的搜索引擎,基于restful web接口.广泛应用于云计算中,能够实时搜索,具有稳定,可靠,快速的特点. ...

  7. ElasticSearch快速入门实战

    一.ElasticSearch简介 1.简介 创始人是Shay Banon(谢巴农),它是java开发,是凯源的企业级搜索引擎,能够实现实时搜索,特点是稳定.可靠.快速,并且安装使用方便.(内置JDK ...

  8. Elasticsearch 快速入门

    安装 在安装 Elasticsearch 之前,请确保你的计算机已经安装了 Java.目前 Elasticsearch 的最新版是 5.2,需要安装 Java 8,如果你用的是老版本的 Elastic ...

  9. ElasticSearch快速入门二(Restful介绍)

    本节课从三个方便讲解 什么是restful ? API: Application Programming Interface的缩写,中文意思就是应用程序接口. ●XML: . 可扩展标记语言,是一种程 ...

最新文章

  1. 在react-native中使用redux框架
  2. 专题 11 IPC之管道
  3. (转)如何选择合适的射频模块
  4. sending data mysql slow Mysql查询非常慢的可能原因
  5. 笨方法“学习python笔记之print()函数end
  6. 数据库基础:什么是MySQL?
  7. 【ECSHOP插件】ECSHOP商品相册批量上传插件
  8. 基于51单片机的CC2541蓝牙透传模块的无线通信
  9. 点金软件测试自学,徐文明短线点金相关公式
  10. python keys方法_Robot Framework selenium操作键盘press keys方法详解(Python篇)
  11. 笔记本当服务器显示器怎么连接,笔记本当主机显示器的设置方法
  12. 敏捷项目管理的五个要素
  13. java小练习---记账软件
  14. Steinhaus-Johnson-Trotter 生成全排列算法
  15. 作为一个程序员,你真的知道如何学好编程吗?
  16. Hadoop笔记02-Hadoop-HDFS
  17. 2019.3.27个人赛
  18. jQuery.Deferred() 方法
  19. mysql 客户端SSL错误2026 (HY000)
  20. package.json文件解读

热门文章

  1. 从城市到矿山!成都睿铂与Microdrones 海外三维建模案例
  2. asp.net mvc中加入log4net记录错误日志
  3. Lucene.Net 2.3.1开发介绍 —— 二、分词(一)
  4. [OpenS-CAD]屏幕坐标转换分析
  5. DEDECMS使用SQL语句批量删除文章
  6. Flask成长笔记--在Flask中加密的方式
  7. 线程属性pthread_attr_t简介-转
  8. opengl入门6。1
  9. java反编译工具jad和jd-gui使用
  10. LeetCode 228. Summary Ranges