From a14ee94a0362ad7c1aaf0666dc5a245f05f50c2d Mon Sep 17 00:00:00 2001 From: Aivaras Gotovskis <aivaras.gotovskis@ongr.io> Date: Wed, 1 Jul 2015 12:00:41 +0300 Subject: [PATCH] Add filtered docs. --- docs/Query/Filtered.md | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 docs/Query/Filtered.md diff --git a/docs/Query/Filtered.md b/docs/Query/Filtered.md new file mode 100644 index 0000000..dd88dc6 --- /dev/null +++ b/docs/Query/Filtered.md @@ -0,0 +1,58 @@ +# Filtered query + +> More info about filtered query is in the [official elasticsearch docs][1] + +The filtered query is used to combine another query with any filter. Filters are usually faster than queries. + +Lets try to write this example +```JSON +{ + "filtered": { + "query": { + "match": { "tweet": "full text search" } + }, + "filter": { + "range": { "created": { "gte": "now - 1d / d" }} + } + } +} +``` + +In DSL: + +```php +$matchQuery = new MatchQuery('tweet', 'full text search'); +$rangeFilter = new RangeFilter('created', ['gte' => 'now - 1d / d']); + +$filteredQuery = new FilteredQuery($matchQuery, $rangeFilter); + +$search = new Search(); +$search->addQuery($filteredQuery); + +$queryArray = $search->toArray(); +``` + +Or: + +```php +$matchQuery = new MatchQuery('tweet', 'full text search'); +$rangeFilter = new RangeFilter('created', ['gte' => 'now - 1d / d']); + +$filteredQuery = new FilteredQuery(); +$filteredQuery->setQuery($matchQuery); +$filteredQuery->setFilter($rangeFilter); + +$search = new Search(); +$search->addQuery($filteredQuery); + +$queryArray = $search->toArray(); +``` + +Multiple queries and filters can be used with help off [Bool Query][2] and [Bool Filter][3] respectively. + +If query is not set it defaults to Match all, thus Filtered query can be used as filter in places where query is +expected. + +[1]: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html +[2]: Bool.md +[3]: ../Filter/Bool.md -- GitLab