Skip to content

Commit f0c5045

Browse files
Fix importing collapse from dict (elastic#1689)
1 parent d66bd2f commit f0c5045

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

elasticsearch_dsl/search.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ def __init__(self, using="default", index=None, doc_type=None, extra=None):
120120

121121
self._doc_type = []
122122
self._doc_type_map = {}
123-
self._collapse = {}
124123
if isinstance(doc_type, (tuple, list)):
125124
self._doc_type.extend(doc_type)
126125
elif isinstance(doc_type, collections.abc.Mapping):
@@ -294,7 +293,6 @@ def _clone(self):
294293
s = self.__class__(
295294
using=self._using, index=self._index, doc_type=self._doc_type
296295
)
297-
s._collapse = self._collapse.copy()
298296
s._doc_type_map = self._doc_type_map.copy()
299297
s._extra = self._extra.copy()
300298
s._params = self._params.copy()
@@ -408,6 +406,7 @@ def _clone(self):
408406
s = super()._clone()
409407

410408
s._response_class = self._response_class
409+
s._collapse = self._collapse.copy()
411410
s._sort = self._sort[:]
412411
s._source = copy.copy(self._source) if self._source is not None else None
413412
s._highlight = self._highlight.copy()
@@ -446,6 +445,8 @@ def update_from_dict(self, d):
446445
self.aggs._params = {
447446
"aggs": {name: A(value) for (name, value) in aggs.items()}
448447
}
448+
if "collapse" in d:
449+
self._collapse = d.pop("collapse")
449450
if "sort" in d:
450451
self._sort = d.pop("sort")
451452
if "_source" in d:

tests/test_search.py

+2
Original file line numberDiff line numberDiff line change
@@ -544,10 +544,12 @@ def test_update_from_dict():
544544
s = search.Search()
545545
s.update_from_dict({"indices_boost": [{"important-documents": 2}]})
546546
s.update_from_dict({"_source": ["id", "name"]})
547+
s.update_from_dict({"collapse": {"field": "user_id"}})
547548

548549
assert {
549550
"indices_boost": [{"important-documents": 2}],
550551
"_source": ["id", "name"],
552+
"collapse": {"field": "user_id"},
551553
} == s.to_dict()
552554

553555

0 commit comments

Comments
 (0)