graphene_elastic.filter_backends.ordering package¶
Submodules¶
graphene_elastic.filter_backends.ordering.common module¶
Ordering backend.
- class graphene_elastic.filter_backends.ordering.common.DefaultOrderingFilterBackend(connection_field, args=None)[source]¶
Bases:
BaseBackend
,OrderingMixin
Default ordering filter backend for Elasticsearch.
Make sure this is your last ordering backend.
Example:
>>> import graphene >>> from graphene import Node >>> from graphene_elastic import ( >>> ElasticsearchObjectType, >>> ElasticsearchConnectionField, >>> ) >>> from graphene_elastic.filter_backends import ( >>> FilteringFilterBackend, >>> SearchFilterBackend, >>> OrderingFilterBackend, >>> DefaultOrderingFilterBackend, >>> ) >>> from graphene_elastic.constants import ( >>> LOOKUP_FILTER_PREFIX, >>> LOOKUP_FILTER_TERM, >>> LOOKUP_FILTER_TERMS, >>> LOOKUP_FILTER_WILDCARD, >>> LOOKUP_QUERY_EXCLUDE, >>> LOOKUP_QUERY_IN, >>> ) >>> >>> from search_index.documents import Post as PostDocument >>> >>> class Post(ElasticsearchObjectType): >>> >>> class Meta(object): >>> document = PostDocument >>> interfaces = (Node,) >>> filter_backends = [ >>> FilteringFilterBackend, >>> SearchFilterBackend, >>> OrderingFilterBackend, >>> DefaultOrderingFilterBackend >>> ] >>> filter_fields = { >>> 'id': '_id', >>> 'title': { >>> 'field': 'title.raw', >>> 'lookups': [ >>> LOOKUP_FILTER_TERM, >>> LOOKUP_FILTER_TERMS, >>> LOOKUP_FILTER_PREFIX, >>> LOOKUP_FILTER_WILDCARD, >>> LOOKUP_QUERY_IN, >>> LOOKUP_QUERY_EXCLUDE, >>> ], >>> 'default_lookup': LOOKUP_FILTER_TERM, >>> }, >>> 'category': 'category.raw', >>> 'tags': 'tags.raw', >>> 'num_views': 'num_views', >>> } >>> search_fields = { >>> 'title': {'boost': 4}, >>> 'content': {'boost': 2}, >>> 'category': None, >>> } >>> ordering_fields = { >>> 'id': None, >>> 'title': 'title.raw', >>> 'created_at': 'created_at', >>> 'num_views': 'num_views', >>> } >>> >>> ordering_defaults = ('id', 'title',)
- filter(queryset)[source]¶
Filter the queryset.
- Parameters:
queryset (elasticsearch_dsl.search.Search) – Base queryset.
- Returns:
Updated queryset.
- Return type:
elasticsearch_dsl.search.Search
- get_default_ordering_params()[source]¶
Get the default ordering params for the view.
- Returns:
Ordering params to be used for ordering.
- Return type:
list
- get_ordering_query_params()[source]¶
Get ordering query params.
- Returns:
Ordering params to be used for ordering.
- Return type:
list
- has_query_fields = False¶
- property ordering_defaults¶
Ordering filter fields.
- property ordering_fields¶
Ordering filter fields.
- prefix = 'ordering'¶
- class graphene_elastic.filter_backends.ordering.common.OrderingFilterBackend(connection_field, args=None)[source]¶
Bases:
BaseBackend
,OrderingMixin
Ordering filter backend for Elasticsearch.
Example:
>>> import graphene >>> from graphene import Node >>> from graphene_elastic import ( >>> ElasticsearchObjectType, >>> ElasticsearchConnectionField, >>> ) >>> from graphene_elastic.filter_backends import ( >>> FilteringFilterBackend, >>> SearchFilterBackend, >>> OrderingFilterBackend, >>> DefaultOrderingFilterBackend, >>> ) >>> from graphene_elastic.constants import ( >>> LOOKUP_FILTER_PREFIX, >>> LOOKUP_FILTER_TERM, >>> LOOKUP_FILTER_TERMS, >>> LOOKUP_FILTER_WILDCARD, >>> LOOKUP_QUERY_EXCLUDE, >>> LOOKUP_QUERY_IN, >>> ) >>> >>> from search_index.documents import Post as PostDocument >>> >>> class Post(ElasticsearchObjectType): >>> >>> class Meta(object): >>> document = PostDocument >>> interfaces = (Node,) >>> filter_backends = [ >>> FilteringFilterBackend, >>> SearchFilterBackend, >>> OrderingFilterBackend, >>> DefaultOrderingFilterBackend >>> ] >>> filter_fields = { >>> 'id': '_id', >>> 'title': { >>> 'field': 'title.raw', >>> 'lookups': [ >>> LOOKUP_FILTER_TERM, >>> LOOKUP_FILTER_TERMS, >>> LOOKUP_FILTER_PREFIX, >>> LOOKUP_FILTER_WILDCARD, >>> LOOKUP_QUERY_IN, >>> LOOKUP_QUERY_EXCLUDE, >>> ], >>> 'default_lookup': LOOKUP_FILTER_TERM, >>> }, >>> 'category': 'category.raw', >>> 'tags': 'tags.raw', >>> 'num_views': 'num_views', >>> } >>> search_fields = { >>> 'title': {'boost': 4}, >>> 'content': {'boost': 2}, >>> 'category': None, >>> } >>> ordering_fields = { >>> 'id': None, >>> 'title': 'title.raw', >>> 'created_at': 'created_at', >>> 'num_views': 'num_views', >>> } >>> >>> ordering_defaults = ('id', 'title',)
The basic usage would be:
- query {
- allPostDocuments(ordering:{title:ASC}) {
- edges {
- node {
title content category numViews createdAt
}
}
}
}
- field_belongs_to(field_name)[source]¶
Check if given filter field belongs to the backend.
- Parameters:
field_name –
- Returns:
- filter(queryset)[source]¶
Filter the queryset.
- Parameters:
queryset (elasticsearch_dsl.search.Search) – Base queryset.
- Returns:
Updated queryset.
- Return type:
elasticsearch_dsl.search.Search
- get_backend_default_query_fields_params()[source]¶
Get default query fields params for the backend.
- Return type:
dict
- Returns:
- get_ordering_query_params()[source]¶
Get ordering query params.
- Returns:
Ordering params to be used for ordering.
- Return type:
list
- has_query_fields = True¶
- property ordering_args_mapping¶
- property ordering_fields¶
Ordering filter fields.
- prefix = 'ordering'¶
- score_field_name = 'score'¶