• PHP ElasticSearch的使用


    系统是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的文件,文件内容为:

    [html] view plaincopy
     
    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 plaincopy
     
    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 ElasticsearchClient();  
    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 ElasticsearchClient();  
    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!”

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

  • 相关阅读:
    网络攻击与防御 实验1
    java继承 、方法重写、重写toString方法
    递归算法
    加标签的continue用法
    程序员,你应该知道的数据结构之栈
    SpringBoot 内部方法调用,事务不起作用的原因及解决办法
    程序员,你应该知道的数据结构之哈希表
    程序员,你应该知道的数据结构之跳表
    程序员,你应该知道的二分查找算法
    程序员,你应该知道的基础排序算法
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/4215807.html
Copyright © 2020-2023  润新知