$idx = $_REQUEST['idx']; $type = $_REQUEST['type']; $query = str_replace('\\', '', $_REQUEST['query']); $idx_type = $idx; if ('' !== $type) { $idx_type .= '/' . $type; } //OPTIONAL: uncomment to enable whitelisting //if ( ! in_array( $idx_type, array_keys( $whitelist_idx ) ) ) { // status_header( 403 ); //forbidden // die; //} try { $esclient = new Elastica_Client(array('servers' => $es_servers)); $esQ = new Elastica_Query(); $esQ->setRawQuery(get_object_vars(json_decode($query))); if (isset($whitelist_idx[$idx_type])) { $esQ->setHighlight(array('fields' => $whitelist_idx[$idx_type]['highlight'], 'pre_tags' => array('<b>'), 'post_tags' => array('</b>'))); $esQ->setFields($whitelist_idx[$idx_type]['fields']); } if ('' != $type) { $estype = $esclient->getIndex($idx)->getType($type); } else { $estype = $esclient->getIndex($idx); } $results = $estype->search($esQ); echo json_encode($results->getResponse()->getData()); } catch (Exception $e) { error_log($e->getMessage()); status_header(500); //server error
public function testSetRawQuery() { $query = new Elastica_Query(); $params = array('query' => 'test'); $query->setRawQuery($params); $this->assertEquals($params, $query->toArray()); }