附录 ElasticSearch安装与启动

1.1 Linux版本安装

1.1.1 下载地址

https://www.elastic.co/cn/downloads/elasticsearch

1.1.2 Linux安装ElasticSearch

1、上传ElasticSearch安装包
elasticsearch-7.4.0-linux-x86_64.tar.gz
2、执行解压操作
# 将elasticsearch-7.4.0-linux-x86_64.tar.gz解压到opt文件夹下. -C 大写
tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /opt
3、创建普通用户
因为安全问题,ElasticSearch 不允许root用户直接运行,所以要创建新用户,用root创建新用户:
useradd atguigu # 新增atguigu用户
passwd atguigu # 为atguigu用户设置密码
5、为新用户授权,如下图
chown -R atguigu:atguigu /opt/elasticsearch-7.4.0 #文件夹所有者
将 /opt/elasticsearch-7.4.0文件夹授权给atguigu用户:atguigu用户组
6、修改elasticsearch.yml文件
vim /opt/elasticsearch-7.4.0/config/elasticsearch.yml

======================== Elasticsearch Configuration =========================
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: [“node-1”]
cluster.name:配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称
node.name:节点名,elasticsearch会默认随机指定一个名字,建议指定一个有意义的名称,方便管理
network.host:设置为0.0.0.0允许外网访问
http.port:Elasticsearch的http访问端口
cluster.initial_master_nodes:初始化新的集群时需要此配置来选举master
7、修改配置文件
新创建的atguigu用户最大可创建文件数太小,最大虚拟内存太小,切换到root用户,编辑下列配置文件, 添加类似如下内容
# 切换到root用户
su root

1. ===最大可创建文件数太小=======
vim /etc/security/limits.conf
# 在文件末尾中增加下面内容
atguigu soft nofile 65536
atguigu hard nofile 65536
# soft xxx : 代表警告的设定,可以超过这个设定值,但是超过后会有警告。
# hard xxx : 代表严格的设定,不允许超过这个设定的值。
# nproc : 是操作系统级别对每个用户创建的进程数的限制
# nofile : 是每个进程可以打开的文件数的限制
# =====
vim /etc/security/limits.d/**20**-nproc.conf
# 在文件末尾中增加下面内容
atguigu soft nofile 65536
atguigu hard nofile 65536
hard nproc 4096
# 注:
代表Linux所有用户名称

2. ===最大虚拟内存太小=======
vim /etc/sysctl.conf
# 在文件中增加下面内容
vm.max_map_count=655360
# 重新加载,输入下面命令:
sysctl -p
8、启动elasticsearch
su atguigu # 切换到atguigu用户启动
cd /opt/elasticsearch-7.4.0/bin
./elasticsearch #启动

1.1.3 访问elasticsearch

1、在访问elasticsearch前,请确保防火墙是关闭的,执行命令:
#暂时关闭防火墙
systemctl stop firewalld
#永久设置防火墙状态
systemctl enable firewalld.service #打开防火墙永久性生效,重启后不会复原
systemctl disable firewalld.service #关闭防火墙,永久性生效,重启后不会复原
浏览器输入http://192.168.149.135:9200/,如下图
day75-76_尚硅谷_ElasticSearch课件_Linux下安装ES_V3.0 - 图1
此时elasticsearch已成功启动:
重点几个关注下即可:
number” : “7.4.0” 表示elasticsearch版本
lucene_version” : “8.2.0” 表示lucene版本
name : 默认启动的时候指定了 ES 实例名称
cluster_name : 默认名为 elasticsearch

1.2 docker版本安装

拉取镜像
docker pull elasticsearch:7.4.0
# 创建容器
docker create —name elasticsearch —net host -e “discovery.type=single-node” -e “network.host=192.168.137.121” elasticsearch:7.4.0
# 启动
docker start elasticsearch
# 查看日志
docker logs elasticsearch

1.3 Kibana客户端【Linux下安装】

Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。
1、什么是Kibana
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。
Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。
2、上传kibana
kibana-7.4.0-linux-x86_64.tar.gz‬
2、解压kibana
tar -xzf kibana-7.4.0-linux-x86_64.tar.gz -C /opt
解压到当前目录(/opt)下
3、修改kibana配置
vim /opt/kibana-7.4.0-linux-x86_64/config/kibana.yml

server.port: 5601
server.host: “0.0.0.0”
server.name: “kibana-atguigu”
elasticsearch.hosts: [“http://127.0.0.1:9200“]
elasticsearch.requestTimeout: 99999
server.port:http访问端口
server.host:ip地址,0.0.0.0表示可远程访问
server.name:kibana服务名
elasticsearch.hosts:elasticsearch地址
elasticsearch.requestTimeout:请求elasticsearch超时时间,默认为30000,此处可根据情况设置
4、启动kibana
由于kibana不建议使用root用户启动,如果用root启动,需要加—allow-root参数
# 切换到kibana的bin目录
cd /opt/kibana-7.4.0-linux-x86_64/bin
# 启动
./kibana —allow-root
5、访问kibana
浏览器输入http://192.168.149.135:5601
Discover:可视化查询分析器Visualize:统计分析图表Dashboard:自定义主面板(添加图表)Timelion:Timelion是一个kibana时间序列展示组件(暂时不用)Dev Tools:Console控制台(同CURL/POSTER,操作ES代码工具,代码提示,很方便)Management:管理索引库(index)、已保存的搜索和可视化结果(save objects)、设置 kibana 服务器属性。

1.4 IK分词器安装

将elasticsearch-analysis-ik-7.4.0.zip解压到新建的目录plugins/ik目录下
day75-76_尚硅谷_ElasticSearch课件_Linux下安装ES_V3.0 - 图2
记得一定要重启Elasticsearch!!!

1.4.1 使用IK分词器

IK分词器有两种分词模式:ik_max_word和ik_smart模式。
1、ik_max_word
会将文本做最细粒度的拆分,比如会将“乒乓球明年总冠军”拆分为“乒乓球、乒乓、球、明年、总冠军、冠军。
#方式一ik_max_word
GET /_analyze
{
analyzer“: “ik_max_word”,
text“: “乒乓球明年总冠军”
}
ik_max_word分词器执行如下:
{
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“ : 8,
type“ : “CN_WORD”,
position“ : 4
},
{
token“ : “冠军”,
start_offset“ : 6,
end_offset“ : 8,
type“ : “CN_WORD”,
position“ : 5
}
]
}

2、ik_smart
会做最粗粒度的拆分,比如会将“乒乓球明年总冠军”拆分为乒乓球、明年、总冠军。
#方式二ik_smart
GET /_analyze
{
analyzer“: “ik_smart”,
text“: “乒乓球明年总冠军”
}
ik_smart分词器执行如下:
{
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“ : 8,
type“ : “CN_WORD”,
position“ : 2
}
]
}

由此可见 使用ik_smart可以将文本“text”: “乒乓球明年总冠军”分成了【乒乓球】【明年】【总冠军】
这样看的话,这样的分词效果达到了我们的要求。

1.5 自定义词库

请观察结果
蓝瘦香菇:网络用语难受,想哭的意思
喜大普奔:其实就是““喜闻乐见、大快人心、普天同庆、奔走相告”四个词的缩写
day75-76_尚硅谷_ElasticSearch课件_Linux下安装ES_V3.0 - 图3
这样的分词效果不是我们想要的,我们希望喜大普奔作为一个词。

1.5.1 自定义词库

修改/opt/elasticsearch-7.4.0/plugins/ik/config/KAnalyzer.cfg.xml

<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE properties SYSTEM “http://java.sun.com/dtd/properties.dtd“>

IK Analyzer 扩展配置





**http://192.168.137.3/fenci/myword.txt**


修改完配置文件,需要重启elasticsearch服务

1.5.2 按照标红的路径利用nginx发布静态资源

  1. 在nginx.conf中配置 | server {
    listen 80;
    server_name 192.168.137.3;
    location /fenci/ {
    root es;
    }
    } | | —- |

  2. 并且在/usr/local/nginx/下建/es/fenci/目录,目录下加myword.txt

myword.txt中编写关键词,每一行代表一个词。

  1. 启动nginx。
  2. 在浏览器中访问自定义词库:http://192.168.137.3/fenci/myword.txt

火狐浏览器默认GBK
day75-76_尚硅谷_ElasticSearch课件_Linux下安装ES_V3.0 - 图4

day75-76_尚硅谷_ElasticSearch课件_Linux下安装ES_V3.0 - 图5

day75-76_尚硅谷_ElasticSearch课件_Linux下安装ES_V3.0 - 图6

  1. 在kibana中测试分词效果 | GET movie_index/_analyze
    {
    “analyzer”: “ik_max_word”,
    “text”: “蓝瘦香菇”
    } | {
    “tokens”: [
    {
    “token”: “蓝瘦香菇”,
    “start_offset”: 0,
    “end_offset”: 4,
    “type”: “CN_WORD”,
    “position”: 0
    },
    {
    “token”: “香菇”,
    “start_offset”: 2,
    “end_offset”: 4,
    “type”: “CN_WORD”,
    “position”: 1
    }
    ]
    } | | —- | —- | | GET /_analyze
    {
    “analyzer”: “ik_max_word”,
    “text”: “喜大普奔”
    } | {
    “tokens” : [
    {
    “token” : “喜大普奔”,
    “start_offset” : 0,
    “end_offset” : 4,
    “type” : “CN_WORD”,
    “position” : 0
    }
    ]
    } |