ELASTIC SEARCH
在练习某spring cloud alibaba 项目中使用到,记录一下。
参考项目笔记 谷粒商城笔记
简介
mysql用作持久化存储,ES用作检索
基本概念:index库>type表>document文档
index索引
动词:相当于mysql的insert
名词:相当于mysql的db
Type类型(Es7.x已取消)
在index中,可以定义一个或多个类型
类似于mysql的table,每一种类型的数据放在一起
Document文档
保存在某个index下,某种type的一个数据document,文档是json格式的,document就像是mysql中的某个table里面的内容。每一行对应的列叫属性
1、安装elastic search和kibana
线上服务器先提前放行这三个端口和安全组
阿里云安全组
宝塔安全端口放行
dokcer中安装elastic search
(1)下载ealastic search(存储和检索)和kibana(可视化检索)
docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2
版本要统一
(2)配置
# 将docker里的目录挂载到linux的/mydata目录中
# 修改/mydata就可以改掉docker里的
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
# es可以被远程任何机器访问
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
# 递归更改权限,es需要访问
chmod -R 777 /mydata/elasticsearch/
(3)启动Elastic search
# 9200是用户交互端口 9300是集群心跳端口
# -e指定是单阶段运行
# -e指定占用的内存大小,生产时可以设置32G
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-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
# 设置开机启动elasticsearch
因为容器里的文件映射到了外面,所以删除容器和新建容器数据还在
第一次查docker ps启动了,第二次查的时候发现关闭了,docker logs elasticsearch
访问http://服务器或虚拟机地址:9200的时候
数据挂载到外面,但是访问权限不足
把/mydata/elasticsearch下文件夹的权限设置好,上面已经设置过了
# 递归更改权限,es需要访问
chmod -R 777 /mydata/elasticsearch/
(4)启动kibana:
# kibana指定了了ES交互端口9200 # 5600位kibana主页端口
#此处的服务器地址因为是装在同一台机器上,可以通过ifconfig查看内网ip写上
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://服务器或虚拟机地址:9200 -p 5601:5601 -d kibana:7.4.2
# 设置开机启动kibana
docker update kibana --restart=always
(5)测试
查看elasticsearch版本信息: http://服务器或虚拟机地址:9200
{
"name": "f258632ce714",
"cluster_name": "elasticsearch",
"cluster_uuid": "NuZwJvtgTGu8xMcxPQYe3A",
"version": {
"number": "7.4.2",
"build_flavor": "default",
"build_type": "docker",
"build_hash": "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
"build_date": "2019-10-28T20:40:44.881551Z",
"build_snapshot": false,
"lucene_version": "8.2.0",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}
看到这表示Es安装成功了
显示elasticsearch 节点信息http://服务器或虚拟机地址:9200/_cat/nodes
127.0.0.1 35 95 3 0.03 0.01 0.00 dilm * f258632ce714
f258632ce714代表上面的docker容器名
*代表是主节点
kibana访问 http://服务器或虚拟机地址:5601即可,运行需要一会,如果显示服务启动失败,请
docker logs “kibana名或容器id”
2、安装IK分词器
因为Es自带的分词器不能很好的分词中文,所以安装这个开源分词器插件
进入Es容器内部或在挂在目录下操作
系统目录下
[root@iZxhfc3ar7jey0Z /]# cd /mydata/elasticsearch/plugins
可以在plugins创建个ik文件夹,好看
[root@iZxhfc3ar7jey0Z plugins]# wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
下载困难使用浏览器访问下载
[root@iZxhfc3ar7jey0Z plugins]# unzip elasticsearch-analysis-ik-7.4.2.zip
修改ik目录的权限
chmod -R 777 ik/
检查安装
[root@iZxhfc3ar7jey0Z plugins]# docker exec -it elasticsearch /bin/bash
[root@f258632ce714 elasticsearch]# ls
LICENSE.txt NOTICE.txt README.textile bin config data jdk lib logs modules plugins
[root@f258632ce714 elasticsearch]# elasticsearch-plugin list
ik
[root@iZxhfc3ar7jey0Z plugins]# docker restart elasticsearch
elasticsearch
[root@iZxhfc3ar7jey0Z plugins]#
3、打开kibana
输入以下测试数据点击执行测试
到此安装测试完毕。