Elasticsearch-PHP 快速開始


快速開始

 

本章節會給你一個客戶端的主要功能(函數)是如何工作的快速概述。

 

安裝

 

 

  • 引入(包含)elasticsearch-php 在你的 composer.json 文件:

 

 

 

[javascript]  view plain  copy
 
  1. {  
  2.     "require": {  
  3.         "elasticsearch/elasticsearch": "~1.0"  
  4.     }  
  5. }  

 

 

 

  • 使用composer安裝客戶端:

 

 

[plain]  view plain  copy
 
  1. curl -s http://getcomposer.org/installer | php  
  2. php composer.phar install  

 

 

  • 在主項目(一般是index.php)中引入autoloader.php文件(如果你還沒有引入的話),並且要實例化Elasticsearch的客戶端:

 

 

 

[php]  view plain  copy
 
  1. require 'vendor/autoload.php';  
  2.   
  3. $client = new Elasticsearch\Client();  

 

 

 

索引一個文檔

 

在elasticsearch-php中,幾乎所有的東西都是通過數組配置的。REST 的端點(終結點),文檔和可選參數,一切都是一個關聯數組。

 

去索引一個文檔,我們簡單的指定一個主體(body)來包含我們希望索引的文檔。文檔中的每一個字段都由一個關聯數組的鍵/值對表示。

 

索引(index),類型(type)和 ID 也被指定在數組參數中,數組如下:

 

[php]  view plain  copy
 
  1. $params = array();  
  2. $params['body']  = array('testField' => 'abc');  
  3. $params['index'] = 'my_index';  
  4. $params['type']  = 'my_type';  
  5. $params['id']    = 'my_id';  
  6. $ret = $client->index($params);  

 

 

獲取一個文檔

 

讓我們來獲取我們剛剛索引的文檔:

 

[php]  view plain  copy
 
  1. $getParams = array();  
  2. $getParams['index'] = 'my_index';  
  3. $getParams['type']  = 'my_type';  
  4. $getParams['id']    = 'my_id';  
  5. $retDoc = $client->get($getParams);  

 

 

搜索一個文檔


搜索是 elasticsearch 的一個標志,所以讓我們執行搜索。我們打算使用匹配查詢作為示范:

 

[php]  view plain  copy
 
  1. $searchParams['index'] = 'my_index';  
  2. $searchParams['type']  = 'my_type';  
  3. $searchParams['body']['query']['match']['testField'] = 'abc';  
  4. $retDoc = $client->search($searchParams);  

 

 

刪除一個文檔

 

好的,讓我們繼續刪除一個我們之前添加的文檔:

 

[php]  view plain  copy
 
  1. $deleteParams = array();  
  2. $deleteParams['index'] = 'my_index';  
  3. $deleteParams['type'] = 'my_type';  
  4. $deleteParams['id'] = 'my_id';  
  5. $retDelete = $client->delete($deleteParams);  

 

 

刪除一個索引

 

由於 elasticsearch 的動態性質,我們添加第一個文檔的時候自動創建了索引和一些默認設置。讓我們刪除這個索引,因為我們以后想要指定自己的設置:

 

[php]  view plain  copy
 
  1. $deleteParams = array();  
  2. $deleteParams['index'] = 'my_index';  
  3. $client->indices()->delete($deleteParams);  

 

 

創建一個索引

 

 

好吧,我們的索引被清空了,現在我們開始添加一個新的索引和一些自定義設置:

 

[php]  view plain  copy
 
  1. $indexParams['index'] = 'my_index';  
  2. $indexParams['body']['settings']['number_of_shards'] = 2;  
  3. $indexParams['body']['settings']['number_of_replicas'] = 0;  
  4. $client->indices()->create($indexParams);  

 

 

總結

 

 

那些只是在客戶端速成課程和語法上的概述。如果你熟悉elasticsearch, 你會注意到,這些方法的命名就像 REST 的端點(終結點)。

 

你還會發現客戶端的配置方式使你發現通過你的IDE配置會非常方便。所有的核心操作都在 $client 對象(索引,搜索,獲取等)下。索引和集群管理分別位於 $client->indices() 和 $client->cluster() 對象下。

 

查看剩下的文檔去了解整個客戶端是如何工作的。

 

例子代碼

 

 

[php]  view plain  copy
 
  1. <?php  
  2. require 'vendor/autoload.php';  
  3.   
  4.   
  5. $client = new Elasticsearch\Client();  
  6.   
  7. index($client);  
  8. //get($client);  
  9. // search($client);  
  10. // deleteDoc($client);  
  11. // deleteIndex($client);  
  12. // createIndex($client);  
  13. function index($client) {  
  14.     $params = array ();  
  15.     $params ['body'] = array (  
  16.             'testField' => 'abc'   
  17.     );  
  18.     $params ['index'] = 'my_index';  
  19.     $params ['type'] = 'my_type';  
  20.     $params ['id'] = 'my_id';  
  21.     try {  
  22.         $ret = $client->index($params);  
  23.         println("create index success");  
  24.     } catch(Exception $e) {  
  25.         echo $e->getMessage();  
  26.     }  
  27. }  
  28.   
  29. function get($client) {  
  30.     $getParams = array ();  
  31.     $getParams ['index'] = 'my_index';  
  32.     $getParams ['type'] = 'my_type';  
  33.     $getParams ['id'] = 'my_id';  
  34.     $retDoc = $client->get($getParams);  
  35.     println($retDoc);  
  36. }  
  37.   
  38. function search($client) {  
  39.     $searchParams ['index'] = 'my_index';  
  40.     $searchParams ['type'] = 'my_type';  
  41.     $searchParams ['body'] ['query'] ['match'] ['testField'] = 'abc';  
  42.     $retDoc = $client->search($searchParams);  
  43.     println($retDoc);  
  44. }  
  45.   
  46. function deleteDoc($client) {  
  47.     $deleteParams = array ();  
  48.     $deleteParams ['index'] = 'my_index';  
  49.     $deleteParams ['type'] = 'my_type';  
  50.     $deleteParams ['id'] = 'my_id';  
  51.     $retDelete = $client->delete($deleteParams);  
  52.     println($retDelete);  
  53. }  
  54.   
  55. function deleteIndex($client) {  
  56.     $deleteParams = array ();  
  57.     $deleteParams ['index'] = 'my_index';  
  58.     $retDelete = $client->indices()->delete($deleteParams);  
  59.     println($retDelete);  
  60. }  
  61.   
  62. function createIndex($client) {  
  63.     $indexParams ['index'] = 'my_index';  
  64.     $indexParams ['body'] ['settings'] ['number_of_shards'] = 2;  
  65.     $indexParams ['body'] ['settings'] ['number_of_replicas'] = 0;  
  66.     $retCreate = $client->indices()->create($indexParams);  
  67.     println($retCreate);  
  68. }  
  69.   
  70. function println($var) {  
  71.     echo "<br>";  
  72.     $type = gettype($var);  
  73.     if ($type == "array" || $type == "object") {  
  74.         echo json_encode($var);  
  75.     } else {  
  76.         echo $var;  
  77.     }  
  78.     echo "<br>";  
  79. }  



查看每個方法的運行結果:

 

index():

 

[plain]  view plain  copy
 
  1. create index success  

 

get():

 

[javascript]  view plain  copy
 
  1. {  
  2.     "_index": "my_index",  
  3.     "_type": "my_type",  
  4.     "_id": "my_id",  
  5.     "_version": 1,  
  6.     "found": true,  
  7.     "_source": {  
  8.         "testField": "abc"  
  9.     }  
  10. }  

 

search():

 

[javascript]  view plain  copy
 
  1. {  
  2.     "took": 3,  
  3.     "timed_out": false,  
  4.     "_shards": {  
  5.         "total": 5,  
  6.         "successful": 5,  
  7.         "failed": 0  
  8.     },  
  9.     "hits": {  
  10.         "total": 1,  
  11.         "max_score": 0.30685282,  
  12.         "hits": [  
  13.             {  
  14.                 "_index": "my_index",  
  15.                 "_type": "my_type",  
  16.                 "_id": "my_id",  
  17.                 "_score": 0.30685282,  
  18.                 "_source": {  
  19.                     "testField": "abc"  
  20.                 }  
  21.             }  
  22.         ]  
  23.     }  
  24. }  

 

deleteDoc():

[javascript]  view plain  copy
 
  1. {  
  2.     "found": true,  
  3.     "_index": "my_index",  
  4.     "_type": "my_type",  
  5.     "_id": "my_id",  
  6.     "_version": 2  
  7. }  

 

deleteIndex():

 

[javascript]  view plain  copy
 
  1. {  
  2.     "acknowledged": true  
  3. }  

 

createIndex():

 

[javascript]  view plain  copy
 
    1. {  
    2.     "acknowledged": true  
    3. }  


免責聲明!

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



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