最近想用elasticsearch来进行后台数据的存储,来达成大数量数据的高效访问和检索。希望可以达成,通过go编写后端客户端,访问elasticsearch服务,再和postgresql达成数据一致的目的。
ElasticSearch 介绍
- ElasticSearch是一项服务,也是一种存储库,可以在一台或多台电脑上同时开启多个服务来模拟多节点,每一个服务实例可以代表一个节点,数据可以进行横向查询,即通过各个实例查询到的数据都相同,以此来降低Query压力,负载均衡,一般会设置一个服务实例为master,其他的默认就是slave了,值得注意的是,query可以通过各个slave节点去查询,但是写操作(增删改)必须通过单节点操作,防脏。
- ElasticSearch有自己的增删改查DSL方式,使用ElasticSearch可以高效快捷的处理大数据的搜索和查询。可以使用Chrom的Sense插件进行DSL操作,也可以直接使用curl -x DSL命令的形式操作,对项目来说,一般推荐使用Kibana进行可视化操作。
- ElasticSearch的数据来源可以手工匹入,也可以和传统数据库同步,一般对现有的项目更新,都是使用同步的方式处理数据,没有谁会喜欢手工迁移慢慢put数据吧~
相关概念
- 集群cluster和节点node:每一个开启的服务实例,不管是单机多服务还是多机多服,每一个发起的服务实例都是一个节点node,众多的nodes共同构成集群cluster。
- index,type,document,fields:从cluster、node、index,type,document实际上就是逐级往下的对象实体,cluster表示节点集,单个node可以建立index索引,index概念类似于传统数据库的数据库database,type类似于传统数据库的表table,document表示一条记录,类比于数据库的一行数据,fields字段类似于传统数据库的列名称。
- 还有相关shards,replicas等概念,大家可以参考一下elastic百科链接,想要深入的可以关注一下elastic中文社区
elastic常用组件
elastic组件相关资料
1. Kibana
kibana介绍
2. Logstash
logstash介绍
3. Beats
Beats介绍