前言

如果项目中所有的检索都采用 mysql 的 like 关键字进行检索,当mysql到达百万级别的时候就会很慢,这时候就需要额外的搜索引擎

1、docker拉取镜像

kibana为elasticsearch的图形界面

  1. docker pull elasticsearch:7.4.2
  2. docker pull kibana:7.4.2

2、创建实例

2.1、创建本地文件夹

创建本地文件夹,用于docker实例镜像映射

  1. mkdir -p /mydata/elasticsearch/config
  2. mkdir -p /mydata/elasticsearch/data
  3. echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

2.2、修改权限

此处必须修改权限否则之后启动elasticsearch会报错

  1. chmod -R 777 /mydata/elasticsearch/ 保证权限

2.3、运行实例

这里设置了java虚拟机的内存,否者直接使用的内存会干爆我们的虚拟机
第一个9200为我们访问的端口,第二个为集群访问的端口
运行elasticsearch

  1. docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
  2. -e "discovery.type=single-node" \
  3. -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
  4. -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  5. -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
  6. -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
  7. -d elasticsearch:7.4.2

运行kibana
注意地址一定要改成自己的主机地址

  1. docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.144.201:9200 -p 5601:5601 -d kibana:7.4.2

image.png

3、测试环境

浏览器搜素指定地址查看是否能连接
kibana
http://192.168.144.201:5601/
elasticsearch
http://192.168.144.201:9200/

4、安装ki分词器

4.1、下载分词器

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.4.2
image.png

4.2、创建文件夹

  1. mkdir ik

image.png
将压缩包压缩到ik目录下(解压后不要保留zip文件)
image.png

4.3、测试

进入容器中测试
1、进入容器
2、进入bin文件夹
3、查看插件

  1. docker exec -it elasticsearch /bin/bash
  2. cd bin/
  3. elasticsearch-plugin list

image.png

4.4、使用kibana测试

image.png
image.png

  1. POST _analyze
  2. {"analyzer":"ik_max_word","text":"我是中国人"}

image.png
image.png
第二种分词策略

  1. POST _analyze
  2. {"analyzer":"ik_smart","text":"我是中国人"}

4.5、补充(自定义分词)

在nginx静态目录下创建自己的分词(在nginx的html目录下可已通过http协议直接访问)
image.png
修改配置
image.png
配置分词地址

  1. <entry key="remote_ext_dict">http://192.168.144.201/es/fenci.txt</entry>

image.png