django_elasticsearch_dsl_drf.filter_backends package

Subpackages

Submodules

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

classmethod split_lookup_filter(value, maxsplit=- 1)[source]

Split lookup filter.

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_name(value, maxsplit=- 1)[source]

Split lookup value.

Parameters
  • value (str) – Value to split.

  • maxsplit (int) – The maxsplit option of string.split.

Returns

Lookup value 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.