I am trying to use ElasticSearch with a Codeigniter card.
I just installed ElasticSearch and copied (: P) the good PHP library found on the Internet to the CI libraries:
class Elasticsearch { public $config_file = 'elasticsearch'; public $index; function __construct($index = false){ $CI =& get_instance(); $CI->config->load($this->config_file); $this->server = $CI->config->item('es_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){ echo $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))); } }
then I'm trying to create indexes and just get them:
$this->load->library('elasticsearch'); $this->elasticsearch->index = 'comments'; $this->elasticsearch->create(); $data = '{author:jhon,datetime:2001-09-09 00:02:04}'; $this->elasticsearch->add($type ='details',$id = '1',$data);
when I run this code, it shows me errors:
A PHP Error was encountered Severity: Warning Message: file_get_contents(http://localhost:9200/comments/) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request Filename: libraries/Elasticsearch.php Line Number: 19 A PHP Error was encountered Severity: Notice Message: file_get_contents() [function.file-get-contents]: Content-type not specified assuming application/x-www-form-urlencoded Filename: libraries/Elasticsearch.php Line Number: 19 A PHP Error was encountered Severity: Warning Message: file_get_contents(http://localhost:9200/comments/details/1) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request Filename: libraries/Elasticsearch.php Line Number: 19
Am I mistaken / missing? sorry, but I'm new to elasticsearch, and also a bit with php: P
call if I go to:
http://localhost:9200/comments/details/1 //it prints in window {"_index":"comments","_type":"details","_id":"1","exists":false}