Elasticsearch 安装和配置教程
2018-05-30| 程成| 1533| 3| 软件工具

一、Elasticsearch 是什么


ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。


二、什么时候用 Elasticsearch


我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题及可能出现的更多其它问题。


三、如何安装 Elasticsearch


3.1 介质


介质下载地址

介质

软件名称

版本

下载地址

下载 密码

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



3.2 安装前准备

1、安装JDK


1) 安装 JDK 之前,先检查下有没有系统自带的 JDK,如果存在建议卸载,卸载方法如下:

#rpm qa | grep java


2) 卸载以 java 开头的文件,如下图:

image.png

#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

image.png


2、配置环境变量


1) 添加 elasticsearch 用户

为安全起见这里仅采用修改用户环境变量的方式设置环境变量,假设使用jdk的用户为elasticsearch,添加elasticsearch用户、密码,提示输入密码,并验证密码,如下图:

#useradd elasticsearch

#passwd elasticsearch

image.png


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

image.png


修改文件后要想马上生效还要运行source /etc/profile不然只能在下次重启时生效。

#source /etc/profile



3.3 开始安装 Elasticsearch

1、root用户将文件包进行解压,执行如下命令

#cd /data/soft

#unzip elasticsearch-2.3.4-dist.zip

#mv elasticsearch-2.3.4 /usr/local/elasticsearch


2、新增管理用户

1) 执行以上操作后,系统将会自动在/usr/local/目录下创建elasticsearch目录,并将所有文件解压到其下。以上所有操作都是在root身份下操作的,由于elasticsearch不能使用root 启动,之前我们创建一个 elasticsearch 的用户,所以以后我们管理elasticsearch 一定要使用 elasticsearch用户。


2) 将/usr/local/elasticsearch的所有文件拥有者改为elasticsearch,执行命令:

#chown -R elasticsearch:elasticsearch /usr/local/elasticsearch


3、 修改配置文件

以下操作使用 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


4、开启9200端口

使用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 //查看端口状态


5、启动 elasticsearch

$cd /usr/local/elasticsearch/bin/

$./elasticsearch //启动

注意: 采用上述命令启动后,按ctrl+c退出后即elasticsearch关闭,隐藏在后台运行采用 ./bin/elasticsearch –d


6、查看 java 进程

# ps -ef | grep java

image.png



四、安装插件


1、Head 插件安装


$ cd /usr/local/elasticsearch/bin/

$./plugin install mobz/elasticsearch-head


image.png

重启ES,一定要使用 elasticsearch用户操作


#su - elasticsearch  // 切换到 elasticsearch 用户

$ps -ef | grep java   //检查是否已经启动过如果存在java的 ES 进程要先杀掉kill -9 进程号杀掉后最好再确认一下是否还存在ES的进程确认没有后再执行下面的启动命令

$ cd /usr/local/elasticsearch/bin/ && ./elasticsearch -d // 启动ES

image.png


如果使用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/

image.png

2、IK 分词器

地址: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插件

image.png


如果有返回如上图右边的数据说明安装成功

从结果看,短语被分成了合理的词语,不再是独立的无意义的单词;如果是中文全文检索的话,推荐使用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



五、安装 elasticsearch-jdbc


创建测试数据库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 的安装和配置。



×
作者:程成
QQ:492245711