雷顿大数据技术学院:http://www.leidun.site/
简介与用途
Elasticsearch是一个分布式,RESTful模式的高速搜索引擎,它使用标准的RESTful APIs和JSON,同时提供支持如java,python,php等的多种语言。下文将Elasticsearch简称ES。
一个简单的curl查询数据的示例如下:
curl -XGET 'localhost:9200/sedoctorfeedback/feedback/_search?pretty&q=119'
ES使用诸如XPUT,XDELETE,XPOST,XGET等RESTful模式完成数据的增删改查操作。本例意思是找到sedoctorfeedback索引里type为feedback的数据,查询条件是119,这是全文搜索,fulltext。查询结果如下:
{ "took" : 29, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 1.386767, "hits" : [ { "_index" : "sedoctorfeedback", "_type" : "feedback", "_id" : "119", "_score" : 1.386767, "_source" : { "id" : 119, "content" : "google地图无法正常显示", "contacttype" : "QQ", "contact" : "702865206", "questiontype" : 4, "seversion" : "5.0.1.9", "ieversion" : "6", "osversion" : "win_xp_32", "img" : 0, "joindate" : "2012-03-14T00:00:00.000+08:00", "addtime" : "2012-03-14T15:29:34.000+08:00", "qid" : "", "extension1" : "", "extension2" : "", "extension3" : "" } } ] } }
同样,可以使用php查询数据,若使用php语法代码如下:
<?php$params = array();$params['hosts'] = array ( '127.0.0.1:9200', // IP + Port);require 'vendor/autoload.php';$client = new Elasticsearch\Client($params);$params = array( 'index' => 'sedoctorfeedback', 'type' => 'feedback', 'id' => 119, ); try { $resp = $client->get($params); } catch (Exception $ex) { $resp = $ex->getMessage(); } var_dump($resp);
执行php程序返回结果和上例相同。
环境安装
我们的目的是将mysql数据同步到ES,通过php查询ES。需要安装以下依赖
jdk,jdk需要使用1.8版本,如果使用1.7版本会报错。
ES安装,安装ES一定要注意ES的版本,笔者安装的是2.3.2版本
安装php,php至少为5.3.9版本,否则无法使用ES,笔者安装的是5.6.3版本。
php composer安装,并更改composer的镜像为国内
Elasticsearch-jdbc安装,版本要和ES的版本对应。
1 安装JDK
先检查系统有没有jdk,一般centos会自带jdk,检查如下
$ rpm -qa | grep jdk java-1.7.0-openjdk-1.7.0.101-2.6.6.4.el6_8.x86_64 java-1.7.0-openjdk-devel-1.7.0.101-2.6.6.4.el6_8.x86_64
centos自带的是1.7版本的jdk,这个不能用,笔者就在这里栽了坑。这时需要先将系统自带的jdk删掉,如下
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.101-2.6.6.4.el6_8.x86_64
到(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) 选择jdk版本。在选择版本之前先看自己的linux是32位还是64位的,使用uname -a 查看系统版本。
$ uname -a Linux gz01v.brow.corp.qihoo.net 2.6.32-220.4.2.el6.x86_64 #1 SMP Tue Feb 14 04:00:16 GMT 2012 x86_64 x86_64 x86_64 GNU/Linux
可知笔者系统是64位的,因此选择了如下jdk