ElasticSearch安装
约 2003 字大约 7 分钟
2025-02-28
安装ES
Windos安装ES
下载地址:elasticseach下载地址
下载ES安装包,解压至任意非中文路径,如D:\elasticsearch-8.13.3
。
打开bin
目录,双击elasticsearch.bat
文件,启动ES。
测试ES是否安装成功,在浏览器中输入http://localhost:9200/
,如果出现如下页面,则说明ES安装成功。
Docker安装ES
- 创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:es-net 名字自己取。
docker network create es-net
- 拉取镜像或加载本地镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.13.3
加载本地镜像:
docker load -i elasticsearch.tar.gz
- 创建容器 创建数据卷:es-data,es-plugins, es-config
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 \
-v es-config:/usr/share/elasticsearch/config \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:8.13.3
--name es
:指定容器名称为es。-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
:设置JVM参数。-e "discovery.type=single-node"
:设置单节点集群。-v es-data:/usr/share/elasticsearch/data
:挂载数据卷,数据将保存在es-data目录中。-v es-plugins:/usr/share/elasticsearch/plugins
:挂载插件目录,可以安装第三方插件。--privileged
:以root权限运行容器。--network es-net
:指定容器加入到es-net网络。-p 9200:9200
:将容器的9200端口映射到主机的9200端口。-p 9300:9300
:将容器的9300端口映射到主机的9300端口。
- 关闭安全验证 找到挂载配置文件的路径,修改配置文件
elasticsearch.yml
,添加以下配置:
xpack.security.enabled: false
- 重启容器
docker restart es
测试ES是否安装成功,在浏览器中输入http://Linux主机IP地址:9200/
,如果有内容返回,则说明ES安装成功。
安装Kibana
什么是Kibana?
Kibana是一个开源的分析和可视化平台,它提供了一个界面,让用户可以对Elasticsearch的数据进行可视化、分析和搜索。
Windos安装Kibana
下载地址:Kibana下载地址
下载Kibana安装包,解压至任意非中文路径,如D:\kibana-8.13.3
。
打开bin
目录,双击kibana.bat
文件,启动Kibana。
测试Kibana是否安装成功,在浏览器中输入http://localhost:5601/
,如果出现如下页面,则说明Kibana安装成功。
kibana左侧中提供了一个DevTools界面: 这个界面中可以编写DSL来操作elasticsearch。并且对DSL语句有自动补全功能。
重要
Elasticsearch和Kibana的版本要保持一致,否则可能出现版本不兼容的问题。
Docker安装Kibana
- 创建网络(之前创建了可以不用)
docker network create es-net
- 拉取镜像或加载本地镜像
docker pull docker.elastic.co/kibana/kibana:8.13.3
加载本地镜像:
docker load -i kibana.tar.gz
- 创建容器
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network es-net \
-p 5601:5601 \
kibana:8.13.3
相关信息
--name kibana
:指定容器名称为kibana。-e ELASTICSEARCH_HOSTS=http://es:9200
:设置elasticsearch的连接地址。es为之前创建的es容器的名称。--network es-net
:指定容器加入到es-net网络。-p 5601:5601
:将容器的5601端口映射到主机的5601端口。
kibana启动一般比较慢,需要多等待一会,可以通过命令查看日志:
docker logs kibana
- 启动容器
docker start kibana
测试Kibana是否安装成功,在浏览器中输入http://Linux主机IP地址:5601/
,如果有内容返回,则说明Kibana安装成功。
安装IK分词器
什么是分词器?
分词器主要作用将用户输入的一段文本,按照一定逻辑,分析成多个词语的一种工具。
例如:
- 华为手机 ---> 华为、手、手机
- 这是一个好消息! ---> 这、一个、好、消息、!
ElasticSearch默认的分词器是standard,它是基于词典的分词器,它对英文、数字、符号等进行分词,但是对于中文分词效果不好。
IK分词器是ElasticSearch官方提供的中文分词器,它可以对中文文本进行分词、提取关键词、生成拼音、提供搜索建议等功能。
ElasticSearch 内置分词器有以下几种:
- Standard Analyzer ○ 默认分词器,按词/字切分,小写处理 (英文)华 为 手 机
- Simple Analyzer ○ 按照非字母切分(符号被过滤),小写处理
- Stop Analyzer ○ 小写处理,停用词过滤(the,a,is)
- Whitespace Analyzer ○ 按照空格切分,不转小写
- Keyword Analyzer ○ 不分词,直接将输入当作输出
- Patter Analyzer ○ 正则表达式,默认\W+(非字符分割) (中文会被去掉)
- Language ○ 提供了30多种常见语言的分词器
ES提供了一个接口给我们来验证分词效果,如下所示:
# 分词效果验证
GET _analyze
{
"text": "我爱写代码",
"analyzer": "standard"
}
返回结果: Elasticsearch内置分词器对中文很不友好(偏好英文),处理方式为一个字一个词,所以分词效果不好。
IK分词器
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。是一个基于Maven构建的项目,具有60万字/秒的高速处理能力,并且支持用户词典扩展定义。
IKAnalyzer又称庖丁解牛分词器
下载地址:IKAnalyzer下载地址
分词器的核心
- 词库
- 分词算法
○ ik_smart:最小分词法
■ 我是程序员 -> 我、是、程序员
○ ik_max_word:最细分词法
■ 我是程序员 -> 我、是、程序员、程序、员
window安装IK分词器:
- 下载IKAnalyzer压缩,如
D:\elasticsearch-analysis-ik-8.13.3
。 - 在es目录下的plugin目录中新建文件夹ik,将解压后的IKAnalyzer文件夹拷贝到ik目录下。
- 启动ES。
- 验证分词效果。
Docker安装IK分词器:
- 在线安装ik插件(较慢)
# 进入容器内部
docker exec -it es /bin/bash
# 下载ik插件
cd /usr/share/elasticsearch/bin
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.13.3/elasticsearch-analysis-ik-8.13.3.zip
#退出
exit
#重启容器
docker restart es
- 离线安装ik插件(推荐)
- 查看数据卷目录
安装插件需要知道elasticsearch的plugins目录位置,而我们用了数据卷挂载,因此需要查看elasticsearch的数据卷目录,通过下面命令查看:
docker volume inspect es-plugins
es-plugins是对es容器内plugins目录的挂载,因此我们需要查看es-plugins的挂载位置。
结果:
[
{
"CreatedAt": "2022-05-06T10:06:34+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/es-plugins/_data",
"Name": "es-plugins",
"Options": null,
"Scope": "local"
}
]
可以看到,es-plugins的挂载位置是/var/lib/docker/volumes/es-plugins/_data。
解压缩分词器安装包
将解压的ik目录上传至/var/lib/docker/volumes/es-plugins/_data目录
重启容器
docker restart es
扩展词词典
随着互联网的发展,“造词运动”也越发的频繁。出现了很多新的词语,在原有的词汇列表中并不存在。比如:“奥力给”,“白嫖” 等。 所以我们的词汇也需要不断的更新,IK分词器提供了扩展词汇的功能。
- 打开IK分词器config目录: 文件路径:/usr/share/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml
2. 在IKAnalyzer.cfg.xml配置文件内容添加:
<entry key="ext_dict">custom/mydict.dic</entry>
3. 自定义词典文件mydict.dic,文件路径:/usr/share/elasticsearch/plugins/ik/config/custom/mydict.dic
- 重启ES
重启ES后,我们就可以使用自定义词典了。
- 验证分词效果
停用词词典
在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。
IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。
- IKAnalyzer.cfg.xml配置文件内容添加:
<entry key="ext_stopwords">custom/stopwords.dic</entry>
- 在 stopword.dic 添加停用词词典
- 重启ES