栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux部署Elasticsearch服务以及ik插件并实现ik

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux部署Elasticsearch服务以及ik插件并实现ik

目录
  • Linux docker部署Elasticsearch服务以及ik插件并实现ik_smart最粗力度分词
    • 需求
    • 下载并部署Elasticsearch(docker容器部署)
    • 下载并部署Elasticsearch-ik插件
    • 更新word索引,采用最粗分词方式
    • 参考文章

Linux docker部署Elasticsearch服务以及ik插件并实现ik_smart最粗力度分词 需求

项目的缘故,需要实现对上传文档进行文字检索,采用了Elasticsearch(以下简称为es)第三方服务,具体需求是对词汇进行搜索,但es默认的分词器分词方式是最小力度划分,例如 检索“中华人民共和国”,检索时会划分为 “中”、“国”,“人”、“民”、“共”、“和”、“国”,然后对文档进行搜索匹配,这时比如“大国中间的”中的“中”也会匹配到,这时需要引入ik插件,采用 ik提供的ik_smart分词,检索时将检索语句划分为词语,例如“中华人民共和国”,可能会划分为“中国”、“人民”、“共和国”,以词语进行划分。

下载并部署Elasticsearch(docker容器部署)

1. 拉取Elasticsearch镜像
镜像仓库 https://hub.docker.com/
这个外网可以访问,如果是内网的话看你内网的镜像仓库地址

($操作表示均在Linux服务器输入框中操作)

#拉取镜像文件
$ docker pull elasticsearch
#说明:此处也可在Tags中选择指定版本的elasticsearch

#说明:拉取镜像文件需要镜像仓库地址,如下
$ docker pull reg:****.com/basicimage/elasticsearch:7.16.2 

2. 查看镜像

$ docker images

3. 创建Elasticsearch容器

#1、创建Elasticsearch配置文件夹
$ mkdir -p /usr/local/data-docker/elasticsearch/config
​
#2、创建Elasticsearch数据文件夹
$ mkdir -p /usr/local/data-docker/elasticsearch/data
​
#3、创建Elasticsearch插件文件夹(如:ik)
$ mkdir -p /usr/local/data-docker/elasticsearch/plugins
​
#说明:目的将CentOS本地的文件夹映射到Elasticsearch容器,以实现容器数据的持久化到CentOS本地,以及通过CentOS本地文件夹内容的修改同步到容器

$ echo "http.host: 0.0.0.0">>/usr/local/data-docker/elasticsearch/config/elasticsearch.yml
#创建并写入elasticsearch.yml配置,注意:http.host: 0.0.0.0 冒号后有一空格

4. 文件夹赋权

$ chmod -R 777 elasticsearch/
# 需要对 elasticsearch 下属的所有文件进行赋权,负责可能导致镜像运行时报没有访问权限错误

5. 创建宿主机Elasticsearch文件
宿主机也需要有es的文件,与docker容器内的es对应,es的yml配置文件会采用宿主机的配置文件

elasticsearch:7.16.2安装包下载地址:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.2-linux-x86_64.tar.gz

# 创建文件夹
$ mkdir -p /usr/share/elasticsearch

# 上传对应镜像对应版本elasticsearch安装包,注意要和镜像版本相同,可以通过$ docker images 查看版本

# elasticsearch:7.16.2安装包下载地址:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.2-linux-x86_64.tar.gz
# 上传安装包
$ rz
# 解压到/usr/share/elasticsearch路径下
$ tar -xzf elasticsearch-7.16.2-linux-x86_64.tar.gz

# 将解压好的elasticsearch-7.16.2文件夹移到/usr/share/路径下,移除原有elasticsearch文件夹
$ mv elasticsearch-7.16.2 /usr/share/
# 将elasticsearch-7.16.2文件夹改名为elasticsearch
$ rm -rf elasticsearch
$ mv elasticsearch-7.16.2 elasticsearch

6. 命令启动镜像文件

$ docker run --name elasticsearch -p 9200:9200 
 -p 9300:9300 
 -e "discovery.type=single-node" 
 -e ES_JAVA_OPTS="-Xms64m -Xmx128m" 
 -v /usr/local/data-docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 
 -v /usr/local/data-docker/elasticsearch/data:/usr/share/elasticsearch/data 
 -v /usr/local/data-docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins 
 -d elasticsearch

参数说明

--name elasticsearch:将Elasticsearch容器命名为 elasticsearch

-p 9200:9200:将容器的9200端口映射到宿主机9200端口

-p 9300:9300:将容器的9300端口映射到宿主机9300端口,目的是集群互相通信

-e "discovery.type=single-node":单例模式

-e ES_JAVA_OPTS="-Xms64m -Xmx128m":配置内存大小

-v /usr/local/data-docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:将配置文件挂载到宿主机

-v /usr/local/data-docker/elasticsearch/data:/usr/share/elasticsearch/data:将数据文件夹挂载到宿主机

-v /usr/local/data-docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins:将插件目录挂载到宿主机(需重启)

-d elasticsearch:后台运行容器,并返回容器ID

7. 验证是否成功

#说明:安装完后,通过如下指令查看elasticsearch是否安装成功
curl http://localhost:9200

展示结果如下:

{
  "name" : "550eca5cf3b2",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "1mP9IJU3TUy_C2DZMfKGBg",
  "version" : {
    "number" : "7.16.2",
    "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"
}

注意:如展示上边内容,说明docker安装elasticsearch成功,如远程访问无法展示上述内容,请关防火墙或防火墙开放9200、9300端口

8. Docker启动容器自启

docker update elasticsearch --restart=always
下载并部署Elasticsearch-ik插件

1. 下载地址
https://github.com/medcl/elasticsearch-analysis-ik/releases

点击对应版本,如下图,版本要和elasticsearch的版本一样,版本号可以通过$ docker images 查看

点击tar包下载

2. 上传到容器中并解压安装包

#先将下载好的tar包上传到/usr/
$ cd /usr/
$ rz

#将压缩包移动到容器中
$ docker cp /usr/elasticsearch-analysis-ik-7.16.2.zip elasticsearch:/usr/share/elasticsearch/plugins

#进入容器
$ docker exec -it elasticsearch /bin/bash  

#创建目录
$ mkdir /usr/share/elasticsearch/plugins/ik

#将文件压缩包移动到ik中
$ mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.16.2.zip /usr/share/elasticsearch/plugins/ik

#进入目录
$ cd /usr/share/elasticsearch/plugins/ik

#解压
$ unzip elasticsearch-analysis-ik-7.16.2.zip

#删除压缩包
$ rm -rf elasticsearch-analysis-ik-7.16.2.zip
  1. 重启docker中的es容器,重启项目
# ik插件放置到容器中的plugins后,重启es容器
# 查看所有docker容器
$ docker ps

# 重启es容器
$ docker restart elasticsearch(或者容器ID)
  1. 查看ik插件是否安装成功
# 方法一: 查看logs日志,看日志中是否包含 loaded plugin [analyzesis-ik]
$ docker logs elasticsearch

# 方法二:进入容器中,通过 bin 中的elasticsearch-plugin list命令查看是否安装ik
$ docker exec -it elasticsearch /bin/bash  
$ cd bin
$ elasticsearch-plugin list
# 会显示ik,结果如下

更新word索引,采用最粗分词方式

安装好ik插件后,还不能在实际使用中体现,需要更新es的索引采用ik_smart的分词方式

# 查看es的所有索引
$ curl 'localhost:9200/_mapping?retty=true'

# 删除所有的索引,以下提供删除word索引的方法
$ curl -X DELETE 'localhost:9200/word'

# 新建word索引,PUT用于新建索引,-H 'content-Type:application/json' 将以下文本格式申明为json格式
$ curl -X PUT 'localhost:9200/word' -H 'content-Type:application/json'  -d '
{
  "mappings": {
      "properties": {
        "user": {
          "type": "text",
          "analyzer": "ik_smart",
          "search_analyzer": "ik_smart"
        },
        "title": {
          "type": "text",
          "analyzer": "ik_smart",
          "search_analyzer": "ik_smart"
        },
        "content": {
          "type": "text",
          "analyzer": "ik_smart",
          "search_analyzer": "ik_smart"
        },
        "id": {
          "type": "text",
          "analyzer": "ik_smart",
          "search_analyzer": "ik_smart"
        },
        "desc": {
          "type": "text",
          "analyzer": "ik_smart",
          "search_analyzer": "ik_smart"
        }
      }
    }
}'

重启docker中的es容器,重启项目

# ik插件放置到容器中的plugins后,重启es容器
# 查看所有docker容器
$ docker ps

# 重启es容器
$ docker restart elasticsearch(或者容器ID)

测试效果

参考文章

Elasticsearch 安装
https://www.cnblogs.com/nesn/p/15898123.html
Elasticsearch-analysis-ik 安装
https://blog.csdn.net/qq_40942490/article/details/111594267
创建ik_smart分词索引
http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号