es笔记记录php的curd

 

es笔记记录php的curd

 

  1 <?php 
  2     /**
  3     * 超级es搜索api
  4     * author:wenzl
  5     * date:20140214
  6     * 
  7     */
  8 
  9 
 10     class es{
 11         
 12         /**
 13         * 内容:对象属性
 14         * 特征:私有属性
 15         */
 16         private $host ;
 17         private $db ;
 18         private $table ;
 19         private $esurl ;
 20         private $post ;
 21         private $method ;
 22         private $id ;
 23         private $subfix ;
 24         private $queryArray;
 25         private $queryJson ;
 26         private static $esObj = null ;
 27         
 28         
 29 
 30 
 31 
 32         /**
 33         * 功能:单例模式建立对象
 34         */
 35         public static function _app(){
 36             is_null(self::$esObj) &&
 37             self::$esObj = new self() ;
 38             self::$esObj->init() ;
 39             return self::$esObj ;
 40         }
 41 
 42         
 43 
 44         
 45 
 46 
 47         /**
 48         * 功能:初始化参数
 49         */
 50         public function init(){
 51             self::$esObj->host = 'localhost' ;
 52             self::$esObj->db = 'job1002' ;
 53             self::$esObj->table = 'cmailbox' ;
 54             self::$esObj->post = '9200' ;            
 55             self::$esObj->queryJson = '{}';
 56             self::$esObj->setUrl() ;
 57             self::$esObj->method = 'GET' ;
 58         }
 59 
 60 
 61         
 62         
 63 
 64 
 65         /**
 66         * 功能:设置主机
 67         */
 68         private function setHost($host){
 69             self::$esObj->host = $host ;
 70             return self::$esObj ;
 71         }
 72 
 73 
 74 
 75         
 76 
 77 
 78         /**
 79         * 功能:设置端口
 80         */
 81         public function setPost($post){
 82             self::$esObj->post = $post ;
 83             return self::$esObj ;
 84         }        
 85 
 86 
 87 
 88         
 89 
 90         /**
 91         * 功能:设置数据库
 92         */
 93         public function setDB($dbname){
 94             self::$esObj->db = $dbname ;
 95             return self::$esObj ;
 96         }
 97 
 98 
 99         
100 
101         
102 
103         /**
104         * 功能:设置表
105         */
106         public function setTable($table){
107             self::$esObj->table = $table ;
108             return self::$esObj ;
109         }
110 
111 
112 
113 
114         
115 
116         /**
117         * 设置id
118         * 如果没有设置id,则
119         * 自动随机18位id
120         */
121         public function setId($id=''){
122             !empty($id) && self::$esObj->id = $id ;
123              empty($id) && self::$esObj->id = time() . mt_rand(10000,99999) ;
124             return self::$esObj ;
125         }
126 
127 
128 
129 
130         
131 
132         /**
133         * 功能:设置后缀参数
134         */
135         public function setSubFix($subfix){
136             self::$esObj->subfix = $subfix ;
137             return self::$esObj ;
138         }
139 
140 
141 
142 
143         
144 
145         /**
146         * 功能:对置入的参数进行转义json
147         */
148         public function setInArray($queryArray){
149             !empty($queryArray) && self::$esObj->queryArray = $queryArray ;
150             !empty($queryArray) && self::$esObj->makeEsJsonFromArray() ;
151             return self::$esObj ;
152         }
153 
154 
155 
156         /**
157         * 功能:设置curl执行的url
158         */
159         public function setUrl(){    
160             isset(self::$esObj->id) || self::$esObj->setId() ;
161             self::$esObj->esurl =     self::$esObj->host . '/' .
162             self::$esObj->db . '/' . self::$esObj->table .'/' .
163             self::$esObj->id . self::$esObj->subfix ;
164             return self::$esObj ;
165         }
166 
167 
168 
169         /**
170         * 功能:设置执行方式POST,PUT...
171         */
172         public function setMethod($method){
173             self::$esObj->method = $method ;            
174             return self::$esObj ;
175         }
176 
177 
178         
179 
180         /**
181         * 功能:设置转义数组为json
182         */
183         public function makeEsJsonFromArray(){
184             if(empty(self::$esObj->queryArray)) return self::$esObj ;
185             empty(self::$esObj->queryArray) && self::$esObj->queryJson = '{}';
186             !empty(self::$esObj->queryArray) && self::$esObj->queryJson = json_encode(self::$esObj->queryArray);
187             return self::$esObj ;
188         }
189 
190 
191 
192 
193         /*----[CURD start]----*/
194         /**
195         * 功能:设置建立数据
196         */
197         public function createData(){
198             self::$esObj->setUrl();            
199             self::$esObj->method = self::$esObj->method == 'PUT' ?
200             'PUT' : self::$esObj->method ;
201             return self::$esObj->curlToEs();
202         }
203 
204 
205         
206         /**
207         * 功能:设置更新数据
208         */
209         public function updateData(){
210             self::$esObj->setUrl();    
211             self::$esObj->method = self::$esObj->method == 'POST' ?
212             'POST' : self::$esObj->method ;
213             return self::$esObj->curlToEs() ;
214         }
215 
216 
217         
218         /**
219         * 功能:设置读取数据
220         */
221         public function readData(){
222             isset(self::$esObj->id) || 
223             self::$esObj->setId('_search') ;
224             self::$esObj->setUrl();
225             self::$esObj->method = 'GET' ;
226             return self::$esObj->curlToEs() ;
227         }
228 
229         
230 
231         /**
232         * 功能:设置删除数据
233         */
234         public function deleteData(){
235             self::$esObj->method = 'DELETE' ;
236             self::$esObj->setUrl() ;
237             return self::$esObj->curlToEs() ;
238         }
239         /*----[CURD end]----*/
240 
241         
242         
243 
244         /**
245         * 功能:获取集群信息
246         */
247         public function getEsInfo($info=''){
248             empty($info) && $info = '/_cluster/nodes' ;
249             self::$esObj->id = $info ;
250             self::$esObj->setUrl() ;
251             return self::$esObj->curlToEs() ;
252         }
253 
254         
255 
256 
257         /**
258         * 功能:获取mapping信息        
259         */
260         public function getMapping(){
261             return     self::$esObj
262                     ->setId('_mapping')
263                     ->readData();
264         }
265 
266 
267 
268         /**
269         * 功能:es执行
270         * 返回:es返回数据
271         * 20140214
272         */
273         public function curlToEs(){
274             $ch = curl_init();
275             curl_setopt($ch, CURLOPT_URL, self::$esObj->esurl) ;
276             self::$esObj->post ? curl_setopt($ch, CURLOPT_PORT, self::$esObj->post) : 
277             curl_setopt($ch, CURLOPT_PORT, 9200) ;
278             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ;
279             curl_setopt($ch, CURLOPT_CUSTOMREQUEST, strtoupper(self::$esObj->method));
280             curl_setopt($ch, CURLOPT_POSTFIELDS, self::$esObj->queryJson);
281             $result = curl_exec($ch) ;
282             curl_close($ch) ;
283             return json_decode($result) ;
284         }
285 
286 
287 
288 
289 
290         /**
291         * 功能:gbk转utf8
292         * 特征:最多支持2维数组        
293         * 20140214
294         */
295         public static function gbkToUtf8($inParam='',&$outResult=array()){
296             if(is_array($inParam)){
297                 foreach($inParam as $key=>$param){
298                     if(is_array($param)){
299                         foreach($param as $ke=>$p){
300                             $inParam[$key][$ke] = iconv('gbk','utf-8',$p) ;
301                         }                        
302                     }else{
303                         $inParam[$key] = iconv('gbk','utf-8',$param) ;
304                     }                    
305                 }
306             }else{
307                 $inParam = iconv('gbk','utf-8',$inParam) ;
308             }
309             $outResult = $inParam ;
310         }
311 
312 
313 
314 
315 
316         /**
317         * 功能:设置出错提示
318         */
319         public function error($flag = 1){//参数必须为整型
320             empty($flag) || $flag = 1 ;
321             $errors = array(//后期移出,并做可配置
322                     1=>'参数为空错误!',
323                     11=>'查询语法错误',
324                     21=>'结果返回错误',
325                 );
326             foreach ($errors as $key => $error) {
327                 if($flag === $key)
328                     return $error;
329             }
330         }
331 
332 
333 
334     }
335     
336  ?>

 

代码有待完善。

 

  1 <?php
  2     include "elastic.class.php";
  3     include "db.class.php";
  4 
  5     set_time_limit(0);
  6 
  7     
  8     
  9     $dbconfig = array(
 10             'host'=>'192.168.66.66',
 11             'user'=>'wenzl',
 12             'passwd'=>'1o2kkasdfr',
 13             'dbname'=>'fuckme'    
 14         );
 15 
 16 
 17 
 18 
 19 
 20     $dbObj = new db($dbconfig);
 21 
 22     
 23     
 24     /*
 25     for ($i=0; $i < 5000; $i++) { 
 26         $size = 1000;
 27         $j = $i*$size;
 28         $r = $dbObj->fields("*")->table("company")->limit("{$j},{$size}")->lookDatas();    
 29         $rs = array();
 30         es::gbkToUtf8($r,&$rs);
 31         es::_app()
 32         ->setDB('fuckanything')
 33         ->setTable('company')
 34         ->setInArray($rs)
 35         ->createData();
 36         usleep(5000);
 37     }
 38     */
 39 
 40 
 41         $rs = array();
 42         $r = $dbObj->fields("*")->table("company")->limit("10")->lookDatas();    
 43         es::gbkToUtf8($r,&$rs);
 44         echo "<pre>";
 45         //print_r($rs);
 46         /*
 47         foreach ($rs as $key => $val) {
 48                     es::_app()
 49                     ->setDB('fuckanything')
 50                     ->setTable('company')
 51                     ->setInArray($val)
 52                     ->createData();
 53                 }
 54         */
 55 
 56         //print_r(es::_app()->setDB('')->setTable('')->getEsInfo('/_nodes/stats'));
 57 
 58 
 59         print_r(
 60         es::_app()
 61         ->setDB('fuckanything')
 62         ->setTable('company')
 63         ->setId('_mapping')
 64         ->readData()
 65         );
 66 
 67 
 68 
 69 
 70 
 71 
 72 
 73     /*
 74 
 75     $s = array(
 76         'query'=>array(
 77             'match'=>array('cname'=>'建筑')
 78         )
 79     );
 80 
 81     $index = array(
 82             'settings'=>array(
 83                     'index'=>array(
 84                             'number_of_shards'=>10
 85                         )
 86                 )
 87         );
 88 
 89     $data = array();
 90     
 91     
 92     $es = es::_app()
 93     ->setDB('job1004')
 94     ->setTable('school')
 95     ->setInArray($index)
 96     ->createData();
 97     
 98     $esObj = es::_app()
 99     ->setDB('job1002')
100     ->setTable('cmailbox')
101     ->setId('_search');
102     //$esRs = $esObj->setInArray($d)->createData();
103     //$esRs = $esObj->deleteData();
104     $esRs = $esObj->setInArray($s)->readData();
105     echo "<pre>";
106     print_r($esRs);
107     echo "</pre>";
108 
109     */
110 
111 
112 ?>

 

 

用例测试,有待完善。

posted @ 2014-02-15 11:13  猿来如些  阅读(877)  评论(0编辑  收藏  举报