Elasticsearch是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch在Apache Lucene的基础上开发而成,其以其简单的rest风格API、分布式特性、速度和可扩展性而闻名,是Elastic Stack的核心组件;
Elastic stack是适用于数据采集、充实、存储、分析和可视化的一组开源工具,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便
Elasticsearch的底层是开源库Lucene,但是,我们没法直接用Lucene,必须自己写代码去调用它的接口。Elasticsearch是Lucene的封装,提供了Rest Api的操作接口,开箱即用
详情参看:https://www.elastic.co/cn/what-is/elasticsearch
1)官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
2)官方中文:https://www.elastic.co/guide/cn/elasticsearch/guide/current/foreword_id.html
3)社区中文:http://doc.codingdict.com/elasticsearch/0/
应用程序搜索
网站搜索
企业搜搜
日志处理和分析
基础设施指标和容器监测
应用程序性能监测
地理空间数据分析和可视化
安全分析
业务分析
动词,相当于MySQL中的insert
名称,相当于MySQL中的Database
在Index(索引)中,可以定义一个或多个类型。类似MySQL中的table,每一种类型的数据放在一起
保存在某个索引(Index)下,某种类型(Type)的一个数据(Document),文档是JSON格式的,Document就像是MySQL中的某个Table里面的内容
用途表示,如图:
ElasticSearch能够从海量的数据中查询到数据,得益于它的倒排索引
sudo docker pull elasticsearch:7.4.2
该命令类似于安装MySQL服务器,用于存储和检索数据
sudo docker pull kibana:7.4.2
该命令类似于安装mysql客户端,例如:SQLyog,用于可视化检索数据
查看安装的镜像,如图:
安装完成之后,查看虚拟机还有多少内存,如图:
1)创建配置文件目录
mkdir -p /mydata/elasticsearch/config
给虚拟机创建一个自己的目录叫/mydata/elasticsearch/config,用于挂载ElasticSearch的配置文件,这样我们修改这里的配置文件信息就可以修改掉docker容器中的配置信息
2)创建数据文件目录
mkdir -p /mydata/elasticsearch/data
给虚拟机创建一个自己的目录叫/mydata/elasticsearch/data,用于将ElasticSearch的数据信息挂载到外部的虚拟机上的/mydata/elasticsearch/data上
3)定义配置映射
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
写了一个配置http.host: 0.0.0.0,代表es可以被远程的任何机器进行访问,然后将这个配置内容写入到 /mydata/elasticsearch/config/elasticsearch.yml文件中
如图:
注意:
4)创建实例
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64 -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
如图所示:运行成功会生成一个docker的唯一序列号
参数解释:
4.1 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
docker run 表示启动docker容器
--name elasticsearch 表示给容器起一个名字,名字叫做elasticsearch
-p 表示暴露端口
-p 9200:9200 -p 9300:9300 表示暴露两个接口9200和9300,9200是调用REST API的接口 9300是es在分布式集群状态下节点之间的通信端口
\ 斜杠表示换行
该配置的意思是,启动docker容器,该容器名字叫做elasticsearch并暴露两个端口9200和9300
4.2 -e "discovery.type=single-node"
-e 表示指定一个参数,discovery.type-single-none 表示该es以单节点运行
4.3 -e ES_JAVA_OPTS="-Xms64 -Xmx128m"
ES_JAVA_OPTS 设置es内存,初始值为64M,最大值为128M。如果不设置,那么es一起动就占用全部内存,整个虚拟机就会卡死
4.4 -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
-v 表进行挂载,这句话的意思是将容器中的/usr/share/elasticsearch/config/elasticsearch.yml配置文件与外部虚拟机的/mydata/elasticsearch/config/elasticsearch.yml进行一一关联,这样我们修改虚拟机中的elasticsearch.yml文件,就同步修改了docker中的elasticsearch.yml文件了
4.5 -d elasticsearch:7.4.2
-d 表示后台启动es,这句话的意思是 后台启动镜像 elasticsearch:7.4.2
访问:http://192.168.56.10:9200/ 出现如下图所示,表示ES安装成功
注意:可能有文件权限问题导致ES安装之后,就退出了,导致访问不到,这时候,需要将ES目录设置为可读可写,利用如下命令即可
chmod -R 777 /mydata/elasticsearch/
Kibana可以安装可以不安装,我们完全可以使用postman来发送请求,操作es,
例如:查看节点信息
http://192.168.56.10:9200/_cat/nodes
ae76972f47b5就是节点id,如果节点前面有*表示该节点是主节点
1)安装Kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 \
-d kibana:7.4.2
安装之后,我们访问虚拟机的5601端口就能访问到可视化界面了,从命令可以看出,Kibana也是通过es的9200端口来给ES发送请求的,再次证明了,我们可以直接在postman中操作es,无需Kibana
注意:
1)http://192.168.56.10:9200 为ES主机地址
2)如果不在命令中指定ELASTICSEARCH_HOSTS,也可以在Kibana的配置文件中指定,详见http://hub.docker.com中的关于Kibana的说明.
2)测试
在浏览器输入:http://192.168.56.10:5601
如图:
点击yes或者no都可以,点击no,如图:
点击 explore on my own 用我们自己的数据,如图:
出现上图,说明可视化界面安装成功!
docker update ae76972f47b5 --restart=always
ae76972f47b5 为ElasticSearch的容器ID
docker update 41e9848ef794 --restart=always