Global aggregations¶
Global aggregations (facets) are regular aggregations, which are not influenced by the search query/filter. They deliver results similar to post_filter.
Sample view¶
from django_elasticsearch_dsl_drf.filter_backends import (
CompoundSearchFilterBackend,
DefaultOrderingFilterBackend,
FacetedSearchFilterBackend,
OrderingFilterBackend,
)
from django_elasticsearch_dsl_drf.viewsets import DocumentViewSet
from .documents import BookDocument
from .serializers import BookDocumentSerializer
class BookCompoundSearchBackendDocumentViewSet(DocumentViewSet):
document = BookDocument
serializer_class = BookDocumentSerializer
lookup_field = 'id'
filter_backends = [
# ...
OrderingFilterBackend,
DefaultOrderingFilterBackend,
CompoundSearchFilterBackend,
FacetedSearchFilterBackend,
# ...
]
faceted_search_fields = {
'state_global': {
'field': 'state.raw',
'enabled': True,
'global': True, # This makes the aggregation global
},
}
Sample request¶
http://localhost:8000/search/books/?facet=state_global&state=rejected
Generated query¶
{
"from":0,
"query":{
"bool":{
"filter":[
{
"terms":{
"state.raw":[
"rejected"
]
}
}
]
}
},
"size":25,
"aggs":{
"_filter_state_global":{
"aggs":{
"state_global":{
"terms":{
"field":"state.raw"
}
}
},
"global":{
}
}
},
"sort":[
"id",
"title",
"price"
]
}
Sample response¶
{
"count": 25,
"next": null,
"previous": null,
"facets": {
"_filter_state_global": {
"state_global": {
"buckets": [
{
"doc_count": 29,
"key": "not_published"
},
{
"doc_count": 25,
"key": "in_progress"
},
{
"doc_count": 25,
"key": "rejected"
},
{
"doc_count": 21,
"key": "cancelled"
},
{
"doc_count": 17,
"key": "published"
}
],
"sum_other_doc_count": 0,
"doc_count_error_upper_bound": 0
},
"doc_count": 117
}
},
"results": [
{
"id": 1007489,
"title": "Cupiditate qui nulla itaque maxime impedit.",
"description": null,
"summary": "Aut recusandae architecto incidunt quaerat odio .",
"authors": [
"Evy Vermeulen",
"Tycho Weijland",
"Rik Zeldenrust"
],
"publisher": "Overdijk Inc",
"publication_date": "2014-02-28",
"state": "rejected",
"isbn": "978-0-15-184366-4",
"price": 6.53,
"pages": 82,
"stock_count": 30,
"tags": [
"Trilogy"
],
"highlight": {},
"null_field": null,
"score": null
},
# ...
]
}