ELK技术栈之——分布式搜索--Elasticsearch+Kibana(一)

一、背景

关于ELK的技术栈大家一定不陌生,EKL分别为 分布式搜索Elasticsearch、日志的收集LogStash、提供友好界面的Kibana,ELK技术栈被广泛应用在日志数据分析、实时监控等领域‘。

ELK技术栈之——分布式搜索--Elasticsearch+Kibana(一)_第1张图片

二、初识Elasticsearch

elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。

我们为什么要学习Elasticsearch?

看一下全球搜索技术排行:

ELK技术栈之——分布式搜索--Elasticsearch+Kibana(一)_第2张图片

三、Elasticsearch与传统数据库搜索对比

搜索方式:

ELasticsearch与传统数据库的搜索不同点在于ELasticsearch采用的是倒排索引,而传统数据库采用的是正向索引

那么什么是倒排索引,什么是正向索引呢?

正向索引:正向索引是指文档ID为key,表中记录每个关键词出现的次数,查找时扫描表中的每个文档中字的信息,直到找到所有包含查询关键字的文档,每当我增加一条数据,就必须增加一个与之对应的唯一的ID

ELK技术栈之——分布式搜索--Elasticsearch+Kibana(一)_第3张图片

倒排索引:倒排索引正好与之相反,通过文档中的词条去搜索ID,在倒排索引中每条数据就是一个文档,文档中按照语义分成的词语叫做词条

 ELK技术栈之——分布式搜索--Elasticsearch+Kibana(一)_第4张图片

 存储结构:

 elasticsearch是面向文档存储的,可以是数据库中的一条商品数据,一个订单信息。文档数据会被序列化为json格式后存储在 elasticsearch中。

ELK技术栈之——分布式搜索--Elasticsearch+Kibana(一)_第5张图片

传统数据库的结构主要为表格式数据。每一行作为当前表的一条数据。

ELK技术栈之——分布式搜索--Elasticsearch+Kibana(一)_第6张图片

 架构对比:

以Mysq为例:擅长事务类型操作,可以确保数据的安全和一致性

Elasticsearch:擅长海量数据的搜索、分析、计算

ELK技术栈之——分布式搜索--Elasticsearch+Kibana(一)_第7张图片

四、安装Elasticsearch+kibana

因为Elasticsearch要和kibana配合使用才会有好的体验感 所以在安装的时候,最好是两个一起安装。

这里我们推荐使用docket安装  普通虚拟机安装可以参照我的这篇博客

ElasticSearch安装_金蒂-CSDN博客

4.1 单点部署ES

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

4.2 单点部署Kibana

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)

ELK技术栈之——分布式搜索--Elasticsearch+Kibana(一)_第8张图片

 4.发送请求进行测试

 ELK技术栈之——分布式搜索--Elasticsearch+Kibana(一)_第9张图片

下一篇讲解关于Elasticsearch的基本知识和使用

你可能感兴趣的:(JAVA,elasticsearch,分布式,elk)