{"id":168,"library":"elasticsearch","title":"Elasticsearch Python Client (7.x Series)","description":"The `elasticsearch` client for Python provides a low-level client for Elasticsearch, supporting multiple major versions of the Elasticsearch server. This entry specifically focuses on the `7.x` series of the client, which is designed to be compatible with Elasticsearch server versions 7.x. The latest release in the 7.x series is 7.17.13. Elastic maintains different major versions of the client to align with server compatibility, with ongoing maintenance for older major versions like 7.x.","status":"active","version":"7.17.13","language":"en","source_language":"en","source_url":"https://github.com/elastic/elasticsearch-py","tags":["elasticsearch","client","database","search","7.x","data_store"],"install":[{"cmd":"pip install 'elasticsearch<8'","lang":"bash","label":"Install latest 7.x client"},{"cmd":"pip install 'elasticsearch==7.17.13'","lang":"bash","label":"Install specific 7.x version"}],"dependencies":[],"imports":[{"note":"The PyPI package is 'elasticsearch', not 'elasticsearch7'. Pinning to <8 ensures the 7.x client.","wrong":"from elasticsearch7 import Elasticsearch","symbol":"Elasticsearch","correct":"from elasticsearch import Elasticsearch"},{"note":"Exceptions are directly available under the main 'elasticsearch' module in 7.x.","wrong":"from elasticsearch.exceptions import TransportError","symbol":"TransportError","correct":"from elasticsearch import TransportError"}],"quickstart":{"code":"import os\nfrom elasticsearch import Elasticsearch\n\n# Connect to a local Elasticsearch 7.x instance\n# Replace with your actual host, port, and auth details\nES_HOST = os.environ.get('ES_HOST', 'localhost')\nES_PORT = int(os.environ.get('ES_PORT', 9200))\nES_USER = os.environ.get('ES_USER', 'elastic')\nES_PASSWORD = os.environ.get('ES_PASSWORD', 'changeme')\n\n# For local, unsecured ES, verify_certs=False might be needed. \n# For production, ensure proper CA certs and security.\n# In 7.x, http_auth is common for basic authentication.\nes = Elasticsearch(\n    [\n        {'host': ES_HOST, 'port': ES_PORT}\n    ],\n    http_auth=(ES_USER, ES_PASSWORD), # Use http_auth for 7.x\n    verify_certs=False, \n    ssl_show_warn=False # Suppress SSL warnings if verify_certs=False\n)\n\n# Check connection\nprint(\"Connected to Elasticsearch:\", es.ping())\n\n# Index a document\ndoc = {\n    'author': 'John Doe',\n    'text': 'Elasticsearch is a search engine.',\n    'timestamp': '2023-01-01'\n}\nresponse = es.index(index='my-test-index-7', id=1, document=doc)\nprint(\"Document indexed:\", response['result'])\n\n# Get a document\nresponse = es.get(index='my-test-index-7', id=1)\nprint(\"Retrieved document:\", response['_source'])\n\n# Search for documents\nsearch_body = {\n    'query': {\n        'match': {\n            'text': 'search engine'\n        }\n    }\n}\nresponse = es.search(index='my-test-index-7', body=search_body)\nprint(f\"Found {response['hits']['total']['value']} hits:\")\nfor hit in response['hits']['hits']:\n    print(hit['_source'])","lang":"python","description":"This quickstart demonstrates how to connect to an Elasticsearch 7.x instance, check its status, index a simple document, retrieve it by ID, and perform a basic full-text search. It includes common connection parameters for local or secured instances."},"warnings":[{"fix":"When upgrading, consult the official `elasticsearch-py` migration guide for your specific version. Update `index` and `get` calls to remove `_doc` (e.g., `es.index(index='my_index', id=1, document=doc)`) and adjust client instantiation for authentication (e.g., use `basic_auth` instead of `http_auth`).","message":"Major version upgrade from 7.x to 8.x and above introduces significant breaking changes. The `_doc` type for indexing/getting documents is removed, and authentication parameters in the `Elasticsearch` client constructor (e.g., `http_auth` vs `basic_auth`) have changed.","severity":"breaking","affected_versions":"All versions migrating from 7.x to 8.x+"},{"fix":"For development/local setups, use `verify_certs=False` and `ssl_show_warn=False` (or ensure `http_compress=True` if using HTTP). For production with HTTPS, provide valid `ca_certs` or ensure your system's certificate store is correctly configured. Example: `Elasticsearch(..., verify_certs=True, ca_certs='/path/to/certs.pem')`","message":"By default, the client expects a secure (HTTPS) connection and will attempt SSL certificate verification. Connecting to local, unsecured, or self-signed HTTPS instances without proper configuration will lead to SSL errors.","severity":"gotcha","affected_versions":"All 7.x versions"},{"fix":"While still functional in 7.x, for forward compatibility, consider transitioning to manual `es.sniff()` or implementing `node_callbacks` as described in the 8.x documentation if you anticipate upgrading.","message":"The `sniff_on_start` and `sniff_on_connection_fail` parameters in the `Elasticsearch` client constructor are deprecated in favor of `node_callbacks` and explicit `sniff()` calls.","severity":"deprecated","affected_versions":"7.17 and later (deprecated in 8.x, but the 7.x client might issue warnings if you enable deprecated warnings)"}],"env_vars":null,"last_verified":"2026-05-12T09:13:14.824Z","next_check":"2026-07-15T00:00:00.000Z","problems":[{"fix":"Verify that Elasticsearch is running and accessible from where your Python script is executed. Check the configured `host` and `port` in your `Elasticsearch` client constructor. Ensure no firewall rules block access to the Elasticsearch port (default 9200).","cause":"The Python client could not establish a connection to the Elasticsearch server. This often means the server is not running, is running on a different host/port, or a firewall is blocking the connection.","error":"elasticsearch.exceptions.ConnectionError: ConnectionError(...) caused by MaxRetryError(... 'Failed to establish a new connection')"},{"fix":"For the 7.x client, use `http_auth=('username', 'password')` for basic authentication. The `basic_auth` keyword argument was introduced in the 8.x client.","cause":"You are using a client that is expected to be 7.x, but trying to use authentication arguments specific to the 8.x client (like `basic_auth`).","error":"TypeError: __init__() got an unexpected keyword argument 'basic_auth'"},{"fix":"Review your document's structure and data types against the existing Elasticsearch index mapping. Ensure fields contain values compatible with their defined types. If no mapping exists, Elasticsearch might infer one; check the inferred mapping. Use `es.indices.get_mapping(index='your_index')` to inspect.","cause":"The data you are trying to index does not conform to the mapping of the target index, or there's an issue with the data format itself.","error":"elasticsearch.exceptions.RequestError: RequestError(400, 'mapper_parsing_exception', 'failed to parse field')"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":0,"quickstart_tag":"stale","pypi_latest":null,"install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.33,"mem_mb":9.8,"disk_size":"22.6M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.34,"mem_mb":9.8,"disk_size":"22.6M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.7,"mem_mb":15.2,"disk_size":"33.5M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.23,"mem_mb":9.8,"disk_size":"23M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.24,"mem_mb":9.8,"disk_size":"23M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.45,"mem_mb":15.2,"disk_size":"34M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.45,"mem_mb":11.1,"disk_size":"24.9M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.46,"mem_mb":11.1,"disk_size":"24.9M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.61,"mem_mb":16.6,"disk_size":"37.5M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.43,"mem_mb":11.1,"disk_size":"25M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.43,"mem_mb":11.1,"disk_size":"25M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.24,"mem_mb":16.6,"disk_size":"38M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.61,"mem_mb":11.2,"disk_size":"16.6M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.65,"mem_mb":11.2,"disk_size":"16.6M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.6,"mem_mb":16.6,"disk_size":"29.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.62,"mem_mb":11.2,"disk_size":"17M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.62,"mem_mb":11.2,"disk_size":"17M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.63,"mem_mb":16.6,"disk_size":"29M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.6,"mem_mb":11.4,"disk_size":"16.3M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.61,"mem_mb":11.4,"disk_size":"16.3M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.54,"mem_mb":17.2,"disk_size":"28.4M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.58,"mem_mb":11.4,"disk_size":"17M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.59,"mem_mb":11.4,"disk_size":"17M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.61,"mem_mb":17.2,"disk_size":"29M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.26,"mem_mb":9.3,"disk_size":"22.1M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.26,"mem_mb":9.3,"disk_size":"22.1M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.55,"mem_mb":14.8,"disk_size":"30.5M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.23,"mem_mb":9.3,"disk_size":"23M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.23,"mem_mb":9.3,"disk_size":"23M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.48,"mem_mb":14.8,"disk_size":"31M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]},"quickstart_checks":{"last_tested":"2026-04-23","tag":"stale","tag_description":"widespread failures or data too old to trust","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]}}