Fix empty admin search on Elasticsearch (backport to 5.2)

Backport of #11626 to 5.2; fixes #11600
pull/11748/head
Matt Westcott 2024-02-15 12:38:30 +00:00 zatwierdzone przez LB (Ben Johnston)
rodzic 5ad59c1a1a
commit 25da9fb81e
2 zmienionych plików z 34 dodań i 2 usunięć

Wyświetl plik

@ -653,8 +653,15 @@ class ElasticsearchAutocompleteQueryCompilerImpl:
if len(fields) == 0:
# No fields. Return a query that'll match nothing
return {"bool": {"mustNot": {"match_all": {}}}}
return self._compile_plaintext_query(self.query, fields)
elif isinstance(self.query, PlainText):
return self._compile_plaintext_query(self.query, fields)
elif isinstance(self.query, MatchAll):
return {"match_all": {}}
else:
raise NotImplementedError(
"`%s` is not supported for autocomplete queries."
% self.query.__class__.__name__
)
class Elasticsearch5AutocompleteQueryCompiler(

Wyświetl plik

@ -70,6 +70,31 @@ class TestElasticsearch5SearchQuery(TestCase):
}
self.assertDictEqual(query_compiler.get_query(), expected_result)
def test_match_all_autocomplete(self):
# Create a query
query = self.autocomplete_query_compiler_class(
models.Book.objects.all(), MATCH_ALL
)
# Check it
expected_result = {
"bool": {
"filter": {"match": {"content_type": "searchtests.Book"}},
"must": {"match_all": {}},
}
}
self.assertDictEqual(query.get_query(), expected_result)
def test_non_supported_queries_autocomplete(self):
# Create a query
query = self.autocomplete_query_compiler_class(
models.Book.objects.all(), Fuzzy("Hello")
)
# Check it
with self.assertRaises(NotImplementedError):
query.get_query()
def test_match_all(self):
# Create a query
query_compiler = self.query_compiler_class(models.Book.objects.all(), MATCH_ALL)