介绍
介绍
前面福哥已经带着大家学会了搭建Redis数据库服务了,今天我们来搭建Elasticsearch搜索引擎服务。Elasticsearch是一款基于Lucense技术实现的支持全文检索的搜索引擎软件,可以用来对关系型数据库的数据建立全文索引,从而实现数据的全文检索功能。
今天福哥就带着大家使用elasticsearch:6.8.18基础镜像来搭建Elasticsearch搜索引擎环境。
环境
镜像版本 | elasticsearch:6.8.18 |
操作系统 | CentOS 7 x86_64 2009 |
服务器 | TFCentOS7x64 |
IP | 192.168.168.68 |
端口 | 9200 |
安装
Dockerfile
基础镜像
福哥选择的是elasticsearch:6.8.18这个基础镜像。
https://hub.docker.com/_/elasticsearch/tags?page=1&name=6.8.18
现在hub.docker.com依然打不开,大家就选这个版本吧!
拉取镜像elasticsearch:6.8.18,添加到registry.tongfu.net:5000私有仓库里面。
docker pull elasticsearch:6.8.18 docker tag elasticsearch:6.8.18 registry.tongfu.net:5000/elasticsearch:6.8.18 docker rmi elasticsearch:6.8.18 docker images | grep elasticsearch
创建镜像目录
创建镜像目录tfelasticsearch并切换到tfelasticsearch目录下面。
mkdir /tongfu.net/data/dockerfile/tfelasticsearch cd /tongfu.net/data/dockerfile/tfelasticsearch
依赖镜像
第一行写上依赖镜像elasticsearch:6.8.18。
FROM registry.tongfu.net:5000/elasticsearch:6.8.18
维护者信息
这是福哥写的维护者信息。
# for MAINTAINER MAINTAINER Author: Andy Bogate MAINTAINER Email: tongfu@tongfu.net MAINTAINER Home page: https://tongfu.net MAINTAINER Datetime: 2023/04/06 MAINTAINER Version: v1.0
配置文件
elasticsearch.yml
配置文件elasticsearch.yml是存放在/usr/share/elasticsearch/config/目录下面的,elasticsearch.yml默认只有两行内容。福哥不打算修改这个配置文件,所以这里就不把elasticsearch.yml提出来编辑了。
cluster.name: "docker-cluster" network.host: 0.0.0.0
在创建新的镜像的时候把elasticsearch.yml配置文件拷贝进去。
# user configure COPY elasticsearch.yml /usr/share/elasticsearch/config/elasticsearch.yml
vm.max_map_count
默认情况下vm.max_map_count的值是65530,这个不能满足Elasticsearch的最低要求262144的需要,所以福哥要更改一下这个vm.max_map_count的值。
要修改vm.max_map_count的值需要在/etc/sysctl.conf里面设置,然后执行sysctl -p命令使刚刚的设置生效。
echo "vm.max_map_count=262144" >> /etc/sysctl.conf sysctl -p
创建镜像
使用下面的命令创建tfelasticsearch:6-1.0.0镜像。
docker build -f Dockerfile \ -t registry.tongfu.net:5000/tfelasticsearch:6-1.0.0 ./
查看镜像
看看tfelasticsearch:6-1.0.0镜像。
docker images | grep tfelasticsearch
启动容器
Elasticsearch数据目录
在宿主机建立一个用来存放Elasticsearch数据的目录,它将被映射到容器的Elasticsearch数据目录上面。
mkdir -p /tongfu.net/data/docker/data/tfelasticsearch chown 1000.1000 /tongfu.net/data/docker/data/tfelasticsearch
启动容器
使用下面的命令基于tfelasticsearch:6-1.0.0镜像启动一个容器,将9200端口映射到宿主机上面,将/usr/share/elasticsearch/data这个elasticsearch数据目录映射到前面建立的目录上面。
docker run -tid \ --name tfelasticsearch \ -h tfelasticsearch \ -p 9200:9200 \ -v /tongfu.net/data/docker/data/tfelasticsearch:/usr/share/elasticsearch/data \ registry.tongfu.net:5000/tfelasticsearch:6-1.0.0
Elasticsearch基本操作
切入tfelasticsearch容器里面
因为我们操作Elasticsearch时候都会用到json文件,还是切入tfelasticsearch容器里面方便些。
docker exec -ti tfelasticsearch bash
创建索引
建立索引user字段映射配置文件user.json,写上和MySQL一样的字段配置,这里面去掉了密码字段,一般情况下不会有人全文检索密码的吧!
{ "mappings" : { "user": { "properties" : { "userId" : { "type" : "integer" }, "userName" : { "type" : "text" }, "createDT" : { "type" : "date" }, "updateDT" : { "type" : "date" }, "lastLoginDT" : { "type" : "date" } } } } }
通过user.json配置文件创建user索引。
curl -X PUT \ -H 'Content-Type: application/json' \ --data-binary '@user.json' \ localhost:9200/user?pretty
插入数据
现在福哥向user索引里面也插入两条数据,数据ID和MySQL一样,“福哥”是1,“鬼谷子叔叔”是2。
curl -X POST \ -H 'Content-Type: application/json' \ -d '{"userId": 1, "userName": "福哥"}' \ localhost:9200/user/user/1?pretty curl -X POST \ -H 'Content-Type: application/json' \ -d '{"userId": 2, "userName": "鬼谷子叔叔"}' \ localhost:9200/user/user/2?pretty
检索数据
现在user索引里面有了两条数据,我们检索“叔叔”这个关键词,应该可以把“鬼谷子叔叔”查询出来!
curl -X POST \ -H 'Content-Type: application/json' \ -d '{"query": {"match": {"userName": "叔叔"}}}' \ localhost:9200/user/user/_search?pretty
查看服务器信息
基本信息
能够看到这个信息证明Elasticsearch已经启动起来了!
docker exec -ti tfelasticsearch curl localhost:9200
集群健康信息
这个信息里的status表示服务器运行状态,green就是健康的,yellow就是有警告,red就是故障了!
docker exec -ti tfelasticsearch curl localhost:9200/_cluster/health?pretty
节点信息
因为福哥搭建的是一个单机版本,这里就只有一个节点!
docker exec -ti tfelasticsearch curl localhost:9200/_cat/nodes?v
索引信息
这里面只有一个user索引。因为我们是单机版本,所以索引没有副本。索引没有副本所以状态就是yellow的。
docker exec -ti tfelasticsearch curl localhost:9200/_cat/indices?v
分片信息
可以看到索引分成了5个分片,全部副本分片都是无效状态!因为我们搭建的是单机版本嘛~~
docker exec -ti tfelasticsearch curl localhost:9200/_cat/shards?v
总结
今天福哥在TFCentOS7x64服务器上面通过Dockerfile创建了一个镜像tfelasticsearch:6-1.0.0,并且通过这个新创建的镜像tfelasticsearch:6-1.0.0启动了一个容器,这个镜像用来运行Elasticsearch搜索引擎服务。
后面福哥会教给大家使用各种编程语言去操作Elasticsearch搜索引擎的方法,敬请期待~