25.ElasticSearch的介绍和安装
简介
Elastic是Lucene的封装,提供了REST API的操作接口。
基本概念
Index(索引)
动词:相当于MySql中的insert
名词:相当于Mysql中的Database
Type(类型)-在7.0后被去除
再Index(索引)中可以定义一个或多个类型
相当于MySql的Table,每一种类型的数据放在一起
Document(文档)
保存在某个Index(索引)下的某个Type(类型)的一条数据(Docment),文档是JSON格式的
一个Docment(文档)相当于MySql的Table的一行数据
倒排索引
这就是为什么ElasticSearch检索起来比较快的原因:存了Docment(文档)的分词
下面举个例子:
比如我们要存储5条“文档”:1-红海行动,2-探索红海行动,3-红海特别行动,4-红海记录篇,5-特工红海特别探索
这5条“文档”存入到“类型”时会拆分单词存储为倒排索引:
比如我们要检索“红海特别行动”时,会根据分词“红海”,“特别”,“行动”,检索到1,2,3,4,5这5个“文档”,但是检索到的这5个“文档”会根据相关性得分排序:
5的相关性得分是3,2的相关性得分是2,3的相关性得分是2,1的相关性得分是1,4的相关性得分是1
安装
下载镜像文件
docker pull elasticsearch:7.4.2 存储和检索数据 docker pull kibana:7.4.2 可视化检索数据
下载后可以查询看下:
安装elasticsearch
mkdir -p /mydata/elasticsearch/config 创建虚拟机的文件夹用来挂载docker容器里的elasticsearch的配置文件 mkdir -p /mydata/elasticsearch/data 创建虚拟机的文件夹用来挂载docker容器里的elasticsearch的数据 echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml 给左侧配置写入到右侧路径文件,这个配置表示elasticsearch允许被任意IP访问
可以查一下我们写的配置:
安装命令:
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -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
这就安装好了:
解释一下上面的安装命令:
安装后查一下:
然后我们访问http://192.168.237.100:9200/看一下,发现打不开,我们在输入docker ps查一下:
说明elasticsearch还是有点问题,我们查一下日志,docker logs 45c:(45c是CONTAINER ID的前缀)
发现是这个目录的权限问题:
可以看到root用户是有权限的,但是我们访问http://192.168.237.100:9200/肯定不可能是root用户,所以我们给所有用户设置/mydata/elasticsearch的权限: chmod -R 777 /mydata/elasticsearch/
再访问一下http://192.168.237.100:9200/就正常了:
安装kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.237.100:9200 -p 5601:5601 \ -d kibana:7.4.2
docker ps:
说明安装成功,我们访问一下(http://192.168.237.100:5601/)试试: