关于ELK的技术栈大家一定不陌生,EKL分别为 分布式搜索Elasticsearch、日志的收集LogStash、提供友好界面的Kibana,ELK技术栈被广泛应用在日志数据分析、实时监控等领域‘。
elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。
我们为什么要学习Elasticsearch?
看一下全球搜索技术排行:
ELasticsearch与传统数据库的搜索不同点在于ELasticsearch采用的是倒排索引,而传统数据库采用的是正向索引。
那么什么是倒排索引,什么是正向索引呢?
正向索引:正向索引是指文档ID为key,表中记录每个关键词出现的次数,查找时扫描表中的每个文档中字的信息,直到找到所有包含查询关键字的文档,每当我增加一条数据,就必须增加一个与之对应的唯一的ID
倒排索引:倒排索引正好与之相反,通过文档中的词条去搜索ID,在倒排索引中每条数据就是一个文档,文档中按照语义分成的词语叫做词条
elasticsearch是面向文档存储的,可以是数据库中的一条商品数据,一个订单信息。文档数据会被序列化为json格式后存储在 elasticsearch中。
传统数据库的结构主要为表格式数据。每一行作为当前表的一条数据。
以Mysq为例:擅长事务类型操作,可以确保数据的安全和一致性
Elasticsearch:擅长海量数据的搜索、分析、计算
因为Elasticsearch要和kibana配合使用才会有好的体验感 所以在安装的时候,最好是两个一起安装。
这里我们推荐使用docket安装 普通虚拟机安装可以参照我的这篇博客
ElasticSearch安装_金蒂-CSDN博客
1.创建网络
因为我们还需要部署 kiana容器,因此需要让es和 kiana容器互联。这里先创建一个网络
docker network create es-net
2.加载镜像:Elasticsearch的镜像大概要1G 索引尽量提前下载 然后去程序打开jar包
//下载命令
docker pull elasticsearch:7.12.1
//加载tar包命令
docker load -i es.tar #压缩包名称
3.运行docker命令 ——single-node(单点模式)启动Elasticsearch
9200端口是暴露在外的端口
9300端口是提供互联的端口
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
1.拉取镜像或者提前下载镜像
// 拉取镜像
docker pull kibana:7.12.1
//打开压缩文件
docker load -i kibana.tar
2.启动
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601 \
kibana:7.12.1
解释:
--network es-net:加入一个名为 es-netf的网络中,与 elasticsearch在同一个网络-e ELASTICSEARCH_HOSTS=HTTP://es:9200设置elasticsearch的地址,因为kiana已经与 elasticsearch在一个网络,因此可以用容器名直接访问 elasticsearch
3.访问kibana ip+端口(5601)
4.发送请求进行测试
下一篇讲解关于Elasticsearch的基本知识和使用