release-2023-07
and above, is available here.Base filters are used to filter the resultset on a dashboard or a search modal.
They can be visible (displayFilter
) or invisible (all other types).
Base filters are used in different places and have a common format to construct the filter query.
Filter Query Format
There are different places, where one can define base filter:
baseFilters
(used in custom dashboards)defaultQueries
(used in default dashboards)emptySearchQueries
(used in default dashboards)
At all this places, one can use the same query format, e.g.
{type: 'documentType', value: 'article'}
The query format always has a type
and most of the time a value
. You can see some examples in the next section.
Filter Query Types
This are all available queryTypes
which can be used to form a filter query.
// documentType {type: 'string', value: string || array}
{type: 'documentType', value: 'article'}
{type: 'documentType', value: ['article', 'page']}
// locale
{type: 'locale', value: 'de-DE'}
// channelHandle
{type: 'channelHandle', value: 'web'}
// contentType {type: 'string', value: string || array}
{type: 'contentType', value: 'regular'}
{type: 'contentType', value: ['regular', 'news']}
// notContentType{type: 'string', value: string || array}
{type: 'notContentType', value: 'regular'}
{type: 'notContentType', value: ['regular', 'news']}
// ownerId
{type: 'ownerId', value: 1}
// channelId
{type: 'channelId', value: 2}
// dateRange
{type: 'dateRange', key: 'created_at', from: '2016-01-23T15:00', to: '2015-04-05T20:00'}
// documentState (value: 'published', 'unpublished', 'deleted', 'draft', 'publishedWithDraft')
{type: 'documentState', value: 'published'}
// metadata (multiple key, value combinations possible)
{type: 'metadata', key: 'foo', value: 'bar'}
{type: 'metadata', key: 'foo', value: {exists: true}}
{type: 'metadata', key: 'foo.bar.id', value: 42}
{type: 'metadata', key: 'foo.bar.id', value: [42, 43]}
{
type: 'metadata',
key: 'publicationDate',
value: {
dateFilter: {
from: '2015-04-05T20:00',
to: '2016-01-23T15:00'
}
}
}
// task (multiple taskName and taskValue combinations possible)
// taskValue: 'todo', 'doing', 'done'
{type: 'task', taskName: 'proofreading', taskValue: 'pending'},
{type: 'task', taskName: 'review', taskValue: 'done'}
// sortBy (multiple values possible)
{type: 'sortBy', value: '-created_at'},
{type: 'sortBy', value: 'title'}
{type: 'sortBy', value: 'metadata.department'}
// reference
{type: 'reference', value: 'document:123'}
{type: 'reference', value: 'image:W8GRbmju4grG'}
{type: 'reference', value: 'file:A7JRa4mS3xBQ'}
{type: 'reference', value: 'video:P2rSblad3aUS'}
// state for the mediaLibrary
{type: 'state', value: 'active'}
{type: 'state', value: 'revoked'}
// userInTeam (Added in: release-2023-03
)
{type: 'userInTeam', key: 'myTeamMetadataPropertyName'}
Filter Query Examples
Example 1 - filter by documentType
baseFilters: [
{type: 'documentType', value: 'article'}
]
This would reduce the search to only articles (no pages).
Example 2 - filter by metadata with key/value
baseFilters: [
{type: 'metadata', key: 'foo', value: 'bar'}
]
This would filter for only documents that have the value bar
in the metadata field foo
. You have to make sure that foo
is an indexed metadata field.
Example 3 - filter by metadata with objects
defaultQueries: [
{type: 'metadata', key: 'author.reference.id', value: 42}
]
More complex metadata fields are indexed as an object (instead of key/value). In this case one can filter based on subproperties.
// This is how the metadata field has been indexed into the search index
{
metadata: {
author: {
reference: {
id: 42
}
}
}
}
This example would filter documents that have the value 42
in the metadata field author
with propreties reference.id
. You have to make sure that author
is an indexed metadata field.
Example 4 - filter by task
defaultQueries: [
{type: 'task', taskName: 'proofreading', taskValue: 'done'}
]
This would filter for only documents that have had a successful proofreading. The core only exposes the proofreading
task, but you can define your own custom tasks. The values are todo
, doing
, done
for the 3 states that a task can have.
Example 5 - filter by metadata with dataType keyword for mediaIndex
baseFilters: [
{type: 'metadata', key: 'transformed', value: true, dataType: 'boolean'}
]
This would filter for only transformed assets.