Skip to content

Commit

Permalink
Fixed issue 769:Collapse not preserved when chaining a search instance (
Browse files Browse the repository at this point in the history
#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>
  • Loading branch information
imvtsl committed Jul 9, 2024
1 parent cef3cd5 commit f0bce7c
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions opensearchpy/helpers/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,7 @@ def _clone(self) -> Any:
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

Expand Down
16 changes: 16 additions & 0 deletions test_opensearchpy/test_helpers/test_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()

0 comments on commit f0bce7c

Please sign in to comment.