From 473dcb62ccc11e375f0fb99c6cd9e96ae7e20428 Mon Sep 17 00:00:00 2001 From: Greg Reinbach Date: Tue, 23 Apr 2024 11:42:40 -0400 Subject: [PATCH] Allow params to be added to FacetedSearches (#1500) (cherry picked from commit 2e22e0a5d6d5a5ef72954100326589eccd3e1fe2) --- elasticsearch_dsl/faceted_search_base.py | 9 +++++++++ tests/_async/test_faceted_search.py | 7 +++++++ tests/_sync/test_faceted_search.py | 7 +++++++ 3 files changed, 23 insertions(+) diff --git a/elasticsearch_dsl/faceted_search_base.py b/elasticsearch_dsl/faceted_search_base.py index e14297202..669943ccb 100644 --- a/elasticsearch_dsl/faceted_search_base.py +++ b/elasticsearch_dsl/faceted_search_base.py @@ -425,6 +425,15 @@ def sort(self, search): search = search.sort(*self._sort) return search + def params(self, **kwargs): + """ + Specify query params to be used when executing the search. All the + keyword arguments will override the current values. See + https://elasticsearch-py.readthedocs.io/en/master/api.html#elasticsearch.Elasticsearch.search + for all available parameters. + """ + self._s = self._s.params(**kwargs) + def build_search(self): """ Construct the ``Search`` object. diff --git a/tests/_async/test_faceted_search.py b/tests/_async/test_faceted_search.py index 701cb99a7..0a2188877 100644 --- a/tests/_async/test_faceted_search.py +++ b/tests/_async/test_faceted_search.py @@ -192,3 +192,10 @@ def test_date_histogram_no_interval_keyerror(): with pytest.raises(KeyError) as e: dhf.get_value_filter(datetime.now()) assert str(e.value) == "'interval'" + + +def test_params_added_to_search(): + bs = BlogSearch("python search") + assert bs._s._params == {} + bs.params(routing="42") + assert bs._s._params == {"routing": "42"} diff --git a/tests/_sync/test_faceted_search.py b/tests/_sync/test_faceted_search.py index 6e4981319..079dd1469 100644 --- a/tests/_sync/test_faceted_search.py +++ b/tests/_sync/test_faceted_search.py @@ -192,3 +192,10 @@ def test_date_histogram_no_interval_keyerror(): with pytest.raises(KeyError) as e: dhf.get_value_filter(datetime.now()) assert str(e.value) == "'interval'" + + +def test_params_added_to_search(): + bs = BlogSearch("python search") + assert bs._s._params == {} + bs.params(routing="42") + assert bs._s._params == {"routing": "42"}