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_field_type(field_name, field_value, base_field_type)[source]

Get field type.

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'

Module contents