X-Git-Url: https://git.cweiske.de/phinde.git/blobdiff_plain/d7651fd96dcfa2829519504e4c8ec1ce511cd57f..c32d1b6ffe81afb36fdcaebe0254ad191b72bff6:/src/phinde/Elasticsearch.php diff --git a/src/phinde/Elasticsearch.php b/src/phinde/Elasticsearch.php index 9babfee..fd60f95 100644 --- a/src/phinde/Elasticsearch.php +++ b/src/phinde/Elasticsearch.php @@ -58,6 +58,20 @@ class Elasticsearch $r->send(); } + public function getIndexStatus() + { + $r = new Elasticsearch_Request( + $this->baseUrl . '_stats/docs,store', + \HTTP_Request2::METHOD_GET + ); + $res = $r->send(); + $data = json_decode($res->getBody()); + return array( + 'documents' => $data->_all->total->docs->count, + 'size' => $data->_all->total->store->size_in_bytes, + ); + } + public function search($query, $filters, $site, $page, $perPage, $sort) { if (preg_match_all('#nick:([^ ]*)#', $query, $matches)) { @@ -78,7 +92,7 @@ class Elasticsearch $query = trim(str_replace($matches[0], '', $query)); $qMust[] = array( 'range' => array( - 'modate' => array( + 'status.modate' => array( 'gt' => $dateAfter . '||/d', ) ) @@ -89,7 +103,7 @@ class Elasticsearch $query = trim(str_replace($matches[0], '', $query)); $qMust[] = array( 'range' => array( - 'modate' => array( + 'status.modate' => array( 'lt' => $dateBefore . '||/d', ) ) @@ -100,7 +114,7 @@ class Elasticsearch $query = trim(str_replace($matches[0], '', $query)); $qMust[] = array( 'range' => array( - 'modate' => array( + 'status.modate' => array( 'gte' => $dateExact . '||/d', 'lte' => $dateExact . '||/d', ) @@ -108,6 +122,11 @@ class Elasticsearch ); } + if (strpos($query, '/') !== false && strpos($query, '"') === false) { + //add quotes when there is a slash and no quotes + // https://stackoverflow.com/questions/31963643/escaping-forward-slashes-in-elasticsearch + $query = '"' . $query . '"'; + } $qMust[] = array( 'query_string' => array( 'default_field' => '_all', @@ -121,6 +140,9 @@ class Elasticsearch ) ); + if ($sort == '' && $GLOBALS['phinde']['defaultSort'] == 'date') { + $sort = 'date'; + } if ($sort == 'date') { $sortCfg = array('status.modate' => array('order' => 'desc')); } else {