es笔记记录php的curd
1 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 * 设置id118 * 如果没有设置id,则119 * 自动随机18位id120 */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 * 功能:对置入的参数进行转义json147 */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执行的url158 */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 * 功能:设置转义数组为json182 */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::$esObj262 ->setId('_mapping')263 ->readData();264 }265 266 267 268 /**269 * 功能:es执行270 * 返回:es返回数据271 * 20140214272 */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转utf8292 * 特征:最多支持2维数组 293 * 20140214294 */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 '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 ""; 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 "";106 print_r($esRs);107 echo "";108 109 */110 111 112 ?>
用例测试,有待完善。