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¶
-
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ Construct search.
Parameters: - request –
- view –
- search_backend –
Returns:
-
query_type
= 'match'¶
-
classmethod
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ Construct search.
Parameters: - request –
- view –
- search_backend –
Returns:
-
query_type
= 'match_phrase'¶
-
classmethod
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ Construct search.
Parameters: - request –
- view –
- search_backend –
Returns:
-
query_type
= 'match_phrase_prefix'¶
-
classmethod
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ 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 ipsumNote, 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:
-
query_type
= 'multi_match'¶
-
classmethod
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ 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'¶
-
classmethod
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ 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:
-
query_type
= 'simple_query_string'¶
-
classmethod
Module contents¶
Search query backends.
-
class
django_elasticsearch_dsl_drf.filter_backends.search.query_backends.
BaseSearchQueryBackend
[source]¶ Bases:
object
Search query backend.
-
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ Construct search.
Parameters: - request –
- view –
- search_backend –
Returns:
-
query_type
= 'match'¶
-
classmethod
-
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ Construct search.
Parameters: - request –
- view –
- search_backend –
Returns:
-
query_type
= 'match_phrase'¶
-
classmethod
-
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ Construct search.
Parameters: - request –
- view –
- search_backend –
Returns:
-
query_type
= 'match_phrase_prefix'¶
-
classmethod
-
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ 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 ipsumNote, 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:
-
query_type
= 'multi_match'¶
-
classmethod
-
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ 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'¶
-
classmethod
-
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.
-
classmethod
construct_search
(request, view, search_backend)[source]¶ 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:
-
query_type
= 'simple_query_string'¶
-
classmethod