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