Fixed issue 769:Collapse not preserved when chaining a search instance (#771)

* Fixed issue 769:Collapse not preserved when chaining a search instance

Signed-off-by: vatsal <vatsal.v.anand@gmail.com>

* Fixed issue 769:Collapse not preserved when chaining a search instance

Signed-off-by: vatsal <vatsal.v.anand@gmail.com>

* Fixed issue 769:Collapse not preserved when chaining a search instance

Signed-off-by: vatsal <vatsal.v.anand@gmail.com>

* Fixed issue 769:Collapse not preserved when chaining a search instance

Signed-off-by: vatsal <vatsal.v.anand@gmail.com>

* Fixed issue 769:Collapse not preserved when chaining a search instance

Signed-off-by: vatsal <vatsal.v.anand@gmail.com>

---------

Signed-off-by: vatsal <vatsal.v.anand@gmail.com>
This commit is contained in:
Vatsal
2024-07-09 09:39:19 -07:00
committed by GitHub
parent cef3cd5b1c
commit f0bce7cf33
3 changed files with 18 additions and 0 deletions
+1
View File
@@ -8,6 +8,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
### Deprecated
### Removed
### Fixed
- Fixed Search helper to ensure proper retention of the _collapse attribute in chained operations. ([#771](https://github.com/opensearch-project/opensearch-py/pull/771))
### Updated APIs
- Updated opensearch-py APIs to reflect [opensearch-api-specification@7452827](https://github.com/opensearch-project/opensearch-api-specification/commit/745282767026703ea27967d2705633c3e2661c97)
- Updated opensearch-py APIs to reflect [opensearch-api-specification@f2afd71](https://github.com/opensearch-project/opensearch-api-specification/commit/f2afd7171406c7477fbd644d74087bb0e2948c75)
+1
View File
@@ -431,6 +431,7 @@ class Search(Request):
s._highlight_opts = self._highlight_opts.copy()
s._suggest = self._suggest.copy()
s._script_fields = self._script_fields.copy()
s._collapse = self._collapse.copy()
for x in ("query", "post_filter"):
getattr(s, x)._proxied = getattr(self, x)._proxied
@@ -622,3 +622,19 @@ def test_rescore_query_to_dict() -> None:
},
},
}
def test_collapse_chaining() -> None:
s = search.Search(index="index_name")
s = s.filter("term", color="red")
s = s.collapse(field="category")
s = s.filter("term", brand="something")
assert {
"query": {
"bool": {
"filter": [{"term": {"color": "red"}}, {"term": {"brand": "something"}}]
}
},
"collapse": {"field": "category"},
} == s.to_dict()