docker搭建Elasticsearch-ik中文分词器-安装Kibana可视化工具

  |  

前言

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库—​ 无论是开源还是私有。

但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。

Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:

一个分布式的实时文档存储,每个字段 可以被索引与搜索
一个分布式实时分析搜索引擎
能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
Elasticsearch 将所有的功能打包成一个单独的服务,这样你可以通过程序与它提供的简单的 RESTful API 进行通信, 可以使用自己喜欢的编程语言充当 web 客户端,甚至可以使用命令行(去充当这个客户端)。

就 Elasticsearch 而言,起步很简单。对于初学者来说,它预设了一些适当的默认值,并隐藏了复杂的搜索理论知识。 它 开箱即用 。只需最少的理解,你很快就能具有生产力。

文档

Elasticsearch 中文文档
Elasticsearch 英文文档
nestjs 使用 Elasticsearch 文档
elastic 介绍

安装 Elasticsearch 的镜像用 7.9.0

docker pull elasticsearch:7.9.0

运行

1
2
3
4
5
6
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-e "discovery.type=single-node" \
-d --name elasticsearch \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.9.0

可以增加文件映射

1
2
-v /data/docker/elastic/plugins:/usr/share/elasticsearch/plugins \
-v /data/docker/elastic/data:/usr/share/elasticsearch/data \

-p 指定容器暴露的端口
9200 作为 Http 协议,主要用于外部通讯;
9300 指定容器暴露的端口

在浏览器访问 http://你的服务器 ip:9200 如下 说明启动成功

在这里插入图片描述

安装 ik 分词器我也是用 7.9.0 版本的

下载地址https://github.com/medcl/elasticsearch-analysis-ik/releases
找到 7.9.0 版本 并且下载下来放到服务器上

进入 es 的容器里

docker exec -it elasticsearch /bin/bash

在这里插入图片描述

在 plugins 目录下创建 ik 文件夹:
mkdir /usr/share/elasticsearch/plugins/ik

退出容器:exit

拷贝下载好的 ik 分词器压缩包到 ik 文件夹中:

docker cp elasticsearch-analysis-ik-7.9.0.zip elasticsearch:/usr/share/elasticsearch/plugins/ik/

再进入容器:
docker exec -it elasticsearch /bin/bash

进入 IK 文件夹下
cd plugins/ik/

解压文件
unzip elasticsearch-analysis-ik-7.9.0.zip

退出容器 重启
docker restart elasticsearch

查看 ik 分词器是否安装成功 可已经进去 es 容器里的 bin 目录下

elasticsearch-plugin list

在这里插入图片描述

修改配置,解决跨域访问问题

首先进入到容器中,然后进入到指定目录修改 elasticsearch.yml 文件。
docker exec -it elasticsearch
vi elasticsearch.yml
在 elasticsearch.yml 的文件末尾加上:
http.cors.enabled: true
http.cors.allow-origin: "\*"
修改配置后重启容器即可。
docker restart elasticsearch

Kibana 7 可视化工具

docker pull kibana:7.9.0

docker run -d -p 5601:5601 --name kibana --link elasticsearch7.9.0:elasticsearch7.9.0 docker.io/kibana:7.9.0

  1. 如果报错 kibana报错Unable to revive connection: http://172.16.23.126:9200/

docker inspect elasticsearch 查看 ES 容器暴露出来的 ip

在这里插入图片描述

查询配置文件
find / -name kibana.yml

写入对应 ip
在这里插入图片描述

重启
docker restart kibana

  1. kibana 启动报 server is not ready yet https://www.jianshu.com/p/a698eddb6cec

kibana 对应的索引已经在 es 中创建 需要 删除对应索引

在这里插入图片描述

  1. 查看内存 free -h 启动失败还有可能是内存不够

查看索引
curl localhost:9200/_cat/indices?v
删除索引,通配符形式
curl -XDELETE localhost:9200/索引*
索引起别名
curl -XPUT localhost:9200/索引/_alias/别名
查看别名
curl -XPUT localhost:9200/_cat/aliases?v

  1. 还可以指定端口启动
    docker run -d -p 5601:5601 --name kibana -e ELASTICSEARCH_HOSTS=http://172.17.0.3:9200 docker.io/kibana:7.9.0

启动特别慢 要等久点

其他问题

  1. 运行一段时间 访问 Kibana 显示 Data too large 问题

解决
使用 potman 发送请求
put https://127.0.0.1:9200/_cluster/settings (参数格式 application/json)

1
2
3
4
5
{
"persistent" : {
"indices.breaker.fielddata.limit" : "40%"
}
}
文章目录
  1. 1. 前言
  2. 2. 文档
  3. 3. 安装 Elasticsearch 的镜像用 7.9.0
    1. 3.1. 运行
  4. 4. 安装 ik 分词器我也是用 7.9.0 版本的
    1. 4.1. 进入 es 的容器里
  5. 5. Kibana 7 可视化工具
  6. 6. 其他问题