Skip to content

Instantly share code, notes, and snippets.

Created February 16, 2010 17:20
Show Gist options
  • Save hubgit/305696 to your computer and use it in GitHub Desktop.
Save hubgit/305696 to your computer and use it in GitHub Desktop.
ElasticSearch class for 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)));
Copy link

till commented Jun 30, 2011

I took this code and we've been enhancing it for a good while. I've been thinking about re-opensourcing it, would you object to the BSD license?

Copy link

acerb commented Oct 23, 2012

Hi till,

Would it be possible to have the gist number or url ? Thanks

Copy link

gilleyj commented Jan 8, 2019

Hi @till; Small world. You still have this around?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment