django_elasticsearch_dsl_drf.filter_backends.search package

Subpackages

Submodules

django_elasticsearch_dsl_drf.filter_backends.search.base module

Base search backend.

class django_elasticsearch_dsl_drf.filter_backends.search.base.BaseSearchFilterBackend[source]

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

Base search filter backend.

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

Get query backends.

Returns

get_schema_fields(view)[source]
get_search_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

matching = 'should'
query_backends = []
search_param = 'search'

django_elasticsearch_dsl_drf.filter_backends.search.compound module

Compound search backend.

class django_elasticsearch_dsl_drf.filter_backends.search.compound.CompoundSearchFilterBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.base.BaseSearchFilterBackend

Compound search backend.

query_backends = [<class 'django_elasticsearch_dsl_drf.filter_backends.search.query_backends.match.MatchQueryBackend'>, <class 'django_elasticsearch_dsl_drf.filter_backends.search.query_backends.nested.NestedQueryBackend'>]

django_elasticsearch_dsl_drf.filter_backends.search.historical module

Search backend. Most likely to be deprecated soon.

class django_elasticsearch_dsl_drf.filter_backends.search.historical.SearchFilterBackend[source]

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

Search filter backend for Elasticsearch.

Example:

>>> from django_elasticsearch_dsl_drf.filter_backends import (
>>>     SearchFilterBackend
>>> )
>>> 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 = [SearchFilterBackend,]
>>>     search_fields = (
>>>         'title',
>>>         'content',
>>>     )
>>>     search_nested_fields = {
>>>         'state': ['name'],
>>>         'documents.author': ['title', 'description'],
>>>     }

Construct nested search.

We have to deal with two types of structures:

Type 1:

>>> search_nested_fields = {
>>>     'country': {
>>>         'path': 'country',
>>>         'fields': ['name'],
>>>     },
>>>     'city': {
>>>         'path': 'country.city',
>>>         'fields': ['name'],
>>>     },
>>> }

Type 2:

>>> search_nested_fields = {
>>>     'country': {
>>>         'path': 'country',
>>>         'fields': [{'name': {'boost': 2}}]
>>>     },
>>>     'city': {
>>>         'path': 'country.city',
>>>         'fields': [{'name': {'boost': 2}}]
>>>     },
>>> }
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

Construct search.

We have to deal with two types of structures:

Type 1:

>>> search_fields = (
>>>     'title',
>>>     'description',
>>>     'summary',
>>> )

Type 2:

>>> search_fields = {
>>>     'title': {'boost': 2},
>>>     'description': None,
>>>     'summary': None,
>>> }
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

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_coreschema_field(field)[source]
get_schema_fields(view)[source]
get_search_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

search_param = 'search'

django_elasticsearch_dsl_drf.filter_backends.search.multi_match module

Multi match search filter backend.

class django_elasticsearch_dsl_drf.filter_backends.search.multi_match.MultiMatchSearchFilterBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.base.BaseSearchFilterBackend

Multi match search filter backend.

matching = 'must'
query_backends = [<class 'django_elasticsearch_dsl_drf.filter_backends.search.query_backends.multi_match.MultiMatchQueryBackend'>]
search_param = 'search_multi_match'

django_elasticsearch_dsl_drf.filter_backends.search.query_string module

django_elasticsearch_dsl_drf.filter_backends.search.simple_query_string module

Simple query string search filter backend.

class django_elasticsearch_dsl_drf.filter_backends.search.simple_query_string.SimpleQueryStringSearchFilterBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.base.BaseSearchFilterBackend

Simple query string search filter backend.

matching = 'must'
query_backends = [<class 'django_elasticsearch_dsl_drf.filter_backends.search.query_backends.simple_query_string.SimpleQueryStringQueryBackend'>]
search_param = 'search_simple_query_string'

Module contents

Search filter backends.

class django_elasticsearch_dsl_drf.filter_backends.search.BaseSearchFilterBackend[source]

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

Base search filter backend.

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

Get query backends.

Returns

get_schema_fields(view)[source]
get_search_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

matching = 'should'
query_backends = []
search_param = 'search'
class django_elasticsearch_dsl_drf.filter_backends.search.CompoundSearchFilterBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.base.BaseSearchFilterBackend

Compound search backend.

query_backends = [<class 'django_elasticsearch_dsl_drf.filter_backends.search.query_backends.match.MatchQueryBackend'>, <class 'django_elasticsearch_dsl_drf.filter_backends.search.query_backends.nested.NestedQueryBackend'>]
class django_elasticsearch_dsl_drf.filter_backends.search.MultiMatchSearchFilterBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.base.BaseSearchFilterBackend

Multi match search filter backend.

matching = 'must'
query_backends = [<class 'django_elasticsearch_dsl_drf.filter_backends.search.query_backends.multi_match.MultiMatchQueryBackend'>]
search_param = 'search_multi_match'
class django_elasticsearch_dsl_drf.filter_backends.search.SearchFilterBackend[source]

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

Search filter backend for Elasticsearch.

Example:

>>> from django_elasticsearch_dsl_drf.filter_backends import (
>>>     SearchFilterBackend
>>> )
>>> 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 = [SearchFilterBackend,]
>>>     search_fields = (
>>>         'title',
>>>         'content',
>>>     )
>>>     search_nested_fields = {
>>>         'state': ['name'],
>>>         'documents.author': ['title', 'description'],
>>>     }

Construct nested search.

We have to deal with two types of structures:

Type 1:

>>> search_nested_fields = {
>>>     'country': {
>>>         'path': 'country',
>>>         'fields': ['name'],
>>>     },
>>>     'city': {
>>>         'path': 'country.city',
>>>         'fields': ['name'],
>>>     },
>>> }

Type 2:

>>> search_nested_fields = {
>>>     'country': {
>>>         'path': 'country',
>>>         'fields': [{'name': {'boost': 2}}]
>>>     },
>>>     'city': {
>>>         'path': 'country.city',
>>>         'fields': [{'name': {'boost': 2}}]
>>>     },
>>> }
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

Construct search.

We have to deal with two types of structures:

Type 1:

>>> search_fields = (
>>>     'title',
>>>     'description',
>>>     'summary',
>>> )

Type 2:

>>> search_fields = {
>>>     'title': {'boost': 2},
>>>     'description': None,
>>>     'summary': None,
>>> }
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

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_coreschema_field(field)[source]
get_schema_fields(view)[source]
get_search_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

search_param = 'search'
class django_elasticsearch_dsl_drf.filter_backends.search.SimpleQueryStringSearchFilterBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.base.BaseSearchFilterBackend

Simple query string search filter backend.

matching = 'must'
query_backends = [<class 'django_elasticsearch_dsl_drf.filter_backends.search.query_backends.simple_query_string.SimpleQueryStringQueryBackend'>]
search_param = 'search_simple_query_string'