django_elasticsearch_dsl_drf.filter_backends package¶
Subpackages¶
- django_elasticsearch_dsl_drf.filter_backends.aggregations package
- django_elasticsearch_dsl_drf.filter_backends.filtering package
- Submodules
- django_elasticsearch_dsl_drf.filter_backends.filtering.common module
- django_elasticsearch_dsl_drf.filter_backends.filtering.geo_spatial module
- django_elasticsearch_dsl_drf.filter_backends.filtering.ids module
- django_elasticsearch_dsl_drf.filter_backends.filtering.nested module
- django_elasticsearch_dsl_drf.filter_backends.filtering.post_filter module
- Module contents
- django_elasticsearch_dsl_drf.filter_backends.ordering package
- django_elasticsearch_dsl_drf.filter_backends.search package
- Subpackages
- django_elasticsearch_dsl_drf.filter_backends.search.query_backends package
- Submodules
- django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base module
- django_elasticsearch_dsl_drf.filter_backends.search.query_backends.match module
- django_elasticsearch_dsl_drf.filter_backends.search.query_backends.match_phrase module
- django_elasticsearch_dsl_drf.filter_backends.search.query_backends.match_phrase_prefix module
- django_elasticsearch_dsl_drf.filter_backends.search.query_backends.multi_match module
- django_elasticsearch_dsl_drf.filter_backends.search.query_backends.nested module
- django_elasticsearch_dsl_drf.filter_backends.search.query_backends.simple_query_string module
- Module contents
- django_elasticsearch_dsl_drf.filter_backends.search.query_backends package
- Submodules
- django_elasticsearch_dsl_drf.filter_backends.search.base module
- django_elasticsearch_dsl_drf.filter_backends.search.compound module
- django_elasticsearch_dsl_drf.filter_backends.search.historical module
- django_elasticsearch_dsl_drf.filter_backends.search.multi_match module
- django_elasticsearch_dsl_drf.filter_backends.search.query_string module
- django_elasticsearch_dsl_drf.filter_backends.search.simple_query_string module
- Module contents
- Subpackages
- django_elasticsearch_dsl_drf.filter_backends.suggester package
Submodules¶
django_elasticsearch_dsl_drf.filter_backends.faceted_search module¶
Faceted search backend.
- class django_elasticsearch_dsl_drf.filter_backends.faceted_search.FacetedSearchFilterBackend[source]¶
Bases:
rest_framework.filters.BaseFilterBackend
Faceted search backend.
Example:
>>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> FacetedSearchFilterBackend >>> ) >>> from elasticsearch_dsl import TermsFacet, DateHistogramFacet >>> from django_elasticsearch_dsl_drf.viewsets import ( >>> BaseDocumentViewSet, >>> ) >>> >>> # Local article document definition >>> from .documents import ArticleDocument >>> >>> # Local article document serializer >>> from .serializers import ArticleDocumentSerializer >>> >>> class ArticleDocumentView(BaseDocumentViewSet): >>> >>> document = ArticleDocument >>> serializer_class = ArticleDocumentSerializer >>> filter_backends = [FacetedSearchFilterBackend,] >>> faceted_search_fields = { >>> 'title': 'title.raw', # Uses `TermsFacet` by default >>> 'state': { >>> 'field': 'state.raw', >>> 'facet': TermsFacet, >>> }, >>> 'publisher': { >>> 'field': 'publisher.raw', >>> 'facet': TermsFacet, >>> 'enabled': False, >>> }, >>> 'date_published': { >>> 'field': 'date_published.raw', >>> 'facet': DateHistogramFacet, >>> 'options': { >>> 'interval': 'month', >>> }, >>> 'enabled': True, >>> }, >>> >>> }
Facets make queries to be more heavy. That’s why by default all facets are disabled and enabled only explicitly either in the filter options (enabled set to True) or via query params ?facet=state&facet=date_published.
- aggregate(request, queryset, view)[source]¶
Aggregate.
- Parameters
request –
queryset –
view –
- Returns
- construct_facets(request, view)[source]¶
Construct facets.
Turns the following structure:
>>> { >>> 'publisher': { >>> 'field': 'publisher.raw', >>> 'facet': TermsFacet, >>> 'enabled': False, >>> } >>> 'date_published': { >>> 'field': 'date_published', >>> 'facet': DateHistogramFacet, >>> 'options': { >>> 'interval': 'month', >>> }, >>> 'enabled': True, >>> }, >>> }
Into the following structure:
>>> { >>> 'publisher': TermsFacet(field='publisher.raw'), >>> 'publishing_frequency': DateHistogramFacet( >>> field='date_published.raw', >>> interval='month' >>> ), >>> }
- faceted_search_param = 'facet'¶
- filter_queryset(request, queryset, view)[source]¶
Filter the queryset.
- Parameters
request (rest_framework.request.Request) – Django REST framework request.
queryset (elasticsearch_dsl.search.Search) – Base queryset.
view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
- Returns
Updated queryset.
- Return type
elasticsearch_dsl.search.Search
- get_faceted_search_query_params(request)[source]¶
Get faceted search query params.
- Parameters
request (rest_framework.request.Request) – Django REST framework request.
- Returns
List of search query params.
- Return type
list
- classmethod prepare_faceted_search_fields(view)[source]¶
Prepare faceted search fields.
Prepares the following structure:
>>> { >>> 'publisher': { >>> 'field': 'publisher.raw', >>> 'facet': TermsFacet, >>> 'enabled': False, >>> } >>> 'date_published': { >>> 'field': 'date_published.raw', >>> 'facet': DateHistogramFacet, >>> 'options': { >>> 'interval': 'month', >>> }, >>> 'enabled': True, >>> }, >>> }
- Parameters
view (rest_framework.viewsets.ReadOnlyModelViewSet) –
- Returns
Faceted search fields options.
- Return type
dict
django_elasticsearch_dsl_drf.filter_backends.highlight module¶
Highlight backend.
- class django_elasticsearch_dsl_drf.filter_backends.highlight.HighlightBackend[source]¶
Bases:
rest_framework.filters.BaseFilterBackend
Highlight backend.
Example:
>>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> HighlightBackend >>> ) >>> from django_elasticsearch_dsl_drf.viewsets import ( >>> BaseDocumentViewSet, >>> ) >>> >>> # Local article document definition >>> from .documents import ArticleDocument >>> >>> # Local article document serializer >>> from .serializers import ArticleDocumentSerializer >>> >>> class ArticleDocumentView(BaseDocumentViewSet): >>> >>> document = ArticleDocument >>> serializer_class = ArticleDocumentSerializer >>> filter_backends = [HighlightBackend,] >>> highlight_fields = { >>> 'author.name': { >>> 'enabled': False, >>> 'options': { >>> 'fragment_size': 150, >>> 'number_of_fragments': 3 >>> } >>> } >>> 'title': { >>> 'options': { >>> 'pre_tags' : ["<em>"], >>> 'post_tags' : ["</em>"] >>> }, >>> 'enabled': True, >>> }, >>> }
Highlight make queries to be more heavy. That’s why by default all highlights are disabled and enabled only explicitly either in the filter options (enabled set to True) or via query params ?highlight=author.name&highlight=title.
- filter_queryset(request, queryset, view)[source]¶
Filter the queryset.
- Parameters
request (rest_framework.request.Request) – Django REST framework request.
queryset (elasticsearch_dsl.search.Search) – Base queryset.
view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
- Returns
Updated queryset.
- Return type
elasticsearch_dsl.search.Search
- get_highlight_query_params(request)[source]¶
Get highlight query params.
- Parameters
request (rest_framework.request.Request) – Django REST framework request.
- Returns
List of search query params.
- Return type
list
- highlight_param = 'highlight'¶
- classmethod prepare_highlight_fields(view)[source]¶
Prepare faceted search fields.
Prepares the following structure:
>>> { >>> 'author.name': { >>> 'enabled': False, >>> 'options': { >>> 'fragment_size': 150, >>> 'number_of_fragments': 3 >>> } >>> } >>> 'title': { >>> 'options': { >>> 'pre_tags' : ["<em>"], >>> 'post_tags' : ["</em>"] >>> }, >>> 'enabled': True, >>> }, >>> }
- Parameters
view (rest_framework.viewsets.ReadOnlyModelViewSet) –
- Returns
Highlight fields options.
- Return type
dict
django_elasticsearch_dsl_drf.filter_backends.mixins module¶
Mixins.
- class django_elasticsearch_dsl_drf.filter_backends.mixins.FilterBackendMixin[source]¶
Bases:
object
Filter backend mixin.
- classmethod apply_filter(queryset, options=None, args=None, kwargs=None)[source]¶
Apply filter.
- Parameters
queryset –
options –
args –
kwargs –
- Returns
- classmethod apply_query(queryset, options=None, args=None, kwargs=None)[source]¶
Apply query.
- Parameters
queryset –
options –
args –
kwargs –
- Returns
- classmethod split_lookup_complex_multiple_value(value, maxsplit=- 1)[source]¶
Split lookup complex multiple value.
- Parameters
value (str) – Value to split.
maxsplit (int) – The maxsplit option of string.split.
- Returns
Lookup filter split into a list.
- Return type
list
- classmethod split_lookup_complex_value(value, maxsplit=- 1)[source]¶
Split lookup complex value.
- Parameters
value (str) – Value to split.
maxsplit (int) – The maxsplit option of string.split.
- Returns
Lookup filter split into a list.
- Return type
list
django_elasticsearch_dsl_drf.filter_backends.source module¶
Source backend.
- class django_elasticsearch_dsl_drf.filter_backends.source.SourceBackend[source]¶
Bases:
rest_framework.filters.BaseFilterBackend
Static source backend.
Example 1 (simple):
>>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> SourceBackend >>> ) >>> from django_elasticsearch_dsl_drf.viewsets import ( >>> BaseDocumentViewSet, >>> ) >>> >>> # Local article document definition >>> from .documents import ArticleDocument >>> >>> # Local article document serializer >>> from .serializers import ArticleDocumentSerializer >>> >>> class ArticleDocumentView(BaseDocumentViewSet): >>> >>> document = ArticleDocument >>> serializer_class = ArticleDocumentSerializer >>> filter_backends = [SourceBackend,] >>> source = ["title"]
Example 2 (complex):
>>> # ... >>> source = ["title", "author.*"]
Example 3 (even more complex):
>>> # ... >>> source = { >>> "includes": ["title", "author.*"], >>> "excludes": [ "*.description" ] >>> }
Source can make queries lighter. However, it can break current functionality. Use it with caution.
- filter_queryset(request, queryset, view)[source]¶
Filter the queryset.
- Parameters
request (rest_framework.request.Request) – Django REST framework request.
queryset (elasticsearch_dsl.search.Search) – Base queryset.
view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
- Returns
Updated queryset.
- Return type
elasticsearch_dsl.search.Search
Module contents¶
All filter backends.