Elasticsearch使用教程

Elasticsearch是一款非常流行的搜索引擎,mall项目使用它实现了商品搜索功能,本节课程我们来讲解下Elasticsearch的使用。

Elasticsearch简介

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式的全文搜索引擎,基于restful web接口。Elasticsearch是用Java语言开发的,基于Apache协议的开源项目,是目前最受欢迎的企业搜索引擎。Elasticsearch广泛运用于云计算中,能够达到实时搜索,具有稳定,可靠,快速的特点。

注意:Elasticsearch、Kibana、ik分词器的版本要保持一致

Elasticsearch的安装

Windows下的安装

Elasticsearch

●下载Elasticsearch7.17.3版本的zip包,并解压到指定目录,下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-17-3

image.png

●安装中文分词器,注意下载与Elasticsearch对应的版本,下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

image.png

●下载完成后解压到Elasticsearch的plugins目录下;

image.png

●运行bin目录下的elasticsearch.bat启动Elasticsearch服务。

image.png

Kibana

●下载Kibana,作为访问Elasticsearch的客户端,请下载7.17.3版本的zip包,并解压到指定目录,下载地址:https://www.elastic.co/cn/downloads/past-releases/kibana-7-17-3

image.png

●运行bin目录下的kibana.bat,启动Kibana服务;

image.png

Linux下的安装

Elasticsearch、Kibana

如果没有安装docker的话,可以看我的这篇文章docker 安装教程

下载docker镜像:

# 存储和检索数据 
docker pull elasticsearch:7.4.2

# 可视化检索数据 
docker pull kibana:7.4.2

配置挂载数据文件夹

# 创建配置文件目录 
mkdir -p /mydata/elasticsearch/config

# 创建数据目录 
mkdir -p /mydata/elasticsearch/data

# 将/mydata/elasticsearch/文件夹中文件都可读可写 
chmod -R 777 /mydata/elasticsearch/

# 配置任意机器可以访问 elasticsearch 
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml

启动Elasticsearch

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \ -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \ -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d elasticsearch:7.8.0
  • -p 9200:9200 -p 9300:9300:向外暴露两个端口,9200用于HTTP REST API请求,9300 ES 在分布式集群状态下 ES 之间的通信端口;
  • -e “discovery.type=single-node”:es 以单节点运行
  • -e ES_JAVA_OPTS=“-Xms64m -Xmx512m”:设置启动占用内存,不设置可能会占用当前系统所有内存
  • -v:挂载容器中的配置文件、数据文件、插件数据到本机的文件夹;
  • -d elasticsearch:7.8.0:指定要启动的镜像
    访问 IP:9200 看到返回的 json 数据说明启动成功。
    在客户端访问 http://192.168.124.128:9200/ 你自己的ip地址

image.png

设置 Elasticsearch 随Docker启动

# 当前 Docker 开机自启,所以 ES 现在也是开机自启 
docker update elasticsearch --restart=always

# 取消
docker update elasticsearch --restart=no

启动可视化Kibana

docker run --name kibana \ 
-e ELASTICSEARCH_HOSTS=http://192.168.124.128:9200 \ 
-p 5601:5601 \ 
-d kibana:7.8.0

-e ELASTICSEARCH_HOSTS=http://192.168.124.128:9200: 这里要设置成自己的虚拟机IP地址 浏览器输入http://192.168.124.128:5601/ 测试:

image.png

设置 Kibana 随Docker启动

# 当前 Docker 开机自启,所以 kibana 现在也是开机自启 
docker update kibana --restart=always

# 取消 
docker update kibana --restart=no

安装ik分词器

下载

事前准备:
●IK 分词器属于 Elasticsearch 的插件,所以 IK 分词器的安装目录是 Elasticsearch 的 plugins 目录,在我们使用Docker启动 Elasticsearch 时,已经将该目录挂载到主机的 /mydata/elasticsearch/plugins 目录。
●IK 分词器的版本需要跟 Elasticsearch 的版本对应,当前选择的版本为 7.4.2,下载地址为:Github Release 或访问:镜像地址

# 进入挂载的插件目录 /mydata/elasticsearch/plugins 
cd /mydata/elasticsearch/plugins

# 安装 wget 下载工具 
yum install -y wget

# 下载对应版本的 IK 分词器(这里是7.4.2)
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip

这里已经在挂载的 plugins 目录安装好了 IK分词器。现在我们进入到 es 容器内部检查是否成功安装

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

# 查看 es 插件目录
ls /usr/share/elasticsearch/plugins 

# 可以看到 elasticsearch-analysis-ik-7.4.2.zip

所以我们之后只需要在挂载的目录/mydata/elasticsearch/plugins下进行操作即可。

解压
# 进入到 es 的插件目录 
cd /mydata/elasticsearch/plugins 

# 解压到 plugins 目录下的 ik 目录 
unzip elasticsearch-analysis-ik-7.4.2.zip -d ik 

# 删除下载的压缩包 
rm -f elasticsearch-analysis-ik-7.4.2.zip 

# 修改文件夹访问权限 
chmod -R 777 ik/
查看安装的ik插件
# 进入 es 容器内部 
docker exec -it elasticsearch /bin/bash

# 进入 es bin 目录 
cd /usr/share/elasticsearch/bin

# 执行查看命令 显示 ik
elasticsearch-plugin list

# 退出容器 
exit

# 重启
Elasticsearch docker restart elasticsearch

重启遇到错误:

Error response from daemon: driver failed programming external connectivity on endpoint elasticsearch (0cf6a38895d321cc793f1f26ebef2335b902328116db2cd01a50601090ff2d07): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9300 -j DNAT --to-destination 172.17.0.6:9300 ! -i docker0: iptables: No chain/target/match by that name.

解决:重启docker systemctl restart docker

测试 ik 分词器

GET my_index/_analyze

GET my_index/_analyze { "analyzer": "ik_max_word", "text":"蔡徐坤" }

image.png

这里对于默认词库中没有的词,不会有词语的组合,所以我们可以通过配置自定义词库或远程词库来实现对词库的扩展。

  • 23
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雁门看雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值