zoukankan      html  css  js  c++  java
  • 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!”

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

  • 相关阅读:
    什么是webview
    juqery.fn.extend和jquery.extend
    LeetCode
    5. Longest Palindromic Substring
    42. Trapping Rain Water
    11. Container With Most Water
    621. Task Scheduler
    49. Group Anagrams
    739. Daily Temperatures
    3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/4198736.html
Copyright © 2011-2022 走看看