8 public function __construct($baseUrl)
10 $this->baseUrl = $baseUrl;
14 * @link https://www.elastic.co/guide/en/elasticsearch/guide/current/_finding_exact_values.html
16 public function isKnown($url)
18 $r = new Elasticsearch_Request(
19 $this->baseUrl . 'document/_search/exists',
20 \HTTP_Request2::METHOD_GET
38 $res = json_decode($r->send()->getBody());
42 public function get($url)
44 $r = new Elasticsearch_Request(
45 $this->baseUrl . 'document/' . rawurlencode($url),
46 \HTTP_Request2::METHOD_GET
50 if ($res->getStatus() != 200) {
53 $d = json_decode($res->getBody());
57 public function markQueued($url)
59 $r = new Elasticsearch_Request(
60 $this->baseUrl . 'document/' . rawurlencode($url),
61 \HTTP_Request2::METHOD_PUT
67 $r->setBody(json_encode($doc));
71 public function search($query, $filters, $site, $page, $perPage, $sort)
73 if ($sort == 'date') {
74 $sortCfg = array('modate' => array('order' => 'desc'));
79 $r = new Elasticsearch_Request(
80 $this->baseUrl . 'document/_search',
81 \HTTP_Request2::METHOD_GET
94 'query_string' => array(
95 'default_field' => '_all',
96 'default_operator' => 'AND',
102 'status' => 'indexed'
108 'highlight' => array(
109 'pre_tags' => array('<em class="hl">'),
114 'require_field_match' => false,
115 'number_of_fragments' => 0,
118 'require_field_match' => false,
119 'number_of_fragments' => 0,
122 'require_field_match' => false,
123 'number_of_fragments' => 1,
127 'aggregations' => array(
135 'field' => 'language'
149 'from' => $page * $perPage,
153 foreach ($filters as $type => $value) {
154 $doc['query']['bool']['must'][] = array(
161 $doc['query']['bool']['must'][] = array(
163 'schemalessUrl' => array(
170 //unset($doc['_source']);
172 //ini_set('xdebug.var_display_max_depth', 10);
173 //echo json_encode($doc);die();
174 $r->setBody(json_encode($doc));
176 return json_decode($res->getBody());