Elasticsearch PHP MYSQL的同步使用

雷顿大数据技术学院: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。需要安装以下依赖

  1. jdk,jdk需要使用1.8版本,如果使用1.7版本会报错。

  2. ES安装,安装ES一定要注意ES的版本,笔者安装的是2.3.2版本

  3. 安装php,php至少为5.3.9版本,否则无法使用ES,笔者安装的是5.6.3版本。

  4. php composer安装,并更改composer的镜像为国内

  5. 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 image

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值