13.全文检索-ElasticSearch前置内容
1.Docker安装ES并且安装可视化界面kibana
docker pull elasticsearch:7.4.2
docker pull kibana:7.4.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/
# 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 update elasticsearch --restart=always
访问有这个信息es就安装成功了
配置kibana
# kibana指定了了ES交互端口9200 # 5600位kibana主页端口 docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.116.128:9200 -p 5601:5601 -d kibana:7.4.2 # 设置开机启动kibana docker update kibana --restart=always
看到这个就安装成功了
安装ik分词器-默认的分词器对中文不友好
docker ps 查看容器
docker exec -it a0e /bin/bash 进入容器
yum install wget 安装wget命令
下载分词器
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
unzip elasticsearch-analysis-ik-7.4.2.zip -d ik 解压文件
mv ik plugins/ 移动到这个文件夹下
chmod -R 777 plugins/ik 修改权限
docker restart elasticsearch 退出容器后重启
rm -rf elasticsearch-analysis-ik-7.4.2.zip
删除zip包
测试ik分词器
自定义词库
调整虚拟机内存为3G
查看内存情况
安装Nginx:
docker run -p80:80 --name nginx -d nginx:1.10
删除掉原来用来拷贝的ngnix
移动文件夹
创建html和logs文件夹
启动我们自己要使用的nginx
docker run -p 80:80 --name nginx \ -v /mydata/nginx/html:/usr/share/nginx/html \ -v /mydata/nginx/logs:/var/log/nginx \ -v /mydata/nginx/conf/:/etc/nginx \ -d nginx:1.10
开机自启
docker update nginx --restart=always
添加分词文件
es默认访问html文件夹下的路径
找到如下目录文件进行修改
打开远程修改字典服务,输入自己的地址
改完后重启es
测试自定义词库
SpringBoot整合ES
java操作es有两种方式
1)9300: TCP
spring-data-elasticsearch:transport-api.jar;
springboot版本不同,ransport-api.jar不同,不能适配es版本
7.x已经不建议使用,8以后就要废弃
2)9200: HTTP
有诸多包
jestClient: 非官方,更新慢;
RestTemplate:模拟HTTP请求,ES很多操作需要自己封装,麻烦;
HttpClient:同上;
Elasticsearch-Rest-Client:官方RestClient,封装了ES操作,API层次分明,上手简单;
最终选择Elasticsearch-Rest-Client(elasticsearch-rest-high-level-client)