分布式搜索引擎Elasticsearch PHP类封装 使用原生api

来源:互联网 发布:大数据的本质是 编辑:程序博客网 时间:2024/06/16 18:23
//官方的 php  api写的鸡肋了,下面这个类可以使用 es api 操作.
<?php  class ElasticSearch {  public $index;   function __construct($server = 'http://localhost:9200'){    $this->server = $server;  }   function call($path, $http = array()){    if (!$this->index) throw new Exception('$this->index needs a value');    return json_decode(file_get_contents($this->server . '/' . $this->index . '/' . $path, NULL, stream_context_create(array('http' => $http))));  }   //curl -X PUT http://localhost:9200/{INDEX}/  function create(){     $this->call(NULL, array('method' => 'PUT'));  }   //curl -X DELETE http://localhost:9200/{INDEX}/  function drop(){     $this->call(NULL, array('method' => 'DELETE'));  }   //curl -X GET http://localhost:9200/{INDEX}/_status  function status(){    return $this->call('_status');  }   //curl -X GET http://localhost:9200/{INDEX}/{TYPE}/_count -d {matchAll:{}}  function count($type){    return $this->call($type . '/_count', array('method' => 'GET', 'content' => '{ matchAll:{} }'));  }   //curl -X PUT http://localhost:9200/{INDEX}/{TYPE}/_mapping -d ...  function map($type, $data){    return $this->call($type . '/_mapping', array('method' => 'PUT', 'content' => $data));  }   //curl -X PUT http://localhost:9200/{INDEX}/{TYPE}/{ID} -d ...  function add($type, $id, $data){    return $this->call($type . '/' . $id, array('method' => 'PUT', 'content' => $data));  }   //curl -X GET http://localhost:9200/{INDEX}/{TYPE}/_search?q= ...  function query($type, $q){    return $this->call($type . '/_search?' . http_build_query(array('q' => $q)));  }}

0 0
原创粉丝点击