PHP ElasticSearch的使用

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

ElasticSearch是一个基于Lucene的稳定的、分布式、RESTFul的搜索引擎。其实所谓的RestFul就是它提供URL供你调用(建立索引和进行检索),不过直接这样使用实在是太凶残了。所以,它也提供了一系列client包,相当于将curl请求封装了,client包支持的语言包括JavaPHPPython、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的文件,文件内容为:


[html] view plain copy

  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进行建立索引和进行检索了


[php] view plain copy

  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.   

  9.     $conn = new PDO("pgsql:dbname=$dbname;host=$host",$user,$passwd);  

  10.     return $conn;  

  11. }  

  12.   

  13. function create_index(){  

  14.     //Elastic search php client  

  15.     $client = new Elasticsearch\Client();  

  16.     $sql = "SELECT * FROM log";  

  17.     $conn = get_conn();  

  18.     $stmt = $conn->query($sql);  

  19.     $rtn = $stmt->fetchAll();  

  20.   

  21.     //delete index which already created  

  22.     $params = array();  

  23.     $params['index'] = 'log_index';  

  24.     $client->indices()->delete($params);  

  25.       

  26.     //create index on log_date,src_ip,dest_ip  

  27.     $rtnCount = count($rtn);  

  28.     for($i=0;$i<$rtnCount;$i++){  

  29.         $params = array();  

  30.         $params['body'] = array(  

  31.             'log_date' => $rtn[$i]['log_date'],  

  32.             'src_ip' => $rtn[$i]['src_ip'],  

  33.             'dest_ip' => $rtn[$i]['dest_ip']  

  34.         );  

  35.         $params['index'] = 'log_index';  

  36.         $params['type'] = 'log_type';  

  37.           

  38.         //Document will be indexed to log_index/log_type/autogenerate_id          

  39.         $client->index($params);  

  40.     }  

  41.     echo 'create index done!';  

  42. }  

  43.   

  44. function search(){  

  45.     //Elastic search php client  

  46.     $client = new Elasticsearch\Client();  

  47.     $params = array();  

  48.     $params['index'] = 'log_index';  

  49.     $params['type'] = 'log_type';  

  50.     $params['body']['query']['match']['src_ip'] = '1.122.33.141';  

  51.   

  52.     $rtn = $client->search($params);  

  53.     var_dump($rtn);  

  54. }  

  55.   

  56. set_time_limit(0);  

  57. //create_index();  

  58. search();  

  59. ?>  


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

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

本文转自  陈小龙哈   51CTO博客,原文链接:http://blog.51cto.com/chenxiaolong/1895118

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6月前
|
JSON 搜索推荐 大数据
Elasticsearch:从 ES|QL 到 PHP 对象
【6月更文挑战第9天】Elasticsearch 是一款强大的开源搜索引擎,适用于大数据处理和分析。在 PHP 开发中,使用 ES|QL 构建复杂查询后,通常需将查询结果转换为 PHP 对象。通过 `json_decode()` 函数解析 JSON 数据,可以实现这一目标。示例代码展示了如何将 Elasticsearch 响应转换为 PHP 对象并遍历数据。这样,我们可以进一步处理和操作数据,适应不同项目需求。随着技术和方法的更新,不断学习和适应将提升我们在开发中的效率和创新力。
98 10
|
PHP
php Elasticsearch es 文档管理
php Elasticsearch es 文档管理
162 0
|
PHP
php elasticsearch 联想搜索类目
php elasticsearch 联想搜索类目
116 0
|
PHP 索引
php es Elasticsearch 索引增删改查
php es Elasticsearch 索引增删改查
241 0
|
应用服务中间件 PHP nginx
Elasticsearch-PHP库使用报错:No alive nodes found in your cluster[64] in ../Elasticsearch/ConnectionPool/StaticNoPingConnectionPool.php
Hyperf Elasticsearch-PHP库使用报错:No alive nodes found in your cluster[64] in ../Elasticsearch/ConnectionPool/StaticNoPingConnectionPool.php
517 0
Elasticsearch-PHP库使用报错:No alive nodes found in your cluster[64] in ../Elasticsearch/ConnectionPool/StaticNoPingConnectionPool.php
|
PHP
PHP实现elasticsearch/elasticsearchy实例
PHP实现elasticsearch/elasticsearchy实例
160 0
|
SQL 自然语言处理 安全
PHP使用elasticsearch搜索安装及分词方法
为什么会用到这个ES搜索?
483 0
|
3月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
3月前
|
NoSQL 关系型数据库 MySQL
不是 PHP 不行了,而是 MySQL 数据库扛不住啊
【9月更文挑战第8天】这段内容讨论了MySQL在某些场景下面临的挑战及其原因,并指出这些问题不能完全归咎于MySQL本身。高并发读写压力、数据量增长以及复杂查询和事务处理都可能导致性能瓶颈。然而,应用程序设计不合理、系统架构不佳以及其他数据库选择和优化策略不足也是重要因素。综合考虑这些方面才能有效解决性能问题,而MySQL通过不断改进和优化,仍然是许多应用场景中的可靠选择。
148 9
|
4月前
|
存储 SQL 关系型数据库
PHP与MySQL交互的奥秘
【8月更文挑战第29天】在编程的世界里,PHP和MySQL就像是一对默契的舞伴,共同演绎着数据的交响曲。本文将带你探索它们之间的互动,从连接数据库到执行查询,再到处理结果,每一步都充满了节奏与和谐。我们将一起走进这段代码的旅程,感受数据流动的魅力。