一 Elasticsearch介绍
Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”。
Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,并管理和监控堆栈。Elasticsearch 是索引、搜索和分析的地方。
Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论您拥有结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和聚合信息来发现数据中的趋势和模式。随着您的数据和查询量的增长,Elasticsearch 的分布式特性使您的部署能够随之无缝增长。
二 Elasticsearch的主要功能及应用场景
1.Elasticsearch 主要具有如下功能:
海量数据的分布式存储以及集群管理,能达到服务与数据的高可用以及系统架构的水平扩展。
近实时的数据搜索能力,能够对结构化数据、全文数据、地理位置等类型的数据进行处理和分析。
海量数据的实时分析功能和各种强大的聚合功能。
2.Elasticsearch 的主要应用场景如下:
网站搜索、代码搜索等。
日志管理、日志分析、日志安全指标监控、应用性能监控、Web 抓取舆情分析等。
利用 Elasticsearch 的高性能和分布式部署特征,可以对海量的业务订单数据进行分析和处理,还能利用 Elasticsearch 的聚合函数和分析能力统计出各种各样的数据报表。
三 Elasticsearch核心概念
cluster:代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
recovery:代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。
river:代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。
gateway:代表es索引快照的存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。
discovery.zen:代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。
Transport:代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。
四 Elasticsearch安装
1.拉取镜像
docker pull elasticsearch
2.运行命令
docker run --name elasticsearch7.9.3 -d -e ES_JAVA_OPTS="-Xmx256m -Xms256m" --net host -e "discove
3.查看是否运行
docker ps
五 Elasticsearch使用
- 为了方便同时使用ELK,新建一个目录
docker-elk
- 在docker-elk目录下新建
elasticsearch/config/elasticsearch.yml
- 在
elasticsearch.yml
,输入以下代码:
cluster.name: "cluster" network.host: 0.0.0.0 xpack.license.self_generated.type: trail xpack.security.enabled: true xpack.monitoring.collection.enabled: true
- 在docker-elk目录下建立一个docker-stack.yml,同时启动ELK
- 输入以下代码:
version: '3.3' services: elasticsearch: image: elasticsearch ports: - "9200:9200" - "9300:9300" volumes: - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearchs/config/elasticsearch.yml environment: ES_JAVA_OPTS: "-Xmx256m -Xms256m" ELASTIC_PASSWORD: imoocpwd discovery.type: single-node network.publish_host: _eth0_
- 启动命令:
docker-compose -f docker-stack.yml up -d
- 至此,Elasticsearch使用至此完成
六 最后
- 至此,go-micro微服务项目Elasticsearch使用工作就正式完成。
- 接下来就开始logstash使用的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。