Elasticsearch学习(一)什么是ELK?相关概念是什么?在虚拟机里面安装es,Kibana

2021-03-02 14:45:03 浏览数 (1)

目录

  • 什么是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 打开虚拟机

2 开启docker

如果docker还没有开启。需要先开始docker软件 systemctl start docker 拉取Elasticsearch镜像 docker pull elasticsearch:7.6.1

=========================================== 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 执行以上的命令之后,我们可以看到返回的数据是:

代码语言:javascript复制
{
  "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

0 人点赞