在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典

这篇具有很好参考价值的文章主要介绍了在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 前置准备

首先要创建一个网络,以便让 ES 和 Kibana 容器互联。

docker network create es-net

2 安装 Elasticsearch

2.1 拉取 ES 的 Docker 镜像

使用 Docker 拉取 Elasticsearch7.17.11 版本的镜像:

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.11

2.2 通过 Docker 运行 ES

拉取完镜像后使用 Docker 运行 ES 容器:

docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
    docker.elastic.co/elasticsearch/elasticsearch:7.17.11

注:

  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":设置堆大小(默认堆大小为 1GB1
  • -e "discovery.type=single-node":单节点模式
  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定 ES 的数据目录
  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定 ES 的插件目录
  • --privileged:授予逻辑卷访问权
  • --network es-net :加入一个名为 es-net 的网络中

运行成功后,在浏览器中访问对应 ip 的 9200 端口可看到 ES 的响应结果:
在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典,常用软件的安装和配置,linux,docker,elasticsearch,中文分词

3 安装 Kibana

3.1 拉取 Kibana 的 Docker 镜像

使用 Docker 拉取 Kibana7.17.11 版本的镜像:

docker pull docker.elastic.co/kibana/kibana:7.17.11

注:Kibana 版本应跟 Elasticsearch 版本保持一致。

3.2 通过 Docker 运行 Kibana

拉取完镜像后使用 Docker 运行 Kibana 容器:

docker run -d \
    --name kibana \
    -e ELASTICSEARCH_HOSTS=http://es:9200 \
    --network=es-net \
    -p 5601:5601  \
    docker.elastic.co/kibana/kibana:7.17.11

注:

  • --network es-net :加入一个名为 es-net 的网络中,与 Elasticsearch 在同一个网络中
  • -e ELASTICSEARCH_HOSTS=http://es:9200":设置 Elasticsearch 的地址,因为 Kibana 已经与 Elasticsearch 在同一个网络,因此可以用容器名直接访问 Elasticsearch

运行成功后,在浏览器中访问对应 ip 的 5601 端口可看到:
在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典,常用软件的安装和配置,linux,docker,elasticsearch,中文分词
可通过 Kibana 提供的 Dev Tools 来编写 DSL 语句操作 Elasticsearch :
在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典,常用软件的安装和配置,linux,docker,elasticsearch,中文分词
在 Dev Tools 界面中,在左边编写 DSL 语句,在右边查看响应结果。
使用以下 DSL 语句进行测试:

GET /

可在右边查看响应结果:
在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典,常用软件的安装和配置,linux,docker,elasticsearch,中文分词

在这个界面编写 DSL 语句具有自动补全功能。

4 配置 IK 分词器

4.1 ES 的 standard 分词器测试

在 Kibana 的 Dev Tools 里通过以下 DSL 语句来测试 ES 默认的 standard 分词器2

GET /_analyze
{
  "analyzer" : "standard",
  "text" : "分词器分词效果测试"
}

测试结果:

{
  "tokens" : [
    {
      "token" : "分",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "<IDEOGRAPHIC>",
      "position" : 0
    },
    {
      "token" : "词",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "<IDEOGRAPHIC>",
      "position" : 1
    },
    {
      "token" : "器",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "<IDEOGRAPHIC>",
      "position" : 2
    },
    {
      "token" : "分",
      "start_offset" : 3,
      "end_offset" : 4,
      "type" : "<IDEOGRAPHIC>",
      "position" : 3
    },
    {
      "token" : "词",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "<IDEOGRAPHIC>",
      "position" : 4
    },
    {
      "token" : "效",
      "start_offset" : 5,
      "end_offset" : 6,
      "type" : "<IDEOGRAPHIC>",
      "position" : 5
    },
    {
      "token" : "果",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "<IDEOGRAPHIC>",
      "position" : 6
    },
    {
      "token" : "测",
      "start_offset" : 7,
      "end_offset" : 8,
      "type" : "<IDEOGRAPHIC>",
      "position" : 7
    },
    {
      "token" : "试",
      "start_offset" : 8,
      "end_offset" : 9,
      "type" : "<IDEOGRAPHIC>",
      "position" : 8
    }
  ]
}

可以看到 ES 默认的 standard 分词器对中文分词不友好,所以需要配置对中文分词较友好的 IK 分词器3

分词器的作用:
创建倒排索引时对文档分词
用户搜索时,对输入的内容分词

4.2 下载 IK 分词器

现在安装的 Elasticsearch 版本为 7.17.11,所以我们应该从 IK 分词器的 GitHub 仓库中找到对应的版本来进行下载,但目前 IK 分词器没有给出 7.17.11 的版本,因此我们只能先下载相近的版本,这里选择下载 IK 分词器的 7.17.7 版本,下载地址如下:
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.7/elasticsearch-analysis-ik-7.17.7.zip

4.3 在 ES 中配置 IK 分词器

IK 分词器是通过插件的形式来安装到 Elasticsearch 中的,所以需要知道 Elasticsearch 的 plugins 目录位置,而我们运行 Elasticsearch 容器时使用了数据卷挂载,因此需要查看 Elasticsearch 的数据卷目录,通过以下命令查看:

docker volume inspect es-plugins

在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典,常用软件的安装和配置,linux,docker,elasticsearch,中文分词
可以看到 plugins 目录被挂载到了 /var/lib/docker/volumes/es-plugins/_data 目录中。
我们需要将下载好的 IK 分词器压缩包里面的文件解压到一个名为 ik 的文件夹中,并上传 ik 文件夹到 plugins 挂载的目录下。

需要注意 的是:因为 Elasticsearch 版本和 IK 分词器版本不一致,所以加载 IK 分词器前需要修改 ik 文件夹中的 plugin-descriptor.properties 文件里面的 elasticsearch.version 为 7.17.11,不然 Elasticsearch 启动时加载 IK 分词器会报错4
在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典,常用软件的安装和配置,linux,docker,elasticsearch,中文分词

保存修改后重启 ES:

docker restart es

查看日志

docker logs -f es

在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典,常用软件的安装和配置,linux,docker,elasticsearch,中文分词
可以看到 IK 分词器已经被加载。

4.4 测试 IK 分词器

4.4.1 ik_smart 测试

在 Kibana 的 Dev Tools 里通过以下 DSL 语句进行测试:

GET /_analyze
{
  "analyzer" : "ik_smart",
  "text" : "分词器分词效果测试"
}

测试结果如下:

{
  "tokens" : [
    {
      "token" : "分词器",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "分词",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "效果",
      "start_offset" : 5,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "测试",
      "start_offset" : 7,
      "end_offset" : 9,
      "type" : "CN_WORD",
      "position" : 3
    }
  ]
}

4.4.2 ik_max_word 测试

在 Kibana 的 Dev Tools 里通过以下 DSL 语句进行测试:

GET /_analyze
{
  "analyzer" : "ik_max_word",
  "text" : "分词器分词效果测试"
}

测试结果如下:

{
  "tokens" : [
    {
      "token" : "分词器",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "分词",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "器",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "CN_CHAR",
      "position" : 2
    },
    {
      "token" : "分词",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "效果",
      "start_offset" : 5,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 4
    },
    {
      "token" : "测试",
      "start_offset" : 7,
      "end_offset" : 9,
      "type" : "CN_WORD",
      "position" : 5
    }
  ]
}

4.4.3 ik_max_word 和 ik_smart 的区别

ik_max_word: 会将文本做最细粒度的拆分,会穷尽各种可能的组合,适合 Term Query。好处是搜索到的概率可能较高,缺点是分的词多了,占用内存空间会更多;
ik_smart: 会做最粗粒度的拆分,适合 Phrase 查询。好处是分的词少了,将来查询更多的数据效率会更高一点,缺点是搜索到的概率可能较低。
所以,在这两种方式的选择上,需要在内存占用、查询效率、搜索到的概率等方面进行考虑。

4.5 配置停用词典

这里选择使用 百度停用词表 来作为停用词典,按照自己的需求也可以选择哈工大停用词表等5

4.5.1 获取百度停用词表作为停用词典

可访问下面的链接来下载百度停用词表(baidu_stopwords.txt):
https://github.com/goto456/stopwords/blob/master/baidu_stopwords.txt
下载好 baidu_stopwords.txt 文件后,需要将文件另存为 baidu_stopwords.dic ,要 注意文件编码得是 UTF-8
在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典,常用软件的安装和配置,linux,docker,elasticsearch,中文分词

4.5.2 配置停用词典前测试

在 Kibana 的 Dev Tools 里通过以下 DSL 语句进行测试:

GET /_analyze
{
  "analyzer" : "ik_smart",
  "text" : "停用词测试,的,地,得"
}

测试结果如下:

{
  "tokens" : [
    {
      "token" : "停",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "CN_CHAR",
      "position" : 0
    },
    {
      "token" : "用词",
      "start_offset" : 1,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "测试",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "的",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "CN_CHAR",
      "position" : 3
    },
    {
      "token" : "地",
      "start_offset" : 8,
      "end_offset" : 9,
      "type" : "CN_CHAR",
      "position" : 4
    },
    {
      "token" : "得",
      "start_offset" : 10,
      "end_offset" : 11,
      "type" : "CN_CHAR",
      "position" : 5
    }
  ]
}

可以看到如果没有去停用词,那么“的、地、得”这些词也会被输出出来。

4.5.3 修改配置文件加载停用词典

plugins 挂载的目录下,进入之前上传的 ik 文件夹中,再进入 config 文件夹下修改 IKAnalyzer.cfg.xml 文件,将停用词典的文件名填入到指定位置:
在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典,常用软件的安装和配置,linux,docker,elasticsearch,中文分词
修改配置文件并保存后重启 ES:

docker restart es

查看日志

docker logs -f es

在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典,常用软件的安装和配置,linux,docker,elasticsearch,中文分词
从日志中可以看到已加载配置文件和停用词典。

在 Kibana 的 Dev Tools 里通过以下 DSL 语句进行测试:

GET /_analyze
{
  "analyzer" : "ik_smart",
  "text" : "停用词测试,的,地,得"
}

测试结果如下:

{
  "tokens" : [
    {
      "token" : "停",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "CN_CHAR",
      "position" : 0
    },
    {
      "token" : "用词",
      "start_offset" : 1,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "测试",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2
    }
  ]
}

可以看到,“的、地、得”这三个字已经不输出了,说明停用词典已经配置好了。

5 参考

官方文档:

  • https://www.elastic.co/guide/en/elasticsearch/reference/7.17/docker.html

  • https://www.elastic.co/guide/en/kibana/7.17/docker.html

  • https://www.elastic.co/guide/en/elasticsearch/reference/7.17/indices-analyze.html


  1. https://www.elastic.co/guide/en/elasticsearch/reference/7.5/heap-size.html ↩︎

  2. https://www.elastic.co/guide/en/elasticsearch/reference/7.17/analysis-standard-tokenizer.html ↩︎

  3. https://github.com/medcl/elasticsearch-analysis-ik#readme ↩︎

  4. https://github.com/medcl/elasticsearch-analysis-ik/issues/996 ↩︎

  5. https://github.com/goto456/stopwords ↩︎文章来源地址https://www.toymoban.com/news/detail-753795.html

到了这里,关于在 Linux 上使用 Docker 安装 Elasticsearch 和 Kibana 并配置 IK 分词器和停用词典的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker安装部署[8.x]版本Elasticsearch+Kibana+IK分词器

    在我发的上一个博客里记录了如何安装7.x版本的elasticsearch,我在跟着教学学习Java Rest Client的时候发现在elastic的官网上Java Rest Client已经被标注为过时了,elastc提供了全新的Elasticsearch Java API Client,作为程序员,应该勇于去尝试新技术,因此我决定继续尝试使用elasticsearch8.x版本

    2024年02月05日
    浏览(52)
  • Docker安装ElasticSearch、Kibana、IK分词器以及设置ES账户密码

    版本声明: 系统 :CentOS 7.9(云服务器) ES版本 :7.6.1 Kibana :7.6.1 Ik分析器版本 :7.6.1 1、拉取镜像 2、创建挂载目录 设置所有用户读写执行权限 : sudo chmod -R 777 /docker_config/elasticsearch/ 3、创建elasticsearch.yml 配置文件 4、创建容器 参数说明 : -p 端口映射 -e discovery.type=single

    2023年04月09日
    浏览(71)
  • docker安装elasticsearch kibana 8.6.0(设置密码+汉化+ik分词器)

    记得开放使用的端口,或者关闭防火墙 提示:需要提升虚拟机或者服务器的内存到8G以上 拉取镜像并安装 设置密码 进入es容器,设置密码 生成签名 把这一串复制到kibana网页(服务器ip+5601)中 记得要快,好像是30分钟的期限 出现验证代码请求 退出es,进入kibana容器生成code 复制这个

    2024年02月03日
    浏览(49)
  • Elasticsearch下载安装,IK分词器、Kibana下载安装使用,elasticsearch使用演示

    首先给出自己使用版本的网盘链接:自己的版本7.17.14 链接:https://pan.baidu.com/s/1FSlI9jNf1KRP-OmZlCkEZw 提取码:1234 一般情况下 Elastic Search(ES) 并不单独使用,例如主流的技术组合 ELK(Elasticsearch + Logstash + Kibana ) 1. Elasticsearch下载 下载之前,先看下和 JDK 版本的对应关系,版本

    2024年02月05日
    浏览(47)
  • 服务器安装配置elasticsearch,kibana,IK分词器和拼音分词器,集群搭建教程

    elasticsearch安装教程大全 elasticsearch学习笔记(一) elasticsearch学习笔记(二) elasticsearch学习笔记(三) 可参考:Debian安装docker Centos安装docker (docker-compose可以直接互连) 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: Elasticsearch 和 kibana 版

    2023年04月08日
    浏览(44)
  • CentOS 7 使用Docker方式搭建ElasticSearch 7.7.0 三节点集群,并配置elasticsearch-head插件,ik分词器,以及Kibana可视化平台

    IP 角色 172.16.31.191 elasticsearch-1 172.16.31.192 elasticsearch-2 172.16.31.193 elasticsearch-3 并创建相关挂载目录,3台虚拟机都要,如下 还要对文件夹加设置开放权限,如果不开放权限,则会报错无法写入数据的情况,3台虚拟机都要,如下 172.16.31.191 172.16.31.192 172.16.31.193 172.16.31.191 172.16.3

    2024年02月04日
    浏览(48)
  • ELK第一讲之【docker安装(Elasticsearch、kibana、IK分词器、Logstash)8.4.3】

    1、 对应版本kibana8.4.3的安装 2、 IK分词器8.4.3的安装 3、 Logstash-8.4.3的安装 启动出现以下错误,再执行该操作 出现max virtual memory areas vm.max_map_count [65530] is too low,increase to at least [262144] 1、启动es 2、复制elasticsearch.yml 3、复制完成后、关闭不要的校验 4、关闭容器 开放9200端口 打

    2023年04月23日
    浏览(60)
  • Docker:Elasticsearch安装配置IK分词器

    一、背景:   搞了elasticsearch和kibana的安装和配置,在进行分词的时候没有达到自己预想的效果,于是写一下elasticsearch的ik分词器的安装和配置(自定义分词)。 二、解决方式: 1:首先看看没有加ik分词器的效果。 2:下载ik软件包。  3:选择自己响应版本。  4:将下载好的

    2023年04月18日
    浏览(45)
  • 安装elasticsearch、kibana、IK分词器、扩展IK词典

    后面还会安装 kibana ,这个会提供可视化界面方面学习。 需要注意的是 elasticsearch 和 kibana 版本一定要一样!!! 否则就像这样 1、创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: 2、镜像安装 pull 安装 因为镜像文件比较大,将

    2024年02月02日
    浏览(45)
  • window10安装elasticSearch、kibana、ik分词器

    本文章介绍如何在win系统安装es、kibana、ik 由于在Linux也算是比较麻烦,在win安装就可以当做学习使用了。 注:es是使用java开发的所以需要jdk的环境,如果没有安装jdk,请先百度安装好再来操作。 目录 一、下载es 二、安装kibana 三、安装ik分词器 官网下载地址:https://www.elas

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包