目录

  • 什么是ELK
  • 功能分类
  • 为什么选择elasticsearch(技术选型)
  • 相关概念
  • 和集群相关
  • cluster
  • shards
  • replicas
  • Index(相当于表)
  • Document
  • 元数据
  • 倒排索引
  • 在虚拟机里面的docker里面安装es
  • 在虚拟机里面安装Kibana


什么是ELK

ELK是Elasticsearch、Logstash、Kibana三个软件首字母。
Elasticsearch: 全文检索工具。和之前学习的Solr功能是类似的。
Kibana:页面管理工具。可以通过Kibana的管理界面操作Elasticsearch
Logstash:日志收集的工具,通过此工具可以实现日志内容收集及格式转换。也就是将日志输入到这个里面,之后进行转换,再输出到Elasticsearch中,我们就可以在Elasticsearch中检索日志了。

功能分类

Elasticsearch具备两个主要功能:
搜索。功能和Solr类似。
分析。结合LogStash使用。

为什么选择elasticsearch(技术选型)

为了实现全文检索
Mysql也可以实现全文检索,但是国内很多的人不会选择,选择的主流是这个
如果数据库大的话,推荐使用elasticsearch。
Mysql为了达到查询快,使用索引,但是数据和索引是存放在磁盘上面,
Elasticsearch是索引在内存,数据在磁盘上面。

相关概念

和集群相关

cluster

集群。
Elasticsearch集群由一或多个节点组成,其中有一个主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。Elasticsearch的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部看Elasticsearch集群,在逻辑上是个整体,你与集群中的任何一个节点通信和与整个Elasticsearch集群通信是等价的。也就是说,主节点的存在不会产生单点安全隐患、并发访问瓶颈等问题。

shards

primary shard:代表索引的主分片,Elasticsearch可以把一个完整的索引分成多个primary shard,这样的好处是可以把一个大的索引拆分成多个分片,分布存储在不同的Elasticsearch节点上,从而形成分布式存储,并为搜索访问提供分布式服务,提高并发处理能。primary shard的数量只能在索引创建时指定,并且索引创建后不能再更改primary shard数量。

replicas

replica shard:代表索引主分片的副本,Elasticsearch可以设置多个replica shard。replica shard的作用:一是提高系统的容错性,当某个节点某个primary shard损坏或丢失时可以从副本中恢复。二是提高Elasticsearch的查询效率,Elasticsearch会自动对搜索请求进行负载均衡,将并发的搜索请求发送给合适的节点,增强并发处理能力。

Index(相当于表)

索引。相当于关系型数据库中的表。其中存储若干相似结构的Document数据。如:客户索引,订单索引,商品索引等。Elasticsearch中的索引不像数据库表格一样有强制的数据结构约束,在理论上,可以存储任意结构的数据。但了为更好的为业务提供搜索数据支撑,还是要设计合适的索引体系来存储不同的数据。

Document

文档。Elasticsearch中的最小数据单元。一个Document就是一条数据,一般使用JSON数据结构表示。每个Index下的Type中都可以存储多个Document。一个Document中可定义多个field,field就是数据字段。如:学生数据({“name”:“张三”, “age”:20, “gender”:“男”})。

元数据

在Elasticsearch中所有以“_”开头的属性都成为元数据,都有着自己特定的含义。
例如:_index:表示索引

倒排索引

对数据进行分析,抽取出数据中的词条,以词条作为key,对应数据的存储位置作为value,实现索引的存储。这种索引称为倒排索引。倒排索引是Document写入Elasticsearch时分析维护的。

传统的我们的检索是通过文章,逐个遍历找到对应关键词的位置。而倒排索引,是通过分词策略,形成了词和文章的映射关系表,这种词典+映射表 即为倒排索引。有了倒排索引,就能实现 o(1)时间复杂度的效率检索文章了,极大的提高了 检索效率。

在虚拟机里面的docker里面安装es

1 打开虚拟机

elk和rancher区别 es和elk区别_elasticsearch


2 开启docker

elk和rancher区别 es和elk区别_Elastic_02


如果docker还没有开启。需要先开始docker软件

systemctl start docker

拉取Elasticsearch镜像

docker pull elasticsearch:7.6.1

elk和rancher区别 es和elk区别_Elastic_03

===========================================
3创建并启动容器
–name 名字为es
-d 后台启动
-p 端口号。9200restful访问端口,9300为java代码访问端口
docker run --name=es -d -p 9200:9200 -p 9300:9300 elasticsearch:6.8.4

docker run --name=es -d -p 9200:9200 -p 9300:9300 elasticsearch:7.6.1

以上就安装了es,并且进行了启动

docker logs -f es

既然已经es软件启动了,那么我们看看如何连接这个软件?
curl http://localhost:9200
执行以上的命令之后,我们可以看到返回的数据是:

elk和rancher区别 es和elk区别_docker_04

{
  "name" : "pkshWK7",        当前es节点的名称
  "cluster_name" : "docker-cluster",   集群的名称
  "cluster_uuid" : "eJsstaRaQiGwa-d82NY2dw",   集群的唯一的标识
  "version" : {   里面写的是当前es版本的信息
    "number" : "6.8.4",    版本
    "build_flavor" : "default",
    "build_type" : "docker",    当前es是docker构建的
    "build_hash" : "bca0c8d",
    "build_date" : "2019-10-16T06:19:49.319352Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.2",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"     es的广告语
}

在虚拟机里面安装Kibana

已经安装了es,我们可以使用命令进行操作了,但是我们现在想要使用界面的形式进行操作,
docker pull kibana:6.8.4

2新建并启动容器
192.168.8.142 Docker所在服务器的IP
–link es:es 中第一个es是容器名,第二个es是容器别名。设置link后才能让容器互通。
docker run -it -d -e ELASTICSEARCH_URL=http://192.168.40.145:9200 --name kibana --link es:es -p 5601:5601 kibana:6.8.4

以上命令就启动了Kibana。并且Kibana连接了es

在浏览器输入 http://192.168.40.145:5601

elk和rancher区别 es和elk区别_elasticsearch_05