# What changed in opensearch-py

> 13 changes in opensearch-py 2 to 3 from its official release notes, upgrade guides and advisories: 3 breaking, 4 new APIs and options. Each one cited. Sources checked 2026-11-02. HTML: https://unstale.sh/pypi/opensearch-py/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## opensearch-py 3

### Breaking changes

- Repurposes the Elasticsearch dense_vector field for knn_vector. (3.1.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v3.1.0)
- Raises the minimum supported Python version from 3.8 to 3.10. (3.1.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v3.1.0)

### New APIs and options

- Adds explicit proxy support to RequestsHttpConnection. (3.1.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v3.1.0)
- Adds a transport-grpc client library. (3.1.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v3.1.0)
- Custom headers are now available to the async AWS signer. (3.0.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v3.0.0)
- Search now supports the search_after parameter. (3.0.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v3.0.0)

### Fixes and other changes

- The signer now passes headers to AWSRequest when signing. (3.2.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v3.2.0)
- The client was updated to reflect the latest OpenSearch API spec, changing the API surface available to developers. (3.2.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v3.2.0)
- The signer now includes X-Amz-Content-SHA256 in SignedHeaders. (3.2.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v3.2.0)
- Fixes the async request signer. (3.1.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v3.1.0)
- Fixed double-writes. (3.0.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v3.0.0)

## opensearch-py 2

### Breaking changes

- Type mappings are removed for OpenSearch 2.0. (2.0.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v2.0.0)

### Behavior and default changes

- requests is moved to install_requires, so it is installed as a required dependency when installing opensearch-py. (2.0.0) — [release notes](https://github.com/opensearch-project/opensearch-py/releases/tag/v2.0.0)
