同福

使用elasticsearch:6.8.18镜像部署Elasticsearch搜索引擎

介绍

介绍

前面福哥已经带着大家学会了搭建Redis数据库服务了,今天我们来搭建Elasticsearch搜索引擎服务。Elasticsearch是一款基于Lucense技术实现的支持全文检索的搜索引擎软件,可以用来对关系型数据库的数据建立全文索引,从而实现数据的全文检索功能。

今天福哥就带着大家使用elasticsearch:6.8.18基础镜像来搭建Elasticsearch搜索引擎环境。

环境

镜像版本
elasticsearch:6.8.18
操作系统CentOS 7 x86_64 2009
服务器TFCentOS7x64
IP192.168.168.68
端口9200

安装

Dockerfile

基础镜像

福哥选择的是elasticsearch:6.8.18这个基础镜像。

https://hub.docker.com/_/elasticsearch/tags?page=1&name=6.8.18

home/topic/2023/0406/09/7d3638d60dc27ad3b68522a848054d8f.png

现在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

home/topic/2023/0804/21/806b5d91a5f2effee4631df891c5b075.png

创建镜像目录

创建镜像目录tfelasticsearch并切换到tfelasticsearch目录下面。

mkdir /tongfu.net/data/dockerfile/tfelasticsearch
cd /tongfu.net/data/dockerfile/tfelasticsearch

home/topic/2023/0804/21/02920643cb33b00eb69edfd4a3590e59.png

依赖镜像

第一行写上依赖镜像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

home/topic/2023/0804/21/4ac14b0d6e9c1c4003c9be3b51f5cb0c.png

创建镜像

使用下面的命令创建tfelasticsearch:6-1.0.0镜像。

docker build -f Dockerfile \
-t registry.tongfu.net:5000/tfelasticsearch:6-1.0.0 ./

home/topic/2023/0804/21/cdf6e6d70cbbcc98ede6249517aece62.png

查看镜像

看看tfelasticsearch:6-1.0.0镜像。

docker images | grep tfelasticsearch

home/topic/2023/0804/21/025e2782f049467962199f0fa03d87cd.png

启动容器

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

home/topic/2023/0804/21/58b3a4ecb4366e6851576a1ae865ab11.png

Elasticsearch基本操作

切入tfelasticsearch容器里面

因为我们操作Elasticsearch时候都会用到json文件,还是切入tfelasticsearch容器里面方便些。

docker exec -ti tfelasticsearch bash

home/topic/2023/0804/21/b181502c02ed796bb7e7c0a444561e27.png

创建索引

建立索引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

home/topic/2023/0804/21/9e09d71aed335337ff0e652666177c93.png

插入数据

现在福哥向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

home/topic/2023/0804/21/3e8562fe6a07445f0e182dc9cb853659.png

检索数据

现在user索引里面有了两条数据,我们检索“叔叔”这个关键词,应该可以把“鬼谷子叔叔”查询出来!

curl -X POST \
-H 'Content-Type: application/json' \
-d '{"query": {"match": {"userName": "叔叔"}}}' \
localhost:9200/user/user/_search?pretty

home/topic/2023/0804/21/046e5e74bb19495a989ea37e8947c3cb.png

查看服务器信息

基本信息

能够看到这个信息证明Elasticsearch已经启动起来了!

docker exec -ti tfelasticsearch curl localhost:9200

home/topic/2023/0804/21/2da5b1f8c4e16603fbb11931728c1231.png

集群健康信息

这个信息里的status表示服务器运行状态,green就是健康的,yellow就是有警告,red就是故障了!

docker exec -ti tfelasticsearch curl localhost:9200/_cluster/health?pretty

home/topic/2023/0804/21/cae44ae2cc361db6c7c9ef5a6eadfd2e.png

节点信息

因为福哥搭建的是一个单机版本,这里就只有一个节点!

docker exec -ti tfelasticsearch curl localhost:9200/_cat/nodes?v

home/topic/2023/0804/21/427adff9bd3adf2d6a9555dc874760e8.png

索引信息

这里面只有一个user索引。因为我们是单机版本,所以索引没有副本。索引没有副本所以状态就是yellow的。

docker exec -ti tfelasticsearch curl localhost:9200/_cat/indices?v

home/topic/2023/0804/21/20272ae1d75de91175a8e2acce72ed58.png

分片信息

可以看到索引分成了5个分片,全部副本分片都是无效状态!因为我们搭建的是单机版本嘛~~

docker exec -ti tfelasticsearch curl localhost:9200/_cat/shards?v

home/topic/2023/0804/21/06cd545ff7be753338668a40ad57a7d0.png

总结

今天福哥在TFCentOS7x64服务器上面通过Dockerfile创建了一个镜像tfelasticsearch:6-1.0.0,并且通过这个新创建的镜像tfelasticsearch:6-1.0.0启动了一个容器,这个镜像用来运行Elasticsearch搜索引擎服务。

后面福哥会教给大家使用各种编程语言去操作Elasticsearch搜索引擎的方法,敬请期待~