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 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!”

查詢成功,可以看到返回的結果數組。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM