ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题及可能出现的更多其它问题。
介质下载地址: | ||||
介质 | 软件名称 | 版本 | 下载地址 | 下载 密码 |
Jdk | jdk-8u131-linux-x64.rpm | 1.8 | https://pan.baidu.com/s/1y7dDxCJ29RBWYVTuZe6W6Q | u97f |
Elasticsearch | elasticsearch-2.3.4-dist.zip | 2.3.4 | https://pan.baidu.com/s/1pvkayhslH63ztFQVZMEpSQ | z8jn |
elasticsearch-analysis-ik | elasticsearch-analysis-ik-1.9.4.zip | 1.9.4 | https://pan.baidu.com/s/1MCdiDqMrELXcxdIwdU6m-Q | 23xa |
elasticsearch-jdbc | elasticsearch-jdbc-2.3.4.0-dist.zip | 2.3.4.0 | https://pan.baidu.com/s/1VdAFPv5OGMOM7oOJ2oIQ9Q | lyfr |
1) 安装 JDK 之前,先检查下有没有系统自带的 JDK,如果存在建议卸载,卸载方法如下:
#rpm –qa | grep java |
2) 卸载以 java 开头的文件,如下图:
#rpm -e java-1.7.0-openjdk-devel-1.7.0.131-2.6.9.0.el6_8.x86_64 --nodeps |
卸载后输入:
#java -version |
提示-bash: /usr/bin/java: No such file or directory,或者 bash: java: command not found表示已卸载成功。
3) 安装
使用root用户进入/data/soft/路径下,事先已经将jdk上传到该目录下,执行安装命令:
#rpm -ivh jdk-8u131-linux-x64.rpm |
安装好后查看jdk版本,如下图:
#java -version |
1) 添加 elasticsearch 用户
为安全起见这里仅采用修改用户环境变量的方式设置环境变量,假设使用jdk的用户为elasticsearch,添加elasticsearch用户、密码,提示输入密码,并验证密码,如下图:
#useradd elasticsearch #passwd elasticsearch |
2)修改环境变量
使用root用户编辑/etc/profile文件
#vim /etc/profile |
加入如下内容后保存退出,如下图:
export JAVA_HOME=/usr/java/jdk1.8.0_131 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar |
修改文件后要想马上生效还要运行source /etc/profile不然只能在下次重启时生效。
#source /etc/profile |
#cd /data/soft #unzip elasticsearch-2.3.4-dist.zip #mv elasticsearch-2.3.4 /usr/local/elasticsearch |
1) 执行以上操作后,系统将会自动在/usr/local/目录下创建elasticsearch目录,并将所有文件解压到其下。以上所有操作都是在root身份下操作的,由于elasticsearch不能使用root 启动,之前我们创建一个 elasticsearch 的用户,所以以后我们管理elasticsearch 一定要使用 elasticsearch用户。
2) 将/usr/local/elasticsearch的所有文件拥有者改为elasticsearch,执行命令:
#chown -R elasticsearch:elasticsearch /usr/local/elasticsearch |
以下操作使用 elasticsearch 用户
#su - elasticsearch $cd /usr/local/elasticsearch/config/ |
在修改配置前请先备份原文件
$cp elasticsearch.yml elasticsearch.yml.bak $vim elasticsearch.yml |
cluster.name: yidian-application # 集群名称cluster name
node.name: node-1 #节点名称
network.host: 121.248.220.* #绑定IP和端口(0.0.0.0 是不绑定)
http.port: 9200.启动elasticsearch
使用root用户设置防火墙及端口9200
#su - root #/sbin/iptables -I INPUT -p tcp --dport 9200 -j ACCEPT #/etc/rc.d/init.d/iptables save #/etc/init.d/iptables status //查看端口状态 |
$cd /usr/local/elasticsearch/bin/ $./elasticsearch //启动 |
注意: 采用上述命令启动后,按ctrl+c退出后即elasticsearch关闭,隐藏在后台运行采用 ./bin/elasticsearch –d
# ps -ef | grep java |
$ cd /usr/local/elasticsearch/bin/ $./plugin install mobz/elasticsearch-head |
重启ES,一定要使用 elasticsearch用户操作
#su - elasticsearch // 切换到 elasticsearch 用户 $ps -ef | grep java //检查是否已经启动过,如果存在java的 ES 进程要先杀掉kill -9 进程号,杀掉后最好再确认一下是否还存在ES的进程,确认没有后再执行下面的启动命令 $ cd /usr/local/elasticsearch/bin/ && ./elasticsearch -d // 启动ES |
如果使用root启动过,可能elasticsearch的目录文件的权限有所改变,则要将elasticsearch的目录权限改回来
$su - root // 切换到 root 用户,此时要输入 root 的密码 #cd /usr/local/elasticsearch #chown -R elasticsearch:elasticsearch . #chmod -R 775 logs/ |
测试head是否安装成功
http://192.168.232.130:9200/_plugin/head/
地址:https://github.com/medcl/elasticsearch-analysis-ik,此处需要注意的是版本匹配问题,不同的IK分词器版本对应不同的Elasticsearch版本:
IK version | ES version |
master | 5.x -> master |
5.3.0 | 5.3.0 |
5.2.2 | 5.2.2 |
5.1.2 | 5.1.2 |
1.10.1 | 2.4.1 |
1.9.5 | 2.3.5 |
1.8.1 | 2.2.1 |
1.7.0 | 2.2.1 |
1.5.0 | 2.0.0 |
1.2.6 | 1.0.0 |
1.2.5 | 0.90X |
1.1.3 | 0.20X |
1.0.0 | 0.16.2 -> 0.19.0 |
#chown -R elasticsearch:elasticsearch /data/soft/elasticsearch-* #su – elasticsearch $cd /usr/local/elasticsearch/plugins $mkdir ik && cd ik $cp /data/soft/elasticsearch-analysis-ik-1.9.4.zip ik.zip $unzip ik.zip && rm -rf ik.zip |
重启 ES 测试 IK:
http://192.168.232.130:9200/_analyze?analyzer=ik&pretty=true&text=中华人民共和国
或者使用head插件
如果有返回如上图右边的数据,说明安装成功
从结果看,短语被分成了合理的词语,不再是独立的无意义的单词;如果是中文全文检索的话,推荐使用IK分词
使用root用户操作 #cd /data/soft/ #unzip elasticsearch-jdbc-2.3.4.0-dist.zip #mv elasticsearch-jdbc-2.3.4.0 /usr/local/elasticsearch-jdbc #cd /usr/local/ #chown -R elasticsearch:elasticsearch elasticsearch-jdbc/ $su - elasticsearch $cd /usr/local/elasticsearch-jdbc/bin $mkdir logs $chmod –R 777 logs |
创建测试数据库blog并新建测试表test插入一条数据
USE `blog`;
/*Table structure for table `test` */
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `text` varchar(200) NOT NULL, `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
/*Data for the table `test` */
insert into `test`(`id`,`text`,`update_time`) values (1,'这是测试elasticsearch-jdbc','2017-04-26 16:05:28'); |
创建 es-yidian.sh 文件保存到 /usr/local/elasticsearch-jdbc/bin/ 目录下
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH
bin=/usr/local/elasticsearch-jdbc/bin lib=/usr/local/elasticsearch-jdbc/lib
echo '{ "type" : "jdbc", "statefile" : "statefiletest.json", "jdbc": { "url" : "jdbc:mysql://127.0.0.1:3306/blog?useSSL=true", "user" : "root", "password" : "admin", "elasticsearch" : { "cluster" : "yidian-application", "host" : "127.0.0.1", "port" : 9300 }, "sql" : "SELECT \"blog_test\" AS _index,id AS _id,id,text FROM test", "type" : "mytype", "index": "myindex" } }' | java \ -cp "${lib}/*" \ -Dlog4j.configurationFile=${bin}/log4j2.xml \ org.xbib.tools.Runner \ org.xbib.tools.JDBCImporter |
启动脚本
$./es-yidian.sh |
创建es-yidian-Incremental.sh文件保存到/usr/local/elasticsearch-jdbc/bin/目录下
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH
bin=/usr/local/elasticsearch-jdbc/bin lib=/usr/local/elasticsearch-jdbc/lib
echo '{ "type" : "jdbc", "statefile" : "statefiletest.json", "jdbc": { "url" : "jdbc:mysql://127.0.0.1:3306/blog?useSSL=true", "user" : "root", "password" : "admin", "schedule" : "0 * * * * ?", "metrics" : { "enabled" : true }, "elasticsearch" : { "cluster" : "yidian-application", "host" : "127.0.0.1", "port" : 9300 }, "sql" : [ { "statement" : "SELECT \"blog_test\" AS _index,id AS _id,id,text FROM test WHERE update_time > ?", "parameter" : [ "$metrics.lastexecutionstart" ] } ], "type" : "mytype", "index": "myindex" } }' | java \ -cp "${lib}/*" \ -Dlog4j.configurationFile=${bin}/log4j2.xml \ org.xbib.tools.Runner \ org.xbib.tools.JDBCImporter |
后台运行增量脚本并动态查看日志
$nohup ./es-yidian-Incremental.sh > logs/es-yidian-Incremental.out 2>&1 & $tail –f logs/es-yidian-Incremental.out |
Elasticsearch github 地址:https://github.com/jprante/elasticsearch-jdbc
通过以上方法,你可以实现对 Elasticsearch 的安装和配置。