-
Aivaras Gotovskis authoredAivaras Gotovskis authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Filtered.md 1.45 KiB
Filtered query
More info about filtered query is in the official elasticsearch docs
The filtered query is used to combine another query with any filter. Filters are usually faster than queries.
Lets try to write this example
{
"filtered": {
"query": {
"match": { "tweet": "full text search" }
},
"filter": {
"range": { "created": { "gte": "now - 1d / d" }}
}
}
}
In DSL:
$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:
$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 and Bool Filter 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.