最近遇到一个需求,需要用到Elasticsearch,于是开始学习Elasticsearch。
我是个学东西先学实操再理论的人。所以开始着手安装Elasticsearch,并进行记录。
目录
一、Elasticsearch部署
Windows安装
注意:我这里是基于8.6.2版本进行安装的
1 下载
通过官网进行下载
https://www.elastic.co/cn/downloads/elasticsearch
根据自己系统下载对应版本的Elasticsearch
2 解压
解压到自己想存放的目录,以我自己为例,我放在了D盘的Program Files文件夹下
3 配置文件
进入config目录,配置文件
3.1 jvm.options
添加以下内容,设置编码,处理乱码问题
-Dfile.encoding=GBK
3.2 elasticsearch.yml
添加以下内容,添加跨域配置
http.cors.enabled: true
http.cors.allow-origin: “*”
4 初始化Elasticsearch
进入bin目录,运行elasticsearch.bat
第一次运行较久,窗口会提供账号及密码,需要记住
5 访问
通过浏览器访问https://localhost:9200
输入初始化时提供的账户和密码,访问成功
6 以服务的方式安装
为了方便启动,不用每一次启动后有窗口,将Elasticsearch作为服务进行管理。
6.1 配置环境变量
将Elasticsearch的安装目录设置为环境变量ES_HOME
6.2 Path变量添加
在系统环境变量里添加
%ES_HOME%\bin
6.3 安装服务
打开命令窗口,输入命令:
elasticsearch-service.bat install
6.4 操作命令
- 启动Elasticsearch服务:
elasticsearch-service.bat start
- 停止Elasticsearch服务:
elasticsearch-service.bat stop
- 安装Elasticsearch服务:
elasticsearch-service.bat install
- 卸载Elasticsearch服务:
elasticsearch-service.bat remove
- 启动 Elasticsearch 属性gui:
elasticsearch-service.bat manager
linux安装
我采用docker安装,如果服务器没装docker,看这个Linux部署Docker
1 镜像下载
输入命令,搜索elasticsearch提供的版本。
docker search elasticsearch
这里我选择下载7.0.0版本,因为只搜到这个版本的
docker pull elasticsearch:7.0.0
2 配置文件
创建对应文件夹用来挂载elasticsearch的事
mkdir /usr/local/es/config
mkdir /usr/local/es/data
mkdir /usr/local/es/plugins
创建配置文件elasticsearch.yml
cd /usr/local/es/config
touch elasticsearch.yml
添加以下内容
http.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: “*”
赋予文件夹权限
sudo chmod -R 777 /usr/local/es/
3 启动容器
输入命令启动es
sudo docker run --name elasticsearch --restart=always -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -v /usr/local/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/es/data:/usr/share/elasticsearch/data -v /usr/local/es/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.0.0
开放9200端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent && firewall-cmd --reload
4 访问
访问服务器的9200端口
二、ElasticSearch-Head插件
ES的一个可视化管理插件,用来监视ES的状态,并通过head客户端和ES服务进行交互,比如创建映射、创建索引等。从ES6.20开始,head插件支持使得node.js运行。
这里只以在linux环境上部署ElasticSearch-Head为例
拉取镜像
docker pull mobz/elasticsearch-head:5
启动容器
docker run -d --name elasticsearch-head --restart=always -p 9100:9100 mobz/elasticsearch-head:5
开放9100端口
firewall-cmd --zone=public --add-port=9100/tcp --permanent && firewall-cmd --reload
访问
访问9100端口,并连接elasticsearch端口9200
连接成功
Content-Type header请求头错误
虽然连接成功了,但是发现报了个请求头错误。
通过docker ps命令查看容器id
将容器中的vendor.js拷贝到宿主机
mkdir /usr/local/es_head
docker cp 4ab73a7d0a1c:/usr/src/app/_site/vendor.js /usr/local/es_head/
对vendor.js进行修改:
- 6886行 :contentType: "application/x-www-form-urlencoded修改为
contentType: “application/json;charset=UTF-8”- 7574行:var inspectData = s.contentType === “application/x-www-form-urlencoded” && 修改为
var inspectData = s.contentType === “application/json;charset=UTF-8” &&
先移除原有的elasticsearch-head容器,重新挂载文件后运行
docker stop elasticsearch-head
docker rm elasticsearch-head
docker run -d --name elasticsearch-head --restart=always -p 9100:9100 -v /usr/local/es_head/vendor.js:/usr/src/app/_site/vendor.js mobz/elasticsearch-head:5
再次在9100端口操作,已不出现请求头错误
三、Kibana插件
ES提供的一个基于Node.js的管理控制台, 可以很容易实现高级的数据分析和可视化,以图表的形式展现出来
拉取镜像
注意:拉取的kibana需要跟elasticsearch版本一致,我这里elasticsearch是7.0.0版本,所以拉取的kibana也得是7.0.0
docker pull kibana:7.0.0
文件挂载
创造Kibana挂载目录
mkdir -p /usr/local/kibana/config
切换到创建的目录下,创建配置文件kibana.yml,内容如下
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://{ip}:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"
{ip} 为es对应的ip
给挂载目录设置权限
chmod -R 777 /usr/local/kibana
启动容器
docker run --name kibana -v /usr/local/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml -p 5601:5601 -d kibana:7.0.0
开放5601端口
firewall-cmd --zone=public --add-port=5601/tcp --permanent && firewall-cmd --reload
访问
浏览器访问5601端口,成功