CentOS安装Elasticsearch_IK分词器_部署kibana_部署es集群

一、部署单点es

①:创建网络

因为我们还需要部署kibana容器,因此需要让eskibana容器互联。这里先创建一个网络:

命令:docker network create es-net

②:加载镜像

1. 下载elasticsearch和kibana的tar包

这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大,接近1G。不建议大家自己pull。

网盘链接:
链接:https://pan.baidu.com/s/1fBVAOVslq-E1Qa7hUQfdKw
提取码:Coke

1.将elasticsearch的tar包上传到Linux

/usr/oop目录下创建一个elasticsearch目录

2. 运行命令加载即可:

docker load -i es.tar

3.将kibana的tar包上传到Linux

/usr/oop目录下创建一个kibana目录

4. 运行命令加载即可:

docker load -i kibana.tar

③:运行

运行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 \
elasticsearch:7.12.1

命令解释:

  • -e "cluster.name=es-docker-cluster":设置集群名称
  • -e "http.host=0.0.0.0":监听的地址,可以外网访问
  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
  • -e "discovery.type=single-node":非集群模式
  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
  • -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
  • --privileged:授予逻辑卷访问权
  • --network es-net :加入一个名为es-net的网络中
  • -p 9200:9200:端口映射配置

在浏览器中输入:http://192.168.100.200:9200 即可看到elasticsearch的响应结果:

二、部署kibana

kibana可以给我们提供一个elasticsearch的可视化界面,便于我们学习。

注意:kibana和Elastaicsearch要在同一个网络中并且版本要保持一样

网盘链接:
链接:https://pan.baidu.com/s/1fBVAOVslq-E1Qa7hUQfdKw
提取码:Coke

1.将kibana的tar包上传到Linux

/usr/oop目录下创建一个kibana目录

2. 运行命令加载即可:

docker load -i kibana.tar

①:部署

运行docker命令,部署kibana

docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601  \
kibana:7.12.1
  • --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
  • -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
  • -p 5601:5601:端口映射配置

kibana启动一般比较慢,需要多等待一会,可以通过命令:
docker logs -f kibana

查看运行日志,当查看到下面的日志,说明成功:

在浏览器输入地址访问:http://192.168.100.200:5601,即可看到结果

②:DevTools

kibana中提供了一个DevTools界面:

这个界面中可以编写DSL来操作elasticsearch。并且对DSL语句有自动补全功能。

三、安装IK分词器

①:在线安装ik插件(较慢)

# 进入容器内部
docker exec -it elasticsearch /bin/bash# 在线下载并安装
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip#退出
exit
#重启容器
docker restart elasticsearch

①:离线安装ik插件(推荐)

1. 查看数据卷目录

安装插件需要知道elasticsearch的plugins目录位置,而我们用了数据卷挂载,因此需要查看elasticsearch的数据卷目录,通过下面命令查看:

docker volume inspect es-plugins

显示结果:

[{"CreatedAt": "2022-09-30T15:08:57+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/es-plugins/_data","Name": "es-plugins","Options": null,"Scope": "local"}
]

说明plugins目录被挂载到了:/var/lib/docker/volumes/es-plugins/_data 这个目录中。

2. 解压缩分词器安装包

网盘链接:
链接:https://pan.baidu.com/s/1fBVAOVslq-E1Qa7hUQfdKw
提取码:Coke

3. 上传到es容器的插件数据卷中

也就是/var/lib/docker/volumes/es-plugins/_data

4. 重启容器

# 4、重启容器
docker restart es

# 查看es日志
docker logs -f es

查看日志发现报错了

原因:
JDK有一些安全限制,可以修改配置文件文件jdk目录/usr/jdk/jdk1.8.0_152/jre/lib/security,禁用这些限制:

解决办法:

  • 修改java.policy文件添加一下内容
grant {permission java.net.SocketPermission "*:*","connect,resolve";permission java.lang.RuntimePermission "getClassLoader";
};

# 4、重启容器
docker restart es

5. 测试:

IK分词器包含两种模式:

  • ik_smart:最少切分

  • ik_max_word:最细切分

GET /_analyze
{"analyzer": "ik_max_word","text": "黑马程序员学习java太棒了"
}

③: 扩展词词典

随着互联网的发展,“造词运动”也越发的频繁。出现了很多新的词语,在原有的词汇列表中并不存在。比如:“奥力给”,“传智播客” 等。

所以我们的词汇也需要不断的更新,IK分词器提供了扩展词汇的功能。

1. 打开IK分词器config目录:
/var/lib/docker/volumes/es-plugins/_data/ik/config

2.在IKAnalyzer.cfg.xml配置文件内容添加:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 *** 添加扩展词典--><entry key="ext_dict">ext.dic</entry>
</properties>

3. 新建一个 ext.dic,可以参考config目录下复制一个配置文件进行修改

白嫖
奥力给
  1. 重启elasticsearch
docker restart es# 查看 日志
docker logs -f elasticsearch

日志中已经成功加载ext.dic配置文件

  1. 测试效果:
GET /_analyze
{"analyzer": "ik_smart","text": "程序员学习java白嫖奥里给"
}

注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑

④:停用词词典

在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。

IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。

1. IKAnalyzer.cfg.xml配置文件内容添加:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典--><entry key="ext_dict">ext.dic</entry><!--用户可以在这里配置自己的扩展停止词字典  *** 添加停用词词典--><entry key="ext_stopwords">stopword.dic</entry>
</properties>

2.在 stopword.dic 添加停用词

  1. 重启elasticsearch
# 重启服务
docker restart elasticsearch
docker restart kibana# 查看 日志
docker logs -f elasticsearch

日志中已经成功加载stopword.dic配置文件

测试效果:

习X大
GET /_analyze
{"analyzer": "ik_smart","text": "程序员学习java,习X大都点赞,奥里给"
}

注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑

四、安装拼音分词器

①:下载插件

官网下载:https://github.com/medcl/elasticsearch-analysis-pinyin

网盘下载:
链接:https://pan.baidu.com/s/1_7C1ujlfyTm3qLJjcLr1-Q
提取码:Coke

要实现根据字母做补全,就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。

②:安装

安装方式与IK分词器一样,分三步:

​ ①解压

​ ②上传到虚拟机中,elasticsearch的plugin目录

目录:/var/lib/docker/volumes/es-plugins/_data

​ ③重启elasticsearch

命令:docker restart es

​ ④测试

测试用法如下:

POST /_analyze
{"text": "如家酒店还不错","analyzer": "pinyin"
}

结果:

③:自定义分词器

网盘下载:
链接:https://pan.baidu.com/s/1_7C1ujlfyTm3qLJjcLr1-Q
提取码:Coke

默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。

elasticsearch中分词器(analyzer)的组成包含三部分:

  • character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符
  • tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smart
  • tokenizer filter:将tokenizer输出的词条做进一步处理。例如大小写转换、同义词处理、拼音处理等

文档分词时会依次由这三部分来处理文档:

1. 配置分词器

  • 1.自定义分词器
PUT /test
{"settings": {"analysis": {"analyzer": { // 自定义分词器"my_analyzer": {  // 分词器名称"tokenizer": "ik_max_word","filter": "py"}},"filter": { // 自定义tokenizer filter"py": { // 过滤器名称"type": "pinyin", // 过滤器类型,这里是pinyin"keep_full_pinyin": false,"keep_joined_full_pinyin": true,"keep_original": true,"limit_first_letter_length": 16,"remove_duplicated_term": true,"none_chinese_pinyin_tokenize": false}}}},"mappings": {"properties": {"name": {"type": "text","analyzer": "my_analyzer","search_analyzer": "ik_smart"}}}
}

2.测试

  • 2.测试:
  • 3.使用配置的索引库在测试

总结:

如何使用拼音分词器?

  • ①下载pinyin分词器

  • ②解压并放到elasticsearch的plugin目录

  • ③重启即可

如何自定义分词器?

  • ①创建索引库时,在settings中配置,可以包含三部分

  • ②character filter

  • ③tokenizer

  • ④filter

拼音分词器注意事项?

  • 为了避免搜索到同音字,搜索时不要使用拼音分词器

五、部署es集群

部署es集群可以直接使用docker-compose来完成,不过要求你的Linux虚拟机至少有4G的内存空间

①:创建es集群

1.首先编写一个docker-compose文件格式为yml,内容如下:

version: '2.2'
services:es01:image: elasticsearch:7.12.1container_name: es01environment:- node.name=es01- cluster.name=es-docker-cluster- discovery.seed_hosts=es02,es03- cluster.initial_master_nodes=es01,es02,es03- "ES_JAVA_OPTS=-Xms512m -Xmx512m"volumes:- data01:/usr/share/elasticsearch/dataports:- 9200:9200networks:- elastices02:image: elasticsearch:7.12.1container_name: es02environment:- node.name=es02- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es03- cluster.initial_master_nodes=es01,es02,es03- "ES_JAVA_OPTS=-Xms512m -Xmx512m"volumes:- data02:/usr/share/elasticsearch/dataports:- 9201:9200networks:- elastices03:image: elasticsearch:7.12.1container_name: es03environment:- node.name=es03- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es02- cluster.initial_master_nodes=es01,es02,es03- "ES_JAVA_OPTS=-Xms512m -Xmx512m"volumes:- data03:/usr/share/elasticsearch/datanetworks:- elasticports:- 9202:9200
volumes:data01:driver: localdata02:driver: localdata03:driver: localnetworks:elastic:driver: bridge

2.将文件上传到虚拟机中

3.es运行需要修改一些linux系统权限,修改/etc/sysctl.conf文件

vim /etc/sysctl.conf
  • 添加下面的内容:
vm.max_map_count=262144
  • 然后执行命令,让配置生效:
sysctl -p

4.通过docker-compose启动集群:
先启动docker: systemctl start docker

启动集群命令:docker-compose up -d

②:集群状态监控

kibana可以监控es集群,不过新版本需要依赖es的x-pack 功能,配置比较复杂。

这里推荐使用cerebro来监控es集群状态,官方网址:https://github.com/lmenezes/cerebro

cerebro-0.9.4安装包====>网盘链接:
链接:https://pan.baidu.com/s/1JFSwDf2iiuwKGndfiWy2XQ
提取码:Coke

1.解压即可使用,非常方便, 解压好的目录如下:

2.进入对应的bin目录:

3.双击其中的cerebro.bat文件或使用命令.\cerebro.bat即可启动服务。

4.访问http://localhost:9000 即可进入管理界面:

绿色的条,代表集群处于绿色(健康状态)。

③:创建索引库

01.利用kibana的DevTools创建索引库

  • 在DevTools中输入指令:
PUT /itcast
{"settings": {"number_of_shards": 3, // 分片数量"number_of_replicas": 1 // 副本数量},"mappings": {"properties": {// mapping映射定义 ...}}
}

02. 利用cerebro创建索引库

利用cerebro还可以创建索引库:

2.填写索引库信息:


CentOS安装Elasticsearch_IK分词器拼音分词器_部署kibana_部署es集群相关推荐

  1. ES集群添加IK分词器

    ES集群添加IK分词器 ES : 7.5.0 官方文档其实已经够优秀了,毕竟是中文的,这里只给出一些建议. IKAnalyzer.cfg.xml 建议放到插件的目录下,要不然有可能会有一些问题 {pl ...

  2. ElasticSearch安装、IK、映射、索引管理、搜索管理和集群管理

    ElasticSearch 一.ElasticSearch 1.1 概念 1.2 原理与应用 1.2.1 索引结构 1.2.3 RESTful应用 二.ElasticSearch安装 2.1 Wind ...

  3. CentOS 使用二进制部署 Kubernetes 1.13集群

    CentOS 使用二进制部署 Kubernetes 1.13集群 一.概述 kubernetes 1.13 已发布,这是 2018 年年内第四次也是最后一次发布新版本.Kubernetes 1.13 ...

  4. K8S中安装ES集群

    背景 在K8S 安装ES集群,使用 Elasticsearch (ECK) Operator 实现 官网 ### https://operatorhub.io/operator/elastic-clo ...

  5. 从安装docker到部署es集群管理的艰辛之旅

    前言 好久没有更新博客了 , 最近也是一直在忙 , 上班搬砖 , 下班深造自己 ; 偶尔打打王者 , 哈哈 , (留言带你们飞 , 哈哈) 最近呢 , 因为加了台新的服务器 , 需要把现有的es集群全 ...

  6. ElasticSearch(二):ES集群安装

    安装Elasticsearch 创建普通用户 ES不能使用root用户来启动,必须使用普通用户来安装启动.这里我们创建一个普通用户以及定义一些常规目录用于存放我们的数据文件以及安装包等. 创建一个es ...

  7. 【ElasticSearch系列连载】3. 如何安装符合生产环境要求的ES集群

    [ElasticSearch系列连载]3. 如何安装符合生产环境要求的ES集群 通过本文,将会循序渐进地了解到ES的若干部署方案,以及相关的基础操作与配置. 上一节介绍的一键安装方式,可以快速启动一个 ...

  8. docker使用小记——docker安装es+ik分词器+拼音分词器+kibana

    一.docker安装:Windows Docker 安装 | 菜鸟教程 二.docker换镜像源 修改或新增 /etc/docker/daemon.json vi /etc/docker/daemon ...

  9. es拼音分词 大帅哥_elasticsearch实现中文分词和拼音分词混合查询+CompletionSuggestion...

    引言 之前已经介绍了如何搭建elasticsearch服务端和简单的索引创建,和中文分词的支持.今天我们来说一说如何实现elasticsearch同时实现中文分词和pinyin分词.并且实现类似百度搜 ...

最新文章

  1. Linux 命令行小技巧《叹号的用处》
  2. 重磅直播 | 自动驾驶中的视觉感知技术
  3. VC中栈溢出/Stack overflow怎么办?
  4. matlab变量名不同循环,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!...
  5. cocos2d - CCSprite各种动画
  6. python Logging日志记录模块详解
  7. python输入序列语句_Python基础教程(一) - 序列:字符串、列表和元组
  8. ListView和SlidingDrawer
  9. 圆变成长方形什么变了_什么是透视,透视到底有多重要?
  10. Windows10系统把JDK安装到D盘上的步骤及安装
  11. 跟随器为何要加反馈电阻?
  12. VLink的简单验证过程
  13. 阿里P8总结的Nacos入门笔记,从安装到进阶小白也能轻松学会
  14. 全方位掌握 NSIS 的操作
  15. 知道焊缝长度如何确定节点板尺寸_钢桁架节点图 中各尺寸确定原则 总结
  16. 【转载】好电影!保存了,没事干的时…
  17. ROS noetic gazebo11车轮不显示的问题
  18. 【echarts记录 -- 3d 饼状图实现】
  19. htcm7刷linux,htc one m7刷官方原版recovery的教程
  20. 使用Zerotier+Moon结点内网穿透

热门文章

  1. php搞笑证件,摆摊证制作软件app 摆摊证搞笑图片怎么做
  2. 【存储知识】NAS存储
  3. LaTeX 命令和代码结构简介
  4. python+PIL批量制作淘宝主图(头图)及满屏水印添加
  5. 【Redis】window(win11)系统redis的安装使用最新教程——图文介绍
  6. 习题 9.5 建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。
  7. 解决移动硬盘不能弹出问题
  8. 策略模式代替if-else
  9. Hadoop源代码分析(完整图文版) part 1
  10. ZARA公司用品牌指导极速供应链