NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #496 most downloaded on PyPI
Python client for OpenSearch
Last release 5 months ago
27 Apr 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 21 of 21 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
21 releases · first in 2021
One column per quarter.
Bump actions/checkout from 5 to 6 by @dependabot [bot] in #986
Full Changelog: v3.1.0...v3.2.0
AWSV4Signer.sign() not passing custom headers to AWSRequest, causing x-amz-* headers to be excluded from SigV4 signature (#1034)AWSV4Signer.sign() not setting X-Amz-Content-SHA256 before SigV4Auth.add_auth(), causing the header to be absent from SignedHeaders in the Authorization header. The fix uses a guarded assignment that preserves caller-provided values (e.g., UNSIGNED-PAYLOAD, precomputed hashes) (#1038, #1039)linkchecker CI step (#987)pytest-asyncio from <=1.2.0 to <=1.3.0 (#984)actions/checkout from 5 to 6 (#986)codecov/codecov-action from 4 to 5 (#985)actions/upload-artifact from 5 to 6 (#989)actions/download-artifact from 6 to 7 (#988)peter-evans/create-pull-request from 7 to 8 (#990)opensearch-protobufs from 0.19.0 to 1.2.0 (#1000)Updated opensearch-py to reflect the latest OpenSearch API spec by @opensearch-trigger-bot[bot] in #911
Full Changelog: v3.0.0...v3.1.0
DenseVector field type to KnnVector (925)aiohttp from >=3.9.4,<4 to >=3.10.11,<4 (#920)aiohttp from >=3.10.11 to >=3.12.14 (#966)pytest-asyncio from <=0.25.1 to <=1.2.0 (#936, #950)lycheeverse/lychee-action from 1.9.3 to 2.7.0 (#946, #980)actions/download-artifact from 4 to 6 (#957, #968)actions/cache from 3 to 4 (#958)peter-evans/create-pull-request from 6 to 7 (#959)actions/setup-python from 5 to 6 (#961)dangoslen/dependabot-changelog-helper from 3 to 4 (#960)stefanzweifel/git-auto-commit-action from 5 to 7 (#962)actions/checkout from 4 to 5 (#967)VachaShah/backport from 1.1.4 to 2.2.0 (#969)actions/github-script from 7 to 8 (#973)actions/upload-artifact from 4 to 5 (#972)actions/setup-java from 4 to 5 (#974)Preparing for next developer iteration, 2.8.1. by @dblock in #861
search_after parameter) by @nathaliellenaa in #859Full Changelog: v2.8.0...v3.0.0
search_after parameter (859)pytest-asyncio from <=0.24.0 to <=0.25.1 (#881)Preparing for next developer iteration, 2.7.2. by @dblock in #807
ssl_assert_hostname by @merlinz01 in #843/cluster/stats in a backwards compatible way by @dblock in #851Full Changelog: v2.7.1...v2.8.0
AsyncSearch#collapse (827)pool_maxsize to AsyncOpenSearch (845)ssl_assert_hostname to AsyncOpenSearch (843)Transport.perform_request's arguments timeout and ignore variable usage (810)Index.save not passing through aliases to the underlying index (823)AuthorizationException with AWS OpenSearch when the doc ID contains : (848)Preparing for next developer iteration, 2.7.1. by @dblock in #802
Removed deprecated numpy.float_ and update NumPy/Pandas imports by @saimedhi in #762
Full Changelog: v2.6.0...v2.7.0
multi_terms bucket aggregation (#797)numpy.float_ and update NumPy/Pandas imports (#762)minimum_should_match with Bool to allow the use of string-based value (percent string, combination). (#780)retry_on_conflict type (#795)Preparing for next developer iteration, 2.4.3. by @dblock in #606
Full Changelog: v2.4.2...v2.6.0
search_pipeline APIs and notifications plugin APIs (#724)Transforms APIs (#749)Index rollups APIs (#742)Preparing for next developer iteration, 2.4.3. by @dblock in #606
Full Changelog: v2.4.2...v2.5.0
assignment-from-no-return and unused-variable (#658)unnecessary-dunder-calls (#655)unspecified-encoding and missing-function-docstring and ignored opensearchpy for lints (#643)line-too-long and invalid-name (#590)pointless-statement (#611)admin password (#631)get_policy API in the index_management plugin to allow the policy_id argument as optional (#633)point_in_time.md guide with examples demonstrating the usage of the new APIs as alternatives to the deprecated ones. (#661)OpenSearch using Urllib3HttpConnection and AsyncOpenSearch after calling close (#639)pytest-asyncio from <=0.21.1 to <=0.23.5urllib3 from >=1.26.18 to >=1.26.18, <2 (#632)Preparing for next development iteration, 2.4.2. by @dblock in #597
Full Changelog: v2.4.1...v2.4.2
What's Changed Fix for 592 by @dblock in #594 Full Changelog : v2.4.0...v2.4.1
Removed EOL Python3.5 & bumped urllib3 ver to patch security vulnerability. by @Djcarrillo6 in https://github.com/opensearch-project/opensearch-py/pul…
Note: This release has introduced #592, please use v2.4.1 or newer.
collapse method to opensearchpy.helpers.search.Search by @qcoumes in https://github.com/opensearch-project/opensearch-py/pull/409trust_env to aiohttp.ClientSession by @michaeloliverx in https://github.com/opensearch-project/opensearch-py/pull/438urllib3 from >=1.21.1, <2 to >=1.21.1 by @saimedhi in https://github.com/opensearch-project/opensearch-py/pull/466tasks client APIs into the existing module by @saimedhi in https://github.com/opensearch-project/opensearch-py/pull/508cat client from API specs by @saimedhi in https://github.com/opensearch-project/opensearch-py/pull/529.pyi type stubs inline by @dblock in https://github.com/opensearch-project/opensearch-py/pull/563nox -rs docs to generate docs, fixed errors. by @dblock in https://github.com/opensearch-project/opensearch-py/pull/568urllib3 from >=1.26.17 to >=1.26.18 by @Djcarrillo6 in https://github.com/opensearch-project/opensearch-py/pull/576Full Changelog: https://github.com/opensearch-project/opensearch-py/compare/v2.2.0...v2.4.0
pool_maxsize for Urllib3HttpConnection (#535)remote store client APIs (#552)nox -rs generate (#554)samples, benchmarks and docs to nox -rs format (#556)client.http JSON REST request API helpers (#544)tasks client from API specs (#508)ingest client from API specs (#513)dangling_indices client from API specs (#511)cluster client from API specs (#530)nodes client from API specs (#514)cat client from API specs (#529).pyi type stubs inline (#563)enable_cleanup_closed=True in aiohttp.TCPConnector to prevent TLS connection leaks (#468)nox -rs docs to generate docs (#568)sphinx from <7.1 to <7.3coverage from <7.0.0 to <8.0.0Bump version to 2.3.2 (#524) Backporting to 2.3 by @saimedhi in https://github.com/opensearch-project/opensearch-py/pull/525
Full Changelog: https://github.com/opensearch-project/opensearch-py/compare/v2.3.1...v2.3.2
Adding missing comma to jenkins workflow by @saimedhi in https://github.com/opensearch-project/opensearch-py/pull/460
Full Changelog: https://github.com/opensearch-project/opensearch-py/compare/v2.3.0...v2.3.1
urllib3 from >= 1.26.9 to >= 1.26.17 #533Fix async helpers import cycle by @aiudirog in https://github.com/opensearch-project/opensearch-py/pull/311
collapse method to opensearchpy.helpers.search.Search by @qcoumes in https://github.com/opensearch-project/opensearch-py/pull/409trust_env to aiohttp.ClientSession by @michaeloliverx in https://github.com/opensearch-project/opensearch-py/pull/438Full Changelog: https://github.com/opensearch-project/opensearch-py/compare/v2.2.0...v2.3.0
allow_redirects to RequestsHttpConnection#perform_request (#401)rest-api-spec YAML tests (#414)Search#collapse (#409)trust_env to AIOHttpConnection (#398).ci/run-tests (#454)make docs with sphinx(#433)TransportError in async connections (#226)pytest-asyncio to 0.21.0 (#339)sphinx from <1.7 to <7.1pytest-asyncio from <=0.21.0 to <=0.21.1Added untriaged issue workflow. by @dblock in https://github.com/opensearch-project/opensearch-py/pull/290
Full Changelog: https://github.com/opensearch-project/opensearch-py/compare/v2.1.1...v2.2.0
Fixed Sigv4 Signing for Managed Service and Async OpenSearch by @nhtruong in https://github.com/opensearch-project/opensearch-py/pull/279
Full Changelog: https://github.com/opensearch-project/opensearch-py/compare/v2.1.0...v2.1.1
Fix DeprecationWarning raised by urllib3 1.26.13 by @Tenzer in https://github.com/opensearch-project/opensearch-py/pull/246
Full Changelog: https://github.com/opensearch-project/opensearch-py/compare/v2.0.1...v2.1.0
Add sphinx link by @PhilipMay in https://github.com/opensearch-project/opensearch-py/pull/169
master to cluster_manager to be inclusive by @harshavamsi in https://github.com/opensearch-project/opensearch-py/pull/243Full Changelog: https://github.com/opensearch-project/opensearch-py/compare/v2.0.0...v2.0.1
pool_maxsize for RequestsHttpConnection (#216)helpers-actions.pyi-bulk (#239)AIOHttpConnection and AsyncTransport (#276)master to cluster_manager to be inclusive (#242)timeout (#387)async_scan (520)Compatible with OpenSearch 2.0 PyPi Installation : https://pypi.org/project/opensearch-py/2.0.0
Compatible with OpenSearch 2.0 PyPi Installation : https://pypi.org/project/opensearch-py/2.0.0
Full Changelog: https://github.com/opensearch-project/opensearch-py/commits/v2.0.0
Compatible with OpenSearch 1.3.0 PyPi Installation : https://pypi.org/project/opensearch-py/1.1.0
Compatible with OpenSearch 1.3.0 PyPi Installation : https://pypi.org/project/opensearch-py/1.1.0
Compatible with OpenSearch 1.0.0 PyPi Installation : https://pypi.org/project/opensearch-py/1.0.0
Compatible with OpenSearch 1.0.0 PyPi Installation : https://pypi.org/project/opensearch-py/1.0.0
Your coding agent can read these notes before it upgrades. Set up the MCP server →