Skip to content
Back to skills

Client Operations

ASecurity

"Guide Elasticsearch Python client installation, synchronous and

  • 247 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 8, 2026
businesspythonsqlapisecurity

Works with

  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 4 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill client-operations --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Client Operations?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Client Operations
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-client-operations/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-client-operations)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: client-operations
description: "Guide Elasticsearch Python client installation, synchronous and
  asynchronous connections, authentication, TLS, transport configuration, API
  calls, and client lifecycle troubleshooting."
disable-model-invocation: true
metadata:
  disco-role: operating
license: Apache 2.0
---

# Client operations

Use this route when the task is about the official `elasticsearch` Python
client: installation, `Elasticsearch` or `AsyncElasticsearch`, connecting to a
cluster, authentication, TLS, generated API calls, transport behavior, or
async resource cleanup.

## Fast route

1. Install the base distribution (`python -m pip install elasticsearch`) on
   Python 3.10+. Add `[async]` for the `aiohttp` async transport, `[requests]`
   for the requests transport, `[orjson]` for the optional serializer, and
   `[pyarrow]` or `[vectorstore_mmr]` only for workflows that use them.
2. Choose the client from the execution model. Use `Elasticsearch` for normal
   synchronous code and `AsyncElasticsearch` inside an async event loop. Do not
   mix an async client with synchronous helper functions.
3. Choose a connection form: `cloud_id` for Elastic Cloud, an HTTPS URL plus
   `basic_auth`, `api_key`, or `bearer_auth` for a managed/self-managed service,
   and `ca_certs` or `ssl_assert_fingerprint` for TLS verification.
4. Validate with `client.info()` only when a reachable cluster and credentials
   exist. Package-only checks can instantiate a client and inspect transport
   configuration without making a request.
5. Route bulk/scan/reindex to [helpers-ingest](../helpers-ingest/SKILL.md),
   high-level `Search`/`Q`/`Document` work to [dsl-search](../dsl-search/SKILL.md),
   and ES|QL construction to [esql-query-builder](../esql-query-builder/SKILL.md).

Read [api-reference.md](references/api-reference.md) for verified constructor,
request, and option details; use [connection-recipes.md](references/connection-recipes.md)
for connection patterns; and read [troubleshooting.md](references/troubleshooting.md)
before changing TLS, retries, optional dependencies, or server compatibility.

## Minimal import check

```python
from elasticsearch import AsyncElasticsearch, Elasticsearch

client = Elasticsearch("http://localhost:9200", request_timeout=5)
print(type(client).__name__)
client.close()
```

The snippet does not prove that a cluster is reachable. Keep credentials in
environment variables or a secret manager, never in source or prompts. For
async code, close with `await client.close()` in a `finally` block or use the
client's async context-management support.

## Operating rules

- Use the client-generated API namespaces (`client.indices`, `client.cluster`,
  `client.security`, etc.) and keyword arguments matching the current client
  version; do not edit generated files under the package's client directories.
- Prefer explicit TLS verification. `verify_certs=False` is a diagnostic-only
  exception, not a production fix.
- Set request timeouts and retry behavior based on the operation. Transport
  retries are not a substitute for idempotency or application-level error
  handling; inspect `ApiError` subclasses and response metadata.
- Use `.options(...)` for per-request overrides such as auth, `ignore_status`,
  headers, or request options while retaining the base client configuration.
- Treat a successful import, a successful constructor, and a successful
  `client.info()` as three different checks: package, configuration, and live
  service respectively.

Files in this skill

  • SKILL.md3.4 KB
  • references/api-reference.md3 KB
  • references/connection-recipes.md2.5 KB
  • references/troubleshooting.md2.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.