django_elasticsearch_dsl_drf.filter_backends.filtering package

Submodules

django_elasticsearch_dsl_drf.filter_backends.filtering.common module

Common filtering backend.

class django_elasticsearch_dsl_drf.filter_backends.filtering.common.FilteringFilterBackend[source]

Bases: rest_framework.filters.BaseFilterBackend, django_elasticsearch_dsl_drf.filter_backends.mixins.FilterBackendMixin

Filtering filter backend for Elasticsearch.

Example:

>>> from django_elasticsearch_dsl_drf.constants import (
>>>     LOOKUP_FILTER_PREFIX,
>>>     LOOKUP_FILTER_WILDCARD,
>>>     LOOKUP_QUERY_EXCLUDE,
>>>     LOOKUP_QUERY_ISNULL,
>>> )
>>> from django_elasticsearch_dsl_drf.filter_backends import (
>>>     FilteringFilterBackend
>>> )
>>> from django_elasticsearch_dsl_drf.views 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 = [FilteringFilterBackend,]
>>>     filter_fields = {
>>>         'title': 'title.raw',
>>>         'state': {
>>>             'field': 'state.raw',
>>>             'lookups': [
>>>                 LOOKUP_FILTER_PREFIX,
>>>                 LOOKUP_FILTER_WILDCARD,
>>>                 LOOKUP_QUERY_EXCLUDE,
>>>                 LOOKUP_QUERY_ISNULL,
>>>             ],
>>>         }
>>> }
classmethod apply_filter_prefix(queryset, options, value)[source]

Apply prefix filter.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_filter_range(queryset, options, value)[source]

Apply range filter.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_filter_term(queryset, options, value)[source]

Apply term filter.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_filter_terms(queryset, options, value)[source]

Apply terms filter.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (mixed: either str or iterable (list, tuple)) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_contains(queryset, options, value)[source]

Apply contains filter.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_endswith(queryset, options, value)[source]

Apply endswith filter.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_exclude(queryset, options, value)[source]

Apply exclude functional query.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_exists(queryset, options, value)[source]

Apply exists filter.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_geo_distance(queryset, options, value)[source]

Apply wildcard filter.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_gt(queryset, options, value)[source]

Apply gt functional query.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_gte(queryset, options, value)[source]

Apply gte functional query.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_in(queryset, options, value)[source]

Apply in functional query.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_isnull(queryset, options, value)[source]

Apply isnull functional query.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_lt(queryset, options, value)[source]

Apply lt functional query.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_lte(queryset, options, value)[source]

Apply lte functional query.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

classmethod apply_query_wildcard(queryset, options, value)[source]

Apply wildcard filter.

Parameters:
  • queryset (elasticsearch_dsl.search.Search) – Original queryset.
  • options (dict) – Filter options.
  • value (str) – value to filter on.
Returns:

Modified queryset.

Return type:

elasticsearch_dsl.search.Search

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_filter_query_params(request, view)[source]

Get query params to be filtered on.

Parameters:
  • request (rest_framework.request.Request) – Django REST framework request.
  • view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns:

Request query params to filter on.

Return type:

dict

classmethod get_geo_distance_params(value, field)[source]

Get params for geo_distance query

Parameters:value (str) –
Returns:Params to be used in geo_distance query.
Return type:dict
classmethod get_gte_lte_params(value, lookup)[source]

Get params for gte, gt, lte and lt query.

Parameters:
  • value (str) –
  • lookup (str) –
Returns:

Params to be used in range query.

Return type:

dict

classmethod get_range_params(value)[source]

Get params for range query.

Parameters:value
Type:str
Returns:Params to be used in range query.
Return type:dict
classmethod prepare_filter_fields(view)[source]

Prepare filter fields.

Parameters:view (rest_framework.viewsets.ReadOnlyModelViewSet) –
Returns:Filtering options.
Return type:dict

django_elasticsearch_dsl_drf.filter_backends.filtering.ids module

Ids filtering backend.

Filters documents that only have the provided ids. Note, this query uses the _uid field.

Elastic query:

{
“query”: {
“ids”: {
“type”: “book_document”, “values”: [“68”, “64”, “58”]

}

}

}

REST framework request equivalent:

Official Elastic docs:

class django_elasticsearch_dsl_drf.filter_backends.filtering.ids.IdsFilterBackend[source]

Bases: rest_framework.filters.BaseFilterBackend, django_elasticsearch_dsl_drf.filter_backends.mixins.FilterBackendMixin

Ids filter backend for Elasticsearch.

Example:

>>> from django_elasticsearch_dsl_drf.filter_backends import (
>>>     IdsFilterBackend
>>> )
>>> from django_elasticsearch_dsl_drf.views 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 = [IdsFilterBackend]
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_ids_query_params(request)[source]

Get search query params.

Parameters:request (rest_framework.request.Request) – Django REST framework request.
Returns:List of search query params.
Return type:list
get_ids_values(request, view)[source]

Get ids values for query.

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

ids_query_param = 'ids'

Module contents

Term level filtering backends.