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.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 = [FilteringFilterBackend,] >>> filter_fields = { >>> 'title': 'title.raw', >>> 'state': { >>> 'field': 'state.raw', >>> 'lookups': [ >>> LOOKUP_FILTER_PREFIX, >>> LOOKUP_FILTER_WILDCARD, >>> LOOKUP_QUERY_EXCLUDE, >>> LOOKUP_QUERY_ISNULL, >>> ], >>> 'default_lookup': LOOKUP_FILTER_WILDCARD, >>> } >>> }
- classmethod apply_filter_prefix(queryset, options, value)[source]¶
Apply prefix filter.
Syntax:
/endpoint/?field_name__prefix={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__range={lower}__{upper}__{boost} /endpoint/?field_name__range={lower}__{upper}
Example:
- 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_regexp(queryset, options, value)[source]¶
Apply reexp filter.
Syntax:
/endpoint/?field_name__regexp={regexp}
Example:
- 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.
Syntax:
/endpoint/?field_name={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__terms={value1}__{value2} /endpoint/?field_name__terms={value1}
Note, that number of values is not limited.
Example:
- 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.
Syntax:
/endpoint/?field_name__contains={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__endswith={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__isnull={value1}__{value2} /endpoint/?field_name__exclude={valu1}
Note, that number of values is not limited.
Example:
- 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.
Syntax:
/endpoint/?field_name__exists=true /endpoint/?field_name__exists=false
Example:
- 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.
Syntax:
/endpoint/?field_name__gt={value}__{boost} /endpoint/?field_name__gt={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__gte={value}__{boost} /endpoint/?field_name__gte={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__in={value1}__{value2} /endpoint/?field_name__in={value1}
Note, that number of values is not limited.
Example:
- 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.
Syntax:
/endpoint/?field_name__isnull=true /endpoint/?field_name__isnull=false
Example:
- 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.
Syntax:
/endpoint/?field_name__lt={value}__{boost} /endpoint/?field_name__lt={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__lte={value}__{boost} /endpoint/?field_name__lte={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__wildcard={value}* /endpoint/?field_name__wildcard=*{value} /endpoint/?field_name__wildcard=*{value}*
Example:
- 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_gte_lte_params(value, lookup)[source]¶
Get params for gte, gt, lte and lt query.
Syntax:
/endpoint/?field_name__gt={lower}__{boost} /endpoint/?field_name__gt={lower}
Example:
- Parameters
value (str) –
lookup (str) –
- Returns
Params to be used in range query.
- Return type
dict
django_elasticsearch_dsl_drf.filter_backends.filtering.geo_spatial module¶
Geo spatial filtering backend.
Elasticsearch supports two types of geo data:
geo_point fields which support lat/lon pairs
geo_shape fields, which support points, lines, circles, polygons, multi-polygons etc.
The queries in this group are:
geo_shape query: Find document with geo-shapes which either intersect, are contained by, or do not intersect with the specified geo-shape.
geo_bounding_box query: Finds documents with geo-points that fall into the specified rectangle.
geo_distance query: Finds document with geo-points within the specified distance of a central point.
geo_distance_range query: Like the geo_distance query, but the range starts at a specified distance from the central point. Note, that this one is deprecated and this isn’t implemented.
geo_polygon query: Find documents with geo-points within the specified polygon.
- class django_elasticsearch_dsl_drf.filter_backends.filtering.geo_spatial.GeoSpatialFilteringFilterBackend[source]¶
Bases:
rest_framework.filters.BaseFilterBackend
,django_elasticsearch_dsl_drf.filter_backends.mixins.FilterBackendMixin
Geo-spatial filtering filter backend for Elasticsearch.
Example:
>>> from django_elasticsearch_dsl_drf.constants import ( >>> LOOKUP_FILTER_GEO_DISTANCE, >>> ) >>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> GeoSpatialFilteringFilterBackend >>> ) >>> 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 = [GeoSpatialFilteringFilterBackend,] >>> geo_spatial_filter_fields = { >>> 'loc': 'location', >>> 'location': { >>> 'field': 'location', >>> 'lookups': [ >>> LOOKUP_FILTER_GEO_DISTANCE, >>> ], >>> } >>> }
- classmethod apply_query_geo_bounding_box(queryset, options, value)[source]¶
Apply geo_bounding_box 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_geo_distance(queryset, options, value)[source]¶
Apply geo_distance 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_geo_polygon(queryset, options, value)[source]¶
Apply geo_polygon 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_geo_shape(queryset, options, value)[source]¶
Apply geo_shape 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
- 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_bounding_box_params(value, field)[source]¶
Get params for geo_bounding_box query.
Example:
/api/articles/?location__geo_bounding_box=40.73,-74.1__40.01,-71.12
Example:
- /api/articles/?location__geo_polygon=40.73,-74.1
__40.01,-71.12 ___name,myname __validation_method,IGNORE_MALFORMED __type,indexed
Elasticsearch:
- {
- “query”: {
- “bool”{
- “must”{
“match_all” : {}
}, “filter” : {
- “geo_bounding_box”{
- “person.location”{
- “top_left”{
“lat” : 40.73, “lon” : -74.1
}, “bottom_right” : {
“lat” : 40.01, “lon” : -71.12
}
}
}
}
}
}
}
- Parameters
value (str) –
field –
- Returns
Params to be used in geo_bounding_box query.
- Return type
dict
- classmethod get_geo_distance_params(value, field)[source]¶
Get params for geo_distance query.
Example:
/api/articles/?location__geo_distance=2km__43.53__-12.23
- Parameters
value (str) –
field –
- Returns
Params to be used in geo_distance query.
- Return type
dict
- classmethod get_geo_polygon_params(value, field)[source]¶
Get params for geo_polygon query.
Example:
/api/articles/?location__geo_polygon=40,-70__30,-80__20,-90
Example:
- /api/articles/?location__geo_polygon=40,-70
__30,-80 __20,-90 ___name,myname __validation_method,IGNORE_MALFORMED
Elasticsearch:
- {
- “query”: {
- “bool”{
- “must”{
“match_all” : {}
}, “filter” : {
- “geo_polygon”{
- “person.location”{
- “points”[
{“lat” : 40, “lon” : -70}, {“lat” : 30, “lon” : -80}, {“lat” : 20, “lon” : -90}
]
}
}
}
}
}
}
- Parameters
value (str) –
field –
- Returns
Params to be used in geo_distance query.
- Return type
dict
- classmethod get_geo_shape_params(value, field)[source]¶
Get params for geo_shape query.
Example:
- /search/publishers/?location__geo_shape=48.9864453,6.37977
__relation,intersects __type,circle __radius,20km
Example:
- /search/publishers/?location__geo_shape=48.906254,6.378593
__48.985850,6.479359 __relation,within __type,envelope
Elasticsearch:
- {
- “query”: {
- “bool”{
- “must”{
“match_all” : {}
}, “filter” : {
- “geo_shape”{
- “location”{
- “shape”: {
“type”: “circle”, “coordinates”: [48.9864453, 6.37977], “radius”: “20km”
}, “relation”: “intersects”
}
}
}
}
}
}
- Parameters
value (str) –
field –
- Returns
Params to be used in geo_shape query.
- 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:
https://www.elastic.co/guide/en/elasticsearch/reference/current/ query-dsl-ids-query.html
- 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.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 = [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'¶
django_elasticsearch_dsl_drf.filter_backends.filtering.nested module¶
Nested filtering backend.
- class django_elasticsearch_dsl_drf.filter_backends.filtering.nested.NestedFilteringFilterBackend[source]¶
Bases:
django_elasticsearch_dsl_drf.filter_backends.filtering.common.FilteringFilterBackend
Nested filter backend.
Example:
>>> from django_elasticsearch_dsl_drf.constants import ( >>> LOOKUP_FILTER_TERM, >>> LOOKUP_FILTER_PREFIX, >>> LOOKUP_FILTER_WILDCARD, >>> LOOKUP_QUERY_EXCLUDE, >>> LOOKUP_QUERY_ISNULL, >>> ) >>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> NestedFilteringFilterBackend >>> ) >>> 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 = [NestedFilteringFilterBackend,] >>> nested_filter_fields = { >>> 'country': { >>> 'field': 'continent.country.name.raw', >>> 'path': 'continent.country', >>> 'lookups': [ >>> LOOKUP_FILTER_TERM, >>> LOOKUP_FILTER_TERMS, >>> LOOKUP_FILTER_PREFIX, >>> LOOKUP_FILTER_WILDCARD, >>> LOOKUP_QUERY_EXCLUDE, >>> LOOKUP_QUERY_ISNULL, >>> ], >>> } >>> }
- classmethod apply_filter(queryset, options=None, args=None, kwargs=None)[source]¶
Apply filter.
- Parameters
queryset –
options –
args –
kwargs –
- Returns
- classmethod apply_query(queryset, options=None, args=None, kwargs=None)[source]¶
Apply query.
- Parameters
queryset –
options –
args –
kwargs –
- Returns
- get_filter_field_nested_path(filter_fields, field_name)[source]¶
Get filter field path to be used in nested query.
- Parameters
filter_fields –
field_name –
- Returns
django_elasticsearch_dsl_drf.filter_backends.filtering.post_filter module¶
The post_filter
filtering backend.
- class django_elasticsearch_dsl_drf.filter_backends.filtering.post_filter.PostFilterFilteringFilterBackend[source]¶
Bases:
django_elasticsearch_dsl_drf.filter_backends.filtering.common.FilteringFilterBackend
The
post_filter
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 ( >>> PostFilterFilteringFilterBackend >>> ) >>> 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 = [PostFilterFilteringFilterBackend,] >>> post_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(queryset, options=None, args=None, kwargs=None)[source]¶
Apply filter.
- Parameters
queryset –
options –
args –
kwargs –
- Returns
Module contents¶
Term level filtering and post_filter
backends.
- class django_elasticsearch_dsl_drf.filter_backends.filtering.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.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 = [FilteringFilterBackend,] >>> filter_fields = { >>> 'title': 'title.raw', >>> 'state': { >>> 'field': 'state.raw', >>> 'lookups': [ >>> LOOKUP_FILTER_PREFIX, >>> LOOKUP_FILTER_WILDCARD, >>> LOOKUP_QUERY_EXCLUDE, >>> LOOKUP_QUERY_ISNULL, >>> ], >>> 'default_lookup': LOOKUP_FILTER_WILDCARD, >>> } >>> }
- classmethod apply_filter_prefix(queryset, options, value)[source]¶
Apply prefix filter.
Syntax:
/endpoint/?field_name__prefix={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__range={lower}__{upper}__{boost} /endpoint/?field_name__range={lower}__{upper}
Example:
- 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_regexp(queryset, options, value)[source]¶
Apply reexp filter.
Syntax:
/endpoint/?field_name__regexp={regexp}
Example:
- 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.
Syntax:
/endpoint/?field_name={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__terms={value1}__{value2} /endpoint/?field_name__terms={value1}
Note, that number of values is not limited.
Example:
- 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.
Syntax:
/endpoint/?field_name__contains={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__endswith={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__isnull={value1}__{value2} /endpoint/?field_name__exclude={valu1}
Note, that number of values is not limited.
Example:
- 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.
Syntax:
/endpoint/?field_name__exists=true /endpoint/?field_name__exists=false
Example:
- 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.
Syntax:
/endpoint/?field_name__gt={value}__{boost} /endpoint/?field_name__gt={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__gte={value}__{boost} /endpoint/?field_name__gte={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__in={value1}__{value2} /endpoint/?field_name__in={value1}
Note, that number of values is not limited.
Example:
- 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.
Syntax:
/endpoint/?field_name__isnull=true /endpoint/?field_name__isnull=false
Example:
- 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.
Syntax:
/endpoint/?field_name__lt={value}__{boost} /endpoint/?field_name__lt={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__lte={value}__{boost} /endpoint/?field_name__lte={value}
Example:
- 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.
Syntax:
/endpoint/?field_name__wildcard={value}* /endpoint/?field_name__wildcard=*{value} /endpoint/?field_name__wildcard=*{value}*
Example:
- 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_gte_lte_params(value, lookup)[source]¶
Get params for gte, gt, lte and lt query.
Syntax:
/endpoint/?field_name__gt={lower}__{boost} /endpoint/?field_name__gt={lower}
Example:
- Parameters
value (str) –
lookup (str) –
- Returns
Params to be used in range query.
- Return type
dict
- class django_elasticsearch_dsl_drf.filter_backends.filtering.GeoSpatialFilteringFilterBackend[source]¶
Bases:
rest_framework.filters.BaseFilterBackend
,django_elasticsearch_dsl_drf.filter_backends.mixins.FilterBackendMixin
Geo-spatial filtering filter backend for Elasticsearch.
Example:
>>> from django_elasticsearch_dsl_drf.constants import ( >>> LOOKUP_FILTER_GEO_DISTANCE, >>> ) >>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> GeoSpatialFilteringFilterBackend >>> ) >>> 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 = [GeoSpatialFilteringFilterBackend,] >>> geo_spatial_filter_fields = { >>> 'loc': 'location', >>> 'location': { >>> 'field': 'location', >>> 'lookups': [ >>> LOOKUP_FILTER_GEO_DISTANCE, >>> ], >>> } >>> }
- classmethod apply_query_geo_bounding_box(queryset, options, value)[source]¶
Apply geo_bounding_box 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_geo_distance(queryset, options, value)[source]¶
Apply geo_distance 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_geo_polygon(queryset, options, value)[source]¶
Apply geo_polygon 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_geo_shape(queryset, options, value)[source]¶
Apply geo_shape 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
- 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_bounding_box_params(value, field)[source]¶
Get params for geo_bounding_box query.
Example:
/api/articles/?location__geo_bounding_box=40.73,-74.1__40.01,-71.12
Example:
- /api/articles/?location__geo_polygon=40.73,-74.1
__40.01,-71.12 ___name,myname __validation_method,IGNORE_MALFORMED __type,indexed
Elasticsearch:
- {
- “query”: {
- “bool”{
- “must”{
“match_all” : {}
}, “filter” : {
- “geo_bounding_box”{
- “person.location”{
- “top_left”{
“lat” : 40.73, “lon” : -74.1
}, “bottom_right” : {
“lat” : 40.01, “lon” : -71.12
}
}
}
}
}
}
}
- Parameters
value (str) –
field –
- Returns
Params to be used in geo_bounding_box query.
- Return type
dict
- classmethod get_geo_distance_params(value, field)[source]¶
Get params for geo_distance query.
Example:
/api/articles/?location__geo_distance=2km__43.53__-12.23
- Parameters
value (str) –
field –
- Returns
Params to be used in geo_distance query.
- Return type
dict
- classmethod get_geo_polygon_params(value, field)[source]¶
Get params for geo_polygon query.
Example:
/api/articles/?location__geo_polygon=40,-70__30,-80__20,-90
Example:
- /api/articles/?location__geo_polygon=40,-70
__30,-80 __20,-90 ___name,myname __validation_method,IGNORE_MALFORMED
Elasticsearch:
- {
- “query”: {
- “bool”{
- “must”{
“match_all” : {}
}, “filter” : {
- “geo_polygon”{
- “person.location”{
- “points”[
{“lat” : 40, “lon” : -70}, {“lat” : 30, “lon” : -80}, {“lat” : 20, “lon” : -90}
]
}
}
}
}
}
}
- Parameters
value (str) –
field –
- Returns
Params to be used in geo_distance query.
- Return type
dict
- classmethod get_geo_shape_params(value, field)[source]¶
Get params for geo_shape query.
Example:
- /search/publishers/?location__geo_shape=48.9864453,6.37977
__relation,intersects __type,circle __radius,20km
Example:
- /search/publishers/?location__geo_shape=48.906254,6.378593
__48.985850,6.479359 __relation,within __type,envelope
Elasticsearch:
- {
- “query”: {
- “bool”{
- “must”{
“match_all” : {}
}, “filter” : {
- “geo_shape”{
- “location”{
- “shape”: {
“type”: “circle”, “coordinates”: [48.9864453, 6.37977], “radius”: “20km”
}, “relation”: “intersects”
}
}
}
}
}
}
- Parameters
value (str) –
field –
- Returns
Params to be used in geo_shape query.
- Return type
dict
- class django_elasticsearch_dsl_drf.filter_backends.filtering.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.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 = [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'¶
- class django_elasticsearch_dsl_drf.filter_backends.filtering.NestedFilteringFilterBackend[source]¶
Bases:
django_elasticsearch_dsl_drf.filter_backends.filtering.common.FilteringFilterBackend
Nested filter backend.
Example:
>>> from django_elasticsearch_dsl_drf.constants import ( >>> LOOKUP_FILTER_TERM, >>> LOOKUP_FILTER_PREFIX, >>> LOOKUP_FILTER_WILDCARD, >>> LOOKUP_QUERY_EXCLUDE, >>> LOOKUP_QUERY_ISNULL, >>> ) >>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> NestedFilteringFilterBackend >>> ) >>> 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 = [NestedFilteringFilterBackend,] >>> nested_filter_fields = { >>> 'country': { >>> 'field': 'continent.country.name.raw', >>> 'path': 'continent.country', >>> 'lookups': [ >>> LOOKUP_FILTER_TERM, >>> LOOKUP_FILTER_TERMS, >>> LOOKUP_FILTER_PREFIX, >>> LOOKUP_FILTER_WILDCARD, >>> LOOKUP_QUERY_EXCLUDE, >>> LOOKUP_QUERY_ISNULL, >>> ], >>> } >>> }
- classmethod apply_filter(queryset, options=None, args=None, kwargs=None)[source]¶
Apply filter.
- Parameters
queryset –
options –
args –
kwargs –
- Returns
- classmethod apply_query(queryset, options=None, args=None, kwargs=None)[source]¶
Apply query.
- Parameters
queryset –
options –
args –
kwargs –
- Returns
- get_filter_field_nested_path(filter_fields, field_name)[source]¶
Get filter field path to be used in nested query.
- Parameters
filter_fields –
field_name –
- Returns
- class django_elasticsearch_dsl_drf.filter_backends.filtering.PostFilterFilteringFilterBackend[source]¶
Bases:
django_elasticsearch_dsl_drf.filter_backends.filtering.common.FilteringFilterBackend
The
post_filter
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 ( >>> PostFilterFilteringFilterBackend >>> ) >>> 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 = [PostFilterFilteringFilterBackend,] >>> post_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(queryset, options=None, args=None, kwargs=None)[source]¶
Apply filter.
- Parameters
queryset –
options –
args –
kwargs –
- Returns