最近遇到一个需求,需要用到Elasticsearch,于是开始学习Elasticsearch。
我是个学东西先学实操再理论的人。所以开始着手安装Elasticsearch,并进行记录。
目录
- 一、Elasticsearch部署
- Windows安装
- 1 下载
- 2 解压
- 3 配置文件
- 3.1 jvm.options
- 3.2 elasticsearch.yml
- 4 初始化Elasticsearch
- 5 访问
- 6 以服务的方式安装
- 6.1 配置环境变量
- 6.2 Path变量添加
- 6.3 安装服务
- 6.4 操作命令
- linux安装
- 1 镜像下载
- 2 配置文件
- 3 启动
- 4 访问
- 二、ElasticSearch-Head插件
- 拉去镜像
- 运行镜像
- 连接
- Content-Type header请求头错误
一、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插件
提供可视化的操作页面对ElasticSearch搜索引擎进行各种设置和数据检索功能的管理插件
这里只以在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端口操作,已不出现请求头错误