elasticsearch+ik+head+集群

版权声明:创作不易,转载请声明博客地址,谢谢! https://blog.csdn.net/Is_I_black/article/details/82895646

前置工作

当前服务器为CentOS7+ 64bit

新建 elasticsearch用户,ES无法用root启动

groupadd elasticsearch

useradd elasticsearch -g elasticsearch

chown -R elasticsearch:elasticsearch /XXX目录

获取elasticsearch,本文用的v2.4.0 找到要获取的版本

(https://www.elastic.co/downloads/past-releases)

ES已经有5.x版本,然而Spring data目前还只支持ES2.x版本,Springdata支持ES版本说明

(https://github.com/spring-projects/spring-data-elasticsearch/wiki/Spring-Data-Elasticsearch---Spring-Boot---version-matrix)

了解ES与mysql的对应关系 

index –> DB 

type –> Table 

Document –> row

安装head两种方法

一. elasticsearch5.0版本以下HEAD安装方式

1), 直接安装

./bin/plugin install mobz/elasticsearch-head

2),zip包安装

1. https://github.com/mobz/elasticsearch-head下载zip 解压 2. 建立elasticsearch-2.4.0\plugins\head文件 3. 将解压后的elasticsearch-head-master文件夹下的文件copy到head 4. 运行es

3), 安装其他插件

${ES_HOME}/bin/plugin --install lukas-vlcek/bigdesk

# 安装完成访问:http://localhost:9200/_plugin/bigdesk/#nodes

${ES_HOME}/bin/plugin -install royrusso/elasticsearch-HQ

# 安装完成访问:http://localhost:9200/_plugin/HQ/

${ES_HOME}/bin/plugin -install lmenezes/elasticsearch-kopf

# 安装完成访问:http://localhost:9200/_plugin/kopf/#!/cluster

官方的文档: 

https://github.com/mobz/elasticsearch-head

二.elasticsearch5.0以下版本可以直接在elasticsearch目录下执行对应的命令安装head插件,但是5.0以上不支持直接安装,所以需要借助其他方法安装head插件,要和elasticsearch的安装目录区别开

出处:https://blog.csdn.net/u012888052/article/details/79710429

ES安装

cd /opt

wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.0/elasticsearch-2.4.0.tar.gz

tar -zxvf elasticsearch-2.4.0.tar.gz

mv elasticsearch-2.4.0 /usr/es/elasticsearch

vim /usr/es/elasticsearch/config/elasticsearch/elasticsearch.yml

 

mkdir /usr/es/data

mkdir /usr/es/logs

IK插件安装

可以根据参考官网查找elasticsearch版本对应的ik版本和安装ik的教程

https://github.com/medcl/elasticsearch-analysis-ik

第一步在https://github.com/medcl/elasticsearch-analysis-ik/releases

中找到elasticsearch的ik对应版本,我这里是2.4.0,对应版本为v1.10.0

cd /usr/es/elasticsearch/plugins/

mkdir ik(以root身份)

cd ik

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v1.10.0/elasticsearch-analysis-ik-1.10.0.zip

unzip elasticsearch-analysis-ik-1.10.0.zip

mv elasticsearch-analysis-ik-1.10.0.zip /opt/elasticsearch-analysis-ik-1.10.0.zip

如果es启动了需要重启才能生效

测试ik以下命令报错

上面这个rest请求在2.4.0版本的es服务器上会执行失败,原因是es 2.3.4上面还没有text这种类型,"type":"text" 改为 "type":"String"即可

HEAD插件安装

如果是5.0版本以上那么

cd /opt

wget https://github.com/mobz/elasticsearch-head/archive/master.zip

tar -zxvf master.zip

mv elasticsearch-head-master /usr/es/elasticsearch-head-master

如果是5.0以下版本那么(参考上面说的几种方式)

cd /usr/es/elasticsearch

./bin/plugin install mobz/elasticsearch-head

增加hostname,设置所有主机都能访问

vim Gruntfile.js

vim _site/app.js

将localhost换成ip,我用的2.4.0用./bin/plugin install mobz/elasticsearch-head方式下载的head插件该js里没有找到该方法,就忽略了

安装node之前如果有自带工具,先卸载之前的node和npm

1.自带工具删除

yum remove nodejs npm -y

2.手动删除残留

进入 /usr/local/lib 删除所有 node 和 node_modules文件夹

进入 /usr/local/include 删除所有 node 和 node_modules 文件夹

进入 /usr/local/bin 删除 node 的可执行文件node和npm

检查 ~ 文件夹里面的"local" "lib" "include" 文件夹,然后删除里面的所有 "node" 和 "node_modules" 文件夹

安装node

cd /opt

mkdir node

cd node

wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz

tar -zxvf node-v4.4.7-linux-x64.tar.gz

配置环境变量

vim /etc/profile

#node

export NODE_HOME=/opt/node/node-v4.4.7-linux-x64

export PATH=$PATH:$NODE_HOME/bin

export NODE_PATH=$NODE_HOME/lib/node_modules

source /etc/profile

配置环境目录

ln -s /opt/node/node-v4.4.7-linux-x64/bin/node /usr/local/bin/node

ln -s /opt/node/node-v4.4.7-linux-x64/bin/npm /usr/local/bin/npm

在head目录下执行

npm install -g grunt-cli 或 npm install -g grunt //执行后会生成node_modules文件夹

如果5.0以上

cd /usr/es/elasticsearch-head-master

npm install -g grunt-cli

如果5.0以下

cd /usr/es/elasticsearch/plugins/head/

npm install -g grunt-cli

然后后台执行

nohup grunt server &

如果出现

说明Gruntfile.js缺少对应的依赖,可以忽略命令后加上 --force

否则可以去下载对应的module,命令如下:

npm install grunt-contrib-clean

npm install grunt-contrib-concat

npm install grunt-contrib-watch

npm install grunt-contrib-connect

npm install grunt-contrib-copy

npm install grunt-contrib-jasmine

附Grunt常用插件说明:

1)grunt-contrib-uglify:压缩js代码

2)grunt-contrib-concat:合并js文件

3)grunt-contrib-qunit:单元测试

4)grunt-contrib-jshint:js代码检查

5)grunt-contrib-watch:文件监控

6)grunt-contrib-sass:Scss编译

7)grunt-contrib-connect:建立本地服务器

最后后台启动ES(前台启动当然是将 -d去掉啦)

./usr/es/elasticsearch/bin/elasticsearch -d

在浏览器ip:9100访问,如果没有head插件则访问ip:9200

测试一下,往搜索引擎放点数据

curl -XPUT 'http://192.168.110.66:9200/myappname/myblog/1?pretty' -d '{"title":"我的标题","content":"我的内容"}

curl -XPUT 'http://192.168.110.66:9200/myappname/myblog/2?pretty' -d '{"title":"第二篇标题","content":"第二篇内容"}

或者通过head插件插入

读取刚刚录入的数据

curl -XGET 'http://192.168.110.66:9200/myappname/myblog/_search?pretty=true' -d '{"query":{"match_all":{}}}'

或者通过head插件查询

用的是post,不知道为啥get会搜索出全部的,并没有按关键词搜索

测试之前安装的ik插件是否生效

并且实验ik插件不同的切词效果

通过返回结果可以看出,ik_max_word切词把中华人民共和国国歌切成了“中华人民共和国”、“中华人民”、“中华”、“华人”、“人民共和国”、“人民”、“共和国”、“共和”、“国”、“国歌”

也就是说我们搜索这些词中的任意一个都能把这句话搜到,如果不安装ik插件的话,那只会切成:“中”、“华”、“人”、“民”、“共”、“和”、“国”、“国”、“歌”,不够智能,搜索也不好进行了

"analyzer"可以为“ik","ik_smart","ik_max_word”,选择不同的切词效果

上面几条命令都是json形式,elasticSearch就是这么人性化,没治了。

这里面的myappname是你自己可以改成自己应用的名字,这在elasticSearch数据存储中是完全隔离的,而myblog是我们在同一个app中想要维护的不同的数据,就是你的不同数据,比如文章、用户、评论,他们最好都分开,这样搜索的时候也不会混

pretty参数就是让返回的json有换行和缩进,容易阅读,调试时可以加上,开发到程序里就可以去掉了

analyzer就是切词器,我们指定的ik_max_word在前面配置文件里遇到过,表示最大程度切词,各种切,360度切

返回结果里的hits就是“命中”,total是命中了几条,took是花了几毫秒,_score就是相关性程度,可以用来做排序的依据

集群安装

仅为了测试,将集群部署在一台虚拟机上

cp -R /usr/es /usr/es1

cp -R /usr/es /usr/es2

分别进入到es对应的elasticsearch.yml修改配置文件

vim /usr/es/elasticsearch/config/elasticsearch.yml

cluster1

cluster2

cluster3

cluster.name: es

node.name: es-node03

path.data: /usr/es2/data

path.logs: /usr/es2/logs

network.bind_host: 192.168.110.66

network.publish_host: 192.168.110.66

network.host: 0.0.0.0

http.cors.enabled: true

http.cors.allow-origin: "*"

http.port: 9202

tansport.tcp.port: 9302

discovery.zen.ping.unicast.hosts: ["192.168.110.66", "192.168.110.66:9301","192.168.110.66:9302"]

discovery.zen.minimum_master_nodes: 2

discovery.zen.ping.timeout: 40s

discovery.zen.ping.multicast.enabled: false

PS:黑色字体部分为单机配置

总结启动elasticsearch和head插件(无法访问 iptables -F 关闭防火墙试试)

su elasticsearch

------------------------------------------------

单机

/usr/es/elasticsearch/bin/elasticsearch -d

集群

/usr/es/elasticsearch/bin/elasticsearch -d

/usr/es1/elasticsearch/bin/elasticsearch -d

/usr/es2/elasticsearch/bin/elasticsearch -d

-------------------------------------------------

cd /usr/es/elasticsearch/plugins/head/

nohup grunt server &

Ps:

一.运行

编辑 /usr/es/elasticsearch/bin/elasticsearch.in.sh, 设置 ES_MIN_MEM和ES_MAX_MEM,确保二者数值一致,或者可以在启动es时指定,

/usr/es/elasticsearch/bin/elasticsearch -d -Xms512m -Xmx512m

二.关闭

前台运行:可以通过”CTRL+C”组合键来停止运行

后台运行,可以通过”kill -9 进程号”停止.也可以通过REST API接口:

curl -XPOST http://主机IP:9200/_cluster/nodes/_shutdown

来关闭整个集群,通过:

curl -XPOST http://主机IP:9200/_cluster/nodes/节点标示符(如es-node01)/_shutdown

https://blog.csdn.net/m0_38110132/article/details/80390072

https://blog.csdn.net/sulei12341/article/details/52935271

http://www.cnblogs.com/Onlywjy/p/Elasticsearch.html

https://www.cnblogs.com/softidea/p/6081326.html

https://blog.csdn.net/andyzhaojianhui/article/details/75195296

猜你喜欢

转载自blog.csdn.net/Is_I_black/article/details/82895646