加关注,不迷路!
环境准备
ElasticSearch v6 集群环境
ES 第三方包
github.com/olivere/elastic 文档以及测试用例比 go-elasticsearch 丰富
github.com/elastic/go-elasticsearch
本文 olivere/elastic 包进行 es 开发。
ElasticSearch 配置读取
编写 conf.ini 配置文件,添加 elasticsearch 集群地址
[ES]
定义 EsConf 结构体
EsConf struct {
在 init 方法中,利用 goconfig 读取 confPath 参数指定的 conf.ini 配置文件路径。
func init() {
在 main 方法中读取 EsAddrs 参数值。
EsConf := &conf.EsConf{
初始化 elasticsearch 客户端实例。
EsClient, err = NewClient()
ElasticSearch 游标(Scroll)分页
查询时间需求对应 es 时间格式为:
#开始时间
初始化游标查询,设置游标每次查询 size 大小:5000 条,注意 sort 排序时,必须是 字段 + .keyword,否则查询会报错。
boolQry := elastic.NewBoolQuery()
使用 for 循环读取所有数据,直到 len(res.Hits.Hits) 大小为 0,说明 elasticsearch 查询读取完毕,停止 for 循环。
for {
输出效果:
其中使用 Scroll 游标第一次查询会产生 SrcollID 值。
DnF1ZXJ5VGhlbkZldGNoBQAAAAAABDKbFldaYi1nOUhBVF8yZHNfZkJISllSMEEAAAAAAAMrlhZMRWZNdVlNaFFiQ1pjdkFiNHBrMW1BAAAAAAAEMpwWV1piLWc5SEFUXzJkc19mQkhKWVIwQQAAAAAABDKdFldaYi1nOUhBVF8yZHNfZkJISllSMEEAAAAAAAMwQhY4YUFDNVNVNlJsRzc4NFVYRnRyZ2xB
往期精彩回顾
1.性能衰减百分之四十,服务网关和数据库还部署在虚拟机上吗?
4.利用java多线程技术往Elasticsearch导入亿级数据
Java 技术经理一枚,头条付费专栏《Spring Cloud Alibaba微服务实战match》作者,擅长微服务&分布式、SpringCloud&SpringBoot、工作流。
后台回复 1024 免费领取微服务、微信小程序、面试等视频资料。
本文分享自微信公众号 - 架构荟萃(dwooola)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。