ElasticSearch

​ ElasticSearch基于Java,是个分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash

​ Logstash基于Java,是一个开源的用于收集,分析和存储日志的工具。

Kibana

​ Kibana基于Node.JS,也是一个开源和免费的工具,Kibana可以为Logstash和ElasticSerach提供的日志分析友好的Web界面,可以汇总,分析和搜索重要数据日志。

Beats

​ Beats是elastic公司开源的一款采集系统监控数据的代理agent,是在被监控服务器上以客户端形式运行的数据收集器的统称,可以直接把数据发送给ElasticSearch或者通过Logstash发送给ElasticSearch,然后进行后续的数据分析活动。

Bests由如下组成:

  • Packetbeat:是一个网络数据包分析器,用于监控,收集网络流量信息Packetbeat嗅探服务器之间的流量,解析应用层协议,并关联到消息的处理,其支持ICMP(v4 and v6)、DNS、HTTP、MySQL、PostgreSQL、Redis、MongoDB、Memcache等协议;
  • Filebeat:用于监控、收集服务器日志文件,其已取代logstash forwarder;
  • Metricbeat:可定期获取外部系统的监控指标信息,其可以监控、收集Apache、HAProxy、MongoDB、MySQL、Nginx、PostgreSQL、Redis、System、Zookeeper等服务;
  • Winlogbeat:用于监控、收集Windows系统的日志信息;

ElasticSearch

​ ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户的全文搜索引擎,基于RESTful Web接口。ElasticSearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

单机版安装

拉取镜像

1
2
3
docker pull elasticsearch:7.2.0
docker pull mobz/elasticsearch-head:5
docker pull kibana:7.2.0

运行容器

ElasticSearch的默认端口是9200,我们把宿主环境9200端口映射到Docker容器中的9200端口,就可以访问到Docker容器中的ElasticSearch服务了,同时我们把这个容器命名为es。

1
docker run -d --restart=always --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.2.0

配置跨域

进入容器

由于要进行配置,因此需要进入容器当中修改相应的配置信息。

1
docker exec -it es /bin/bash

进行配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 显示文件
ls
结果如下:
LICENSE.txt README.textile config lib modules
NOTICE.txt bin data logs plugins

# 进入配置文件夹
cd config

# 显示文件
ls
结果如下:
elasticsearch.keystore ingest-geoip log4j2.properties roles.yml users_roles
elasticsearch.yml jvm.options role_mapping.yml users

# 修改配置文件
vi elasticsearch.yml

# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

重启容器

由于修改了配置,因此需要重启ElasticSearch容器。

1
docker restart es

运行kibana容器

1
2
#docker run -it -d -e ELASTICSEARCH_URL=http://192.168.100.10:9200 --restart=always --name kibana -p 5601:5601 kibana:7.2.0
docker run -d --restart=always --name kibana --link es:elasticsearch -p 5601:5601 kibana:7.2.0

运行Head容器

1
docker run -d --restart=always  --name es_head -p 9100:9100 mobz/elasticsearch-head:5

基本概念

索引

  • 索引(index)是ElasticSearch对逻辑数据的逻辑存储,所以它可以分为更小的部分。
  • 可以把索引看成关系型数据库的表,索引的结构是为快速有效的全文索引准备的,特别是它不存储原始值。
  • ElasticSearch可以把索引存放在一台机器上或者分散在多台服务器上,每个索引有一或多个分片(shard),每个分片可以有多个副本(replica)

文档

  • 存储在ElasticSearch中的主要实体叫文档(document)。用关系型数据库来类比的话,一个文档相当于数据库表中的一行纪录。
  • ElasticSearch和MongoDB的文档类似,都可以有不同的结构,但ElasticSearch的文档中,相同字段必须有相同类型。
  • 文档由多个字段组成,每个字段可能出现在一个文档里,这样的字段叫多值字段(multivalued)。
  • 每个字段的类型,可以是文本、数值、日期等。字段类型也可以是复杂类型,一个字段包含其他子文档或数组。

映射

  • 所有文档写进索引之前都会先进行分析,如果将输入的文本分割为词条、哪些词条又会被过滤,这种行为叫做映射(mapping)。一般由用户自己定义规则。

文档类型

  • 在ElasticSearch中,一个索引对象可以存储很多不同用途的对象。例如,一个博客应用程序可以保存和评论。
  • 每个文档可以有不同的结构。
  • 不同的文档类型不能为相同的属性设置不同的类型。例如,在同一索引中的所有文档类型中,一个叫title的字段必须有相同的类型。