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'¶
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'¶
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'¶
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 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
- 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.
- 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'¶
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'¶
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.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'¶
- 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'¶
- 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'¶
- 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 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
- 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.
- 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'¶
- 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'¶