系统是Windows server 2003。

ElasticSearch是一个基于Lucene的稳定的、分布式、RESTFul的搜索引擎。其实所谓的RestFul就是它提供URL供你调用(建立索引和进行检索),不过直接这样使用实在是太凶残了。所以,它也提供了一系列client包,相当于将curl请求封装了,client包支持的语言包括Java、PHP、Python、Ruby和Perl等等。

PHP版的client包叫做elasticsearch-php,可以在Git_hub上下载。地址如下:https://github.com/elasticsearch/elasticsearch

要使用elasticsearch-php有如下三个要求:

1.PHP的版本在5.3.9以上,我用的是PHP5.3.23

2.在项目中使用Composor来管理包,下载地址如下:https://getcomposer.org/

3.在php.ini中开启curl和openssl

要使用elasticsearch,需要JDK的版本大于6,最好选择8吧,因为7有漏洞....

截一张需要的包图:

启动elasticsearch很简单,直接进入解压目录,运行elasticsearch.bat就可以了,看到最后console输出start,就启动成功了。

接下来介绍如何使用elasticsearch-php:

1.新建一个文件夹取名为test,此为项目文件夹

2.在里面放入一个命名为composer.json的文件,文件内容为:

  1. {
  2. "require":{
  3. "elasticsearch/elasticsearch" : "~1.2"
  4. }
  5. }

3.将composer.phar拷贝到test文件夹中,cd 到test文件夹,输入命令:php composer.phar install --no-dev  等待安装成功

这个时候test文件夹下面应该会出现vendor文件夹,里面有elasticsearch、composer、guzzle等文件夹,很多内容

4.这个时候,就可以使用elasticsearch进行建立索引和进行检索了

  1. <?php
  2. require_once('vendor/autoload.php');
  3. function get_conn(){
  4. $host = 'ip';
  5. $dbname = 'dbname';
  6. $user = 'user';
  7. $passwd = 'passwd';
  8. $conn = new PDO("pgsql:dbname=$dbname;host=$host",$user,$passwd);
  9. return $conn;
  10. }
  11. function create_index(){
  12. //Elastic search php client
  13. $client = new Elasticsearch\Client();
  14. $sql = "SELECT * FROM log";
  15. $conn = get_conn();
  16. $stmt = $conn->query($sql);
  17. $rtn = $stmt->fetchAll();
  18. //delete index which already created
  19. $params = array();
  20. $params['index'] = 'log_index';
  21. $client->indices()->delete($params);
  22. //create index on log_date,src_ip,dest_ip
  23. $rtnCount = count($rtn);
  24. for($i=0;$i<$rtnCount;$i++){
  25. $params = array();
  26. $params['body'] = array(
  27. 'log_date' => $rtn[$i]['log_date'],
  28. 'src_ip' => $rtn[$i]['src_ip'],
  29. 'dest_ip' => $rtn[$i]['dest_ip']
  30. );
  31. $params['index'] = 'log_index';
  32. $params['type'] = 'log_type';
  33. //Document will be indexed to log_index/log_type/autogenerate_id
  34. $client->index($params);
  35. }
  36. echo 'create index done!';
  37. }
  38. function search(){
  39. //Elastic search php client
  40. $client = new Elasticsearch\Client();
  41. $params = array();
  42. $params['index'] = 'log_index';
  43. $params['type'] = 'log_type';
  44. $params['body']['query']['match']['src_ip'] = '1.122.33.141';
  45. $rtn = $client->search($params);
  46. var_dump($rtn);
  47. }
  48. set_time_limit(0);
  49. //create_index();
  50. search();
  51. ?>

建立索引成功,可以看到“create index done!”

查询成功,可以看到返回的结果数组。

PHP ElasticSearch的使用的更多相关文章

  1. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  2. Elasticsearch 5.0 中term 查询和match 查询的认识

    Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...

  3. 以bank account 数据为例,认识elasticsearch query 和 filter

    Elasticsearch 查询语言(Query DSL)认识(一) 一.基本认识 查询子句的行为取决于 query context filter context 也就是执行的是查询(query)还是 ...

  4. Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

  5. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

  6. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

  7. .net Elasticsearch 学习入门笔记

    一. es安装相关1.elasticsearch安装  运行http://localhost:9200/2.head插件3.bigdesk插件安装(安装细节百度:windows elasticsear ...

  8. 自己写的数据交换工具——从Oracle到Elasticsearch

    先说说需求的背景,由于业务数据都在Oracle数据库中,想要对它进行数据的分析会非常非常慢,用传统的数据仓库-->数据集市这种方式,集市层表会非常大,查询的时候如果再做一些group的操作,一个 ...

  9. 如何在Elasticsearch中安装中文分词器(IK+pinyin)

    如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组. ...

  10. jar hell & elasticsearch ik 版本问题

    想给es 安装一个ik 的插件, 我的es 是 2.4.0, 下载了一个版本是 1.9.5, [2016-10-09 16:56:26,248][INFO ][node ] [node-2] init ...

随机推荐

  1. 单机搭建Android开发环境(五)

    前文介绍了Android系统开发环境的搭建,本文将简单介绍Android应用开发环境的搭建. 基于Android Studio搭建应用开发环境,相比使用Eclipse简单得多.Android Stud ...

  2. jmeter 函数助手里的P,property的使用

    1.函数助手里的 p及property的使用 ${__P(init,2)} , ${__property(init,start,200)} 可以自行定义变量名称,及变量的默认值 P 变量名为init, ...

  3. XMLHTTP中setRequestHeader方法和参数

    注意:在FF里面需要将open方法放在setRequestHeader之前 一.为何要用到setRequestHeader 通 常在HTTP协议里,客户端像服务器取得某个网页的时候,必须发送一个HTT ...

  4. [No000045]最好的休息,不是睡觉!

    导读 有人曾说,累,一定是你打开生活的方式不对.细细揣摩,很有道理,在这个世上,从来都是微笑不累,生气累:单纯不累,复杂累:相思不累,单恋累:相守不累,独守累:相爱不累,相残累:专情不累,滥情累:友情 ...

  5. 使用tcp_probe时最初没有输出,先卸载后加载模块之后就有了。

    刚才尝试使用tcp_probe来查看tcp的窗口的变化,最初按照tcpprobe | The Linux Foundation的步骤进行设置,但是iperf之后tcp_probe并没有输出结果.按照t ...

  6. Oracle 使用MERGE INTO 语句更新数据

    /*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配 ...

  7. Python的高级特性7:闭包和装饰器

    本节跟第三节关系密切,最好放在一起来看:python的高级特性3:神奇的__call__与返回函数 一.闭包:闭包不好解释,只能先看下面这个例子: In [23]: def outer(part1): ...

  8. php 正则匹配中文(转)

    我使用正则表达式来匹配中问的时候,出现了无法匹配的问题,问题如下 PCRE does not support \L, \l, \N{name}, \U, or \u at offset 2 我原来的匹 ...

  9. HTTP 错误 500.22 - Internal Server Error

    HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 最可能的原因: 此应用程序在 system.web/http ...

  10. BZOJ 1854 【Scoi2010】 游戏

    Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性 ...