【大数据】ES数据库docker+IK安装

116 阅读2分钟

image.png

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天,点击查看活动详情

前言

昨天的文章中,优化了redis的存储结构,简化了首页展示接口的逻辑,而对于节点查询,服务应该支持模糊查询,但是对于不同节点标签不同,如有company,product与cev_number,查询的时候这些如果是一个传递的参数,好像对于查询来说不太友好,两个解决思路,一个是neo4j的模糊查询能否不指定节点label,另外就是做一个查询推荐的,类似于字典树,然后在redis存储对应关键字的label,构造模糊查询语句。或者使用ES数据库的suggest语句。


ES

docker 安装ES

之前redis、mysql都是通过docker部署的,因此ES也通过docker 进行部署,如下:

docker pull elasticsearch:7.7.0

image.png

查看docker镜像

docker image list

image.png

docker es 启动

docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0
#--name表示镜像启动后的容器名称  
#-d: 后台运行容器,并返回容器ID;
#-e: 指定容器内的环境变量
#-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

因此使用本地19200端口映射9200端口

报错如下:

docker: Error response from daemon: driver failed programming external connectivity on endpoint elasticsearch (f7277816b366ed5e52cb06e93beeb1c733c284f3df6b0120bceee726be723293):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9300 -j DNAT --to-destination 172.17.0.4:9300 ! -i docker0: iptables: No chain/target/match by that name.

原因是我们打开了防火墙后又关闭了,我们只需要将其重启docker容器即可解决该问题

systemctl restart docker

image.png

查看正在运行的机器

docker ps 

image.png

查看ES服务是否正常:

curl 0.0.0.0:9200
{
  "name" : "b182fea9c5fa",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "_vhIru-CQrOHq7W8zn1tlQ",
  "version" : {
    "number" : "7.7.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "81a1e9eda8e6183f5237786246f6dced26a10eaf",
    "build_date" : "2020-05-12T02:01:37.602180Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

测试本地隧道是否打通:

image.png

安装分词器

进入ES容器

docker exec -it b182fea9c5fa /bin/bash

ls

cd /bin

image.png

下载分词器

https://github.com/medcl/elasticsearch-analysis-ik/releases?q=7.7.0&expanded=true

image.png

下载之后放入容器中:

docker cp elasticsearch-analysis-ik-7.7.0.zip b182fea9c5fa:/usr/share/elasticsearch

解压缩至plugins/ik

unzip elasticsearch-analysis-ik-7.7.0.zip

image.png

重启docker es服务

docker restart b182fea9c5fa

这样建立带有分词器的索引就不会报错了

image.png