django_elasticsearch_dsl_drf.filter_backends.search.query_backends package

Submodules

django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base module

class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend[source]

Bases: object

Search query backend.

Construct search.

Parameters:
  • request
  • view
  • search_backend
Returns:

django_elasticsearch_dsl_drf.filter_backends.search.query_backends.match module

class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.match.MatchQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Match query backend.

Construct search.

Parameters:
  • request
  • view
  • search_backend
Returns:

query_type = 'match'

django_elasticsearch_dsl_drf.filter_backends.search.query_backends.match_phrase module

class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.match_phrase.MatchPhraseQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Match phrase query backend.

Construct search.

Parameters:
  • request
  • view
  • search_backend
Returns:

query_type = 'match_phrase'

django_elasticsearch_dsl_drf.filter_backends.search.query_backends.match_phrase_prefix module

class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.match_phrase_prefix.MatchPhrasePrefixQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Match phrase prefix query backend.

Construct search.

Parameters:
  • request
  • view
  • search_backend
Returns:

query_type = 'match_phrase_prefix'

django_elasticsearch_dsl_drf.filter_backends.search.query_backends.multi_match module

class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.multi_match.MultiMatchQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Multi match query backend.

Construct search.

In case of multi match, we always look in a group of fields. Thus, matching per field is no longer valid use case here. However, we might want to have multiple fields enabled for multi match per view set, and only search in some of them in specific request.

Example:

/search/books/?search_multi_match=lorem ipsum /search/books/?search_multi_match=title,summary:lorem ipsum

Note, that multiple searches are not supported (would not raise an exception, but would simply take only the first):

/search/books/?search_multi_match=title,summary:lorem ipsum
&search_multi_match=author,publisher=o’reily

In the view-set fields shall be defined in a very simple way. The only accepted argument would be boost (per field).

Example 1 (complex):

multi_match_search_fields = {
‘title’: {‘field’: ‘title.english’, ‘boost’: 4}, ‘summary’: {‘boost’: 2}, ‘description’: None,

}

Example 2 (simple list):

multi_match_search_fields = (
‘title’, ‘summary’, ‘description’,

)

Parameters:
  • request
  • view
  • search_backend
Returns:

classmethod get_field(field, options)[source]

Get field.

Parameters:
  • field
  • options
Returns:

classmethod get_query_options(request, view, search_backend)[source]
query_type = 'multi_match'

django_elasticsearch_dsl_drf.filter_backends.search.query_backends.nested module

class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.nested.NestedQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Nested query backend.

Construct search.

Dictionary key is the GET param name. The path option stands for the path in Elasticsearch.

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
  • view
  • search_backend
Returns:

query_type = 'nested'

django_elasticsearch_dsl_drf.filter_backends.search.query_backends.simple_query_string module

class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.simple_query_string.SimpleQueryStringQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Simple query string query backend.

Construct search.

In case of multi match, we always look in a group of fields. Thus, matching per field is no longer valid use case here. However, we might want to have multiple fields enabled for multi match per view set, and only search in some of them in specific request.

Example:

/search/books/?search_simple_query_string=
“fried eggs” %2B(eggplant | potato) -frittata
/search/books/?search_simple_query_string=
title,summary:”fried eggs” +(eggplant | potato) -frittata

Note, that multiple searches are not supported (would not raise an exception, but would simply take only the first):

/search/books/?search_simple_query_string=
title,summary:”fried eggs” +(eggplant | potato) -frittata &search_simple_query_string= author,publisher=”fried eggs” +(eggplant | potato) -frittata

In the view-set fields shall be defined in a very simple way. The only accepted argument would be boost (per field).

Example 1 (complex):

simple_query_string_search_fields = {
‘title’: {‘field’: ‘title.english’, ‘boost’: 4}, ‘summary’: {‘boost’: 2}, ‘description’: None,

}

Example 2 (simple list):

simple_query_string_search_fields = (
‘title’, ‘summary’, ‘description’,

)

Query examples:

http://localhost:8000/search
/books-simple-query-string-search-backend /?search_simple_query_string=%22Pool%20of%20Tears%22
http://localhost:8000/search
/books-simple-query-string-search-backend /?search_simple_query_string=%22Pool%20of%20Tears%22 -considering
Parameters:
  • request
  • view
  • search_backend
Returns:

classmethod get_field(field, options)[source]

Get field.

Parameters:
  • field
  • options
Returns:

classmethod get_query_options(request, view, search_backend)[source]
query_type = 'simple_query_string'

Module contents

Search query backends.

class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.BaseSearchQueryBackend[source]

Bases: object

Search query backend.

Construct search.

Parameters:
  • request
  • view
  • search_backend
Returns:

class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.MatchQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Match query backend.

Construct search.

Parameters:
  • request
  • view
  • search_backend
Returns:

query_type = 'match'
class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.MatchPhraseQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Match phrase query backend.

Construct search.

Parameters:
  • request
  • view
  • search_backend
Returns:

query_type = 'match_phrase'
class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.MatchPhrasePrefixQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Match phrase prefix query backend.

Construct search.

Parameters:
  • request
  • view
  • search_backend
Returns:

query_type = 'match_phrase_prefix'
class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.MultiMatchQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Multi match query backend.

Construct search.

In case of multi match, we always look in a group of fields. Thus, matching per field is no longer valid use case here. However, we might want to have multiple fields enabled for multi match per view set, and only search in some of them in specific request.

Example:

/search/books/?search_multi_match=lorem ipsum /search/books/?search_multi_match=title,summary:lorem ipsum

Note, that multiple searches are not supported (would not raise an exception, but would simply take only the first):

/search/books/?search_multi_match=title,summary:lorem ipsum
&search_multi_match=author,publisher=o’reily

In the view-set fields shall be defined in a very simple way. The only accepted argument would be boost (per field).

Example 1 (complex):

multi_match_search_fields = {
‘title’: {‘field’: ‘title.english’, ‘boost’: 4}, ‘summary’: {‘boost’: 2}, ‘description’: None,

}

Example 2 (simple list):

multi_match_search_fields = (
‘title’, ‘summary’, ‘description’,

)

Parameters:
  • request
  • view
  • search_backend
Returns:

classmethod get_field(field, options)[source]

Get field.

Parameters:
  • field
  • options
Returns:

classmethod get_query_options(request, view, search_backend)[source]
query_type = 'multi_match'
class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.NestedQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Nested query backend.

Construct search.

Dictionary key is the GET param name. The path option stands for the path in Elasticsearch.

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
  • view
  • search_backend
Returns:

query_type = 'nested'
class django_elasticsearch_dsl_drf.filter_backends.search.query_backends.SimpleQueryStringQueryBackend[source]

Bases: django_elasticsearch_dsl_drf.filter_backends.search.query_backends.base.BaseSearchQueryBackend

Simple query string query backend.

Construct search.

In case of multi match, we always look in a group of fields. Thus, matching per field is no longer valid use case here. However, we might want to have multiple fields enabled for multi match per view set, and only search in some of them in specific request.

Example:

/search/books/?search_simple_query_string=
“fried eggs” %2B(eggplant | potato) -frittata
/search/books/?search_simple_query_string=
title,summary:”fried eggs” +(eggplant | potato) -frittata

Note, that multiple searches are not supported (would not raise an exception, but would simply take only the first):

/search/books/?search_simple_query_string=
title,summary:”fried eggs” +(eggplant | potato) -frittata &search_simple_query_string= author,publisher=”fried eggs” +(eggplant | potato) -frittata

In the view-set fields shall be defined in a very simple way. The only accepted argument would be boost (per field).

Example 1 (complex):

simple_query_string_search_fields = {
‘title’: {‘field’: ‘title.english’, ‘boost’: 4}, ‘summary’: {‘boost’: 2}, ‘description’: None,

}

Example 2 (simple list):

simple_query_string_search_fields = (
‘title’, ‘summary’, ‘description’,

)

Query examples:

http://localhost:8000/search
/books-simple-query-string-search-backend /?search_simple_query_string=%22Pool%20of%20Tears%22
http://localhost:8000/search
/books-simple-query-string-search-backend /?search_simple_query_string=%22Pool%20of%20Tears%22 -considering
Parameters:
  • request
  • view
  • search_backend
Returns:

classmethod get_field(field, options)[source]

Get field.

Parameters:
  • field
  • options
Returns:

classmethod get_query_options(request, view, search_backend)[source]
query_type = 'simple_query_string'