From e76bf7eefef78905ff134e3c738f7ad49efb8e78 Mon Sep 17 00:00:00 2001 From: Colleen McGinnis Date: Tue, 25 Feb 2025 18:51:00 -0600 Subject: [PATCH 1/5] delete asciidoc files --- docs/guide/async.asciidoc | 141 ---- docs/guide/configuration.asciidoc | 451 ----------- docs/guide/connecting.asciidoc | 438 ---------- docs/guide/dsl/asyncio.asciidoc | 103 --- docs/guide/dsl/configuration.asciidoc | 125 --- docs/guide/dsl/examples.asciidoc | 5 - docs/guide/dsl/faceted_search.asciidoc | 145 ---- docs/guide/dsl/howto.asciidoc | 7 - docs/guide/dsl/persistence.asciidoc | 761 ------------------ docs/guide/dsl/search_dsl.asciidoc | 704 ---------------- docs/guide/dsl/tutorials.asciidoc | 251 ------ docs/guide/dsl/update_by_query.asciidoc | 168 ---- docs/guide/elasticsearch-dsl.asciidoc | 48 -- docs/guide/esql-pandas.asciidoc | 453 ----------- docs/guide/examples.asciidoc | 287 ------- docs/guide/getting-started.asciidoc | 201 ----- docs/guide/helpers.asciidoc | 90 --- docs/guide/images/create-api-key.png | Bin 80572 -> 0 bytes docs/guide/images/es-endpoint.jpg | Bin 369643 -> 0 bytes docs/guide/images/otel-waterfall-retry.png | Bin 50707 -> 0 bytes .../guide/images/otel-waterfall-with-http.png | Bin 44194 -> 0 bytes .../images/otel-waterfall-without-http.png | Bin 35709 -> 0 bytes docs/guide/index.asciidoc | 31 - docs/guide/installation.asciidoc | 25 - docs/guide/integrations.asciidoc | 75 -- docs/guide/migration.asciidoc | 377 --------- docs/guide/open-telemetry.asciidoc | 75 -- docs/guide/overview.asciidoc | 89 -- docs/guide/release-notes.asciidoc | 714 ---------------- docs/logo-elastic-glyph-color.svg | 16 - 30 files changed, 5780 deletions(-) delete mode 100644 docs/guide/async.asciidoc delete mode 100644 docs/guide/configuration.asciidoc delete mode 100644 docs/guide/connecting.asciidoc delete mode 100644 docs/guide/dsl/asyncio.asciidoc delete mode 100644 docs/guide/dsl/configuration.asciidoc delete mode 100644 docs/guide/dsl/examples.asciidoc delete mode 100644 docs/guide/dsl/faceted_search.asciidoc delete mode 100644 docs/guide/dsl/howto.asciidoc delete mode 100644 docs/guide/dsl/persistence.asciidoc delete mode 100644 docs/guide/dsl/search_dsl.asciidoc delete mode 100644 docs/guide/dsl/tutorials.asciidoc delete mode 100644 docs/guide/dsl/update_by_query.asciidoc delete mode 100644 docs/guide/elasticsearch-dsl.asciidoc delete mode 100644 docs/guide/esql-pandas.asciidoc delete mode 100644 docs/guide/examples.asciidoc delete mode 100644 docs/guide/getting-started.asciidoc delete mode 100644 docs/guide/helpers.asciidoc delete mode 100644 docs/guide/images/create-api-key.png delete mode 100644 docs/guide/images/es-endpoint.jpg delete mode 100644 docs/guide/images/otel-waterfall-retry.png delete mode 100644 docs/guide/images/otel-waterfall-with-http.png delete mode 100644 docs/guide/images/otel-waterfall-without-http.png delete mode 100644 docs/guide/index.asciidoc delete mode 100644 docs/guide/installation.asciidoc delete mode 100644 docs/guide/integrations.asciidoc delete mode 100644 docs/guide/migration.asciidoc delete mode 100644 docs/guide/open-telemetry.asciidoc delete mode 100644 docs/guide/overview.asciidoc delete mode 100644 docs/guide/release-notes.asciidoc delete mode 100644 docs/logo-elastic-glyph-color.svg diff --git a/docs/guide/async.asciidoc b/docs/guide/async.asciidoc deleted file mode 100644 index 9f3c04acd..000000000 --- a/docs/guide/async.asciidoc +++ /dev/null @@ -1,141 +0,0 @@ -[[async]] -== Using with asyncio - -The `elasticsearch` package supports async/await with -https://docs.python.org/3/library/asyncio.html[asyncio] and -https://docs.aiohttp.org[aiohttp]. You can either install `aiohttp` -directly or use the `[async]` extra: - -[source,bash] ----- -$ python -m pip install elasticsearch aiohttp - -# - OR - - -$ python -m pip install elasticsearch[async] ----- - -[discrete] -=== Getting Started with Async - -After installation all async API endpoints are available via -`~elasticsearch.AsyncElasticsearch` and are used in the same way as -other APIs, with an extra `await`: - -[source,python] ----- -import asyncio -from elasticsearch import AsyncElasticsearch - -client = AsyncElasticsearch() - -async def main(): - resp = await client.search( - index="documents", - body={"query": {"match_all": {}}}, - size=20, - ) - print(resp) - -loop = asyncio.get_event_loop() -loop.run_until_complete(main()) ----- - -All APIs that are available under the sync client are also available -under the async client. - -https://elasticsearch-py.readthedocs.io/en/latest/async.html#api-reference[Reference documentation] - -[discrete] -=== ASGI Applications and Elastic APM - -https://asgi.readthedocs.io[ASGI] (Asynchronous Server Gateway -Interface) is a way to serve Python web applications making use of -async I/O to achieve better performance. Some examples of ASGI -frameworks include FastAPI, Django 3.0+, and Starlette. If you're -using one of these frameworks along with Elasticsearch then you should -be using `~elasticsearch.AsyncElasticsearch` to avoid blocking the event -loop with synchronous network calls for optimal performance. - -https://www.elastic.co/guide/en/apm/agent/python/current/index.html[Elastic -APM] also supports tracing of async Elasticsearch queries just the same -as synchronous queries. For an example on how to configure -`AsyncElasticsearch` with a popular ASGI framework -https://fastapi.tiangolo.com/[FastAPI] and APM tracing there is a -https://github.com/elastic/elasticsearch-py/tree/master/examples/fastapi-apm[pre-built -example] in the `examples/fastapi-apm` directory. - -See also the <> page. - -[discrete] -=== Frequently Asked Questions - -[discrete] -==== ValueError when initializing `AsyncElasticsearch`? - -If when trying to use `AsyncElasticsearch` you receive -`ValueError: You must have 'aiohttp' installed to use AiohttpHttpNode` -you should ensure that you have `aiohttp` installed in your environment -(check with `$ python -m pip freeze | grep aiohttp`). Otherwise, -async support won't be available. - -[discrete] -==== What about the `elasticsearch-async` package? - -Previously asyncio was supported separately via the -https://github.com/elastic/elasticsearch-py-async[elasticsearch-async] -package. The `elasticsearch-async` package has been deprecated in favor -of `AsyncElasticsearch` provided by the `elasticsearch` package in v7.8 -and onwards. - -[discrete] -==== Receiving 'Unclosed client session / connector' warning? - -This warning is created by `aiohttp` when an open HTTP connection is -garbage collected. You'll typically run into this when closing your -application. To resolve the issue ensure that -`~elasticsearch.AsyncElasticsearch.close` is called before the -`~elasticsearch.AsyncElasticsearch` instance is garbage collected. - -For example if using FastAPI that might look like this: - -[source,python] ----- -import os -from contextlib import asynccontextmanager - -from fastapi import FastAPI -from elasticsearch import AsyncElasticsearch - -ELASTICSEARCH_URL = os.environ["ELASTICSEARCH_URL"] -client = None - -@asynccontextmanager -async def lifespan(app: FastAPI): - global client - client = AsyncElasticsearch(ELASTICSEARCH_URL) - yield - await client.close() - -app = FastAPI(lifespan=lifespan) - -@app.get("/") -async def main(): - return await client.info() ----- - -You can run this example by saving it to `main.py` and executing -`ELASTICSEARCH_URL=http://localhost:9200 uvicorn main:app`. - -[discrete] -=== Async Helpers - -Async variants of all helpers are available in `elasticsearch.helpers` -and are all prefixed with `async_*`. You'll notice that these APIs -are identical to the ones in the sync <> documentation. - -All async helpers that accept an iterator or generator also accept async -iterators and async generators. - -https://elasticsearch-py.readthedocs.io/en/latest/async.html#async-helpers[Reference documentation] - diff --git a/docs/guide/configuration.asciidoc b/docs/guide/configuration.asciidoc deleted file mode 100644 index 15c3f413c..000000000 --- a/docs/guide/configuration.asciidoc +++ /dev/null @@ -1,451 +0,0 @@ -[[config]] -== Configuration - -This page contains information about the most important configuration options of -the Python {es} client. - - -[discrete] -[[tls-and-ssl]] -=== TLS/SSL - -The options in this section can only be used when the node is configured for HTTPS. An error will be raised if using these options with an HTTP node. - -[discrete] -==== Verifying server certificates - -The typical route to verify a cluster certificate is via a "CA bundle" which can be specified via the `ca_certs` parameter. If no options are given and the https://github.com/certifi/python-certifi[certifi package] is installed then certifi's CA bundle is used by default. - -If you have your own CA bundle to use you can configure via the `ca_certs` parameter: - -[source,python] ------------------------------------- -client = Elasticsearch( - "https://...", - ca_certs="/path/to/certs.pem" -) ------------------------------------- - -If using a generated certificate or certificate with a known fingerprint you can use the `ssl_assert_fingerprint` to specify the fingerprint which tries to match the server's leaf certificate during the TLS handshake. If there is any matching certificate the connection is verified, otherwise a `TlsError` is raised. - -In Python 3.9 and earlier only the leaf certificate will be verified but in Python 3.10+ private APIs are used to verify any certificate in the certificate chain. This helps when using certificates that are generated on a multi-node cluster. - -[source,python] ------------------------------------- -client = Elasticsearch( - "https://...", - ssl_assert_fingerprint=( - "315f5bdb76d078c43b8ac0064e4a0164612b1fce77c869345bfc94c75894edd3" - ) -) ------------------------------------- - -To disable certificate verification use the `verify_certs=False` parameter. This option should be avoided in production, instead use the other options to verify the clusters' certificate. - -[source,python] ------------------------------------- -client = Elasticsearch( - "https://...", - verify_certs=False -) ------------------------------------- - -[discrete] -==== TLS versions - -Configuring the minimum TLS version to connect to is done via the `ssl_version` parameter. By default this is set to a minimum value of TLSv1.2. Use the `ssl.TLSVersion` enumeration to specify versions. - -[source,python] ------------------------------------- -import ssl - -client = Elasticsearch( - ..., - ssl_version=ssl.TLSVersion.TLSv1_2 -) ------------------------------------- - -[discrete] -==== Client TLS certificate authentication - -Elasticsearch can be configured to authenticate clients via TLS client certificates. Client certificate and keys can be configured via the `client_cert` and `client_key` parameters: - -[source,python] ------------------------------------- -client = Elasticsearch( - ..., - client_cert="/path/to/cert.pem", - client_key="/path/to/key.pem", -) ------------------------------------- - - -[discrete] -==== Using an SSLContext - -For advanced users an `ssl.SSLContext` object can be used for configuring TLS via the `ssl_context` parameter. The `ssl_context` parameter can't be combined with any other TLS options except for the `ssl_assert_fingerprint` parameter. - -[source,python] ------------------------------------- -import ssl - -# Create and configure an SSLContext -ctx = ssl.create_default_context() -ctx.load_verify_locations(...) - -client = Elasticsearch( - ..., - ssl_context=ctx -) ------------------------------------- - - -[discrete] -[[compression]] -=== HTTP compression - -Compression of HTTP request and response bodies can be enabled with the `http_compress` parameter. -If enabled then HTTP request bodies will be compressed with `gzip` and HTTP responses will include -the `Accept-Encoding: gzip` HTTP header. By default compression is disabled. - -[source,python] ------------------------------------- -client = Elasticsearch( - ..., - http_compress=True # Enable compression! -) ------------------------------------- - -HTTP compression is recommended to be enabled when requests are traversing the network. -Compression is automatically enabled when connecting to Elastic Cloud. - - -[discrete] -[[timeouts]] -=== Request timeouts - -Requests can be configured to timeout if taking too long to be serviced. The `request_timeout` parameter can be passed via the client constructor or the client `.options()` method. When the request times out the node will raise a `ConnectionTimeout` exception which can trigger retries. - -Setting `request_timeout` to `None` will disable timeouts. - -[source,python] ------------------------------------- -client = Elasticsearch( - ..., - request_timeout=10 # 10 second timeout -) - -# Search request will timeout in 5 seconds -client.options(request_timeout=5).search(...) ------------------------------------- - -[discrete] -==== API and server timeouts - -There are API-level timeouts to take into consideration when making requests which can cause the request to timeout on server-side rather than client-side. You may need to configure both a transport and API level timeout for long running operations. - -In the example below there are three different configurable timeouts for the `cluster.health` API all with different meanings for the request: - -[source,python] ------------------------------------- -client.options( - # Amount of time to wait for an HTTP response to start. - request_timeout=30 -).cluster.health( - # Amount of time to wait to collect info on all nodes. - timeout=30, - # Amount of time to wait for info from the master node. - master_timeout=10, -) ------------------------------------- - - -[discrete] -[[retries]] -=== Retries - -Requests can be retried if they don't return with a successful response. This provides a way for requests to be resilient against transient failures or overloaded nodes. - -The maximum number of retries per request can be configured via the `max_retries` parameter. Setting this parameter to 0 disables retries. This parameter can be set in the client constructor or per-request via the client `.options()` method: - -[source,python] ------------------------------------- -client = Elasticsearch( - ..., - max_retries=5 -) - -# For this API request we disable retries with 'max_retries=0' -client.options(max_retries=0).index( - index="blogs", - document={ - "title": "..." - } -) ------------------------------------- - -[discrete] -==== Retrying on connection errors and timeouts - -Connection errors are automatically retried if retries are enabled. Retrying requests on connection timeouts can be enabled or disabled via the `retry_on_timeout` parameter. This parameter can be set on the client constructor or via the client `.options()` method: - -[source,python] ------------------------------------- -client = Elasticsearch( - ..., - retry_on_timeout=True -) -client.options(retry_on_timeout=False).info() ------------------------------------- - -[discrete] -==== Retrying status codes - -By default if retries are enabled `retry_on_status` is set to `(429, 502, 503, 504)`. This parameter can be set on the client constructor or via the client `.options()` method. Setting this value to `()` will disable the default behavior. - -[source,python] ------------------------------------- -client = Elasticsearch( - ..., - retry_on_status=() -) - -# Retry this API on '500 Internal Error' statuses -client.options(retry_on_status=[500]).index( - index="blogs", - document={ - "title": "..." - } -) ------------------------------------- - -[discrete] -==== Ignoring status codes - -By default an `ApiError` exception will be raised for any non-2XX HTTP requests that exhaust retries, if any. If you're expecting an HTTP error from the API but aren't interested in raising an exception you can use the `ignore_status` parameter via the client `.options()` method. - -A good example where this is useful is setting up or cleaning up resources in a cluster in a robust way: - -[source,python] ------------------------------------- -client = Elasticsearch(...) - -# API request is robust against the index not existing: -resp = client.options(ignore_status=404).indices.delete(index="delete-this") -resp.meta.status # Can be either '2XX' or '404' - -# API request is robust against the index already existing: -resp = client.options(ignore_status=[400]).indices.create( - index="create-this", - mapping={ - "properties": {"field": {"type": "integer"}} - } -) -resp.meta.status # Can be either '2XX' or '400' ------------------------------------- - -When using the `ignore_status` parameter the error response will be returned serialized just like a non-error response. In these cases it can be useful to inspect the HTTP status of the response. To do this you can inspect the `resp.meta.status`. - -[discrete] -[[sniffing]] -=== Sniffing for new nodes - -Additional nodes can be discovered by a process called "sniffing" where the client will query the cluster for more nodes that can handle requests. - -Sniffing can happen at three different times: on client instantiation, before requests, and on a node failure. These three behaviors can be enabled and disabled with the `sniff_on_start`, `sniff_before_requests`, and `sniff_on_node_failure` parameters. - -IMPORTANT: When using an HTTP load balancer or proxy you cannot use sniffing functionality as the cluster would supply the client with IP addresses to directly connect to the cluster, circumventing the load balancer. Depending on your configuration this might be something you don't want or break completely. - -[discrete] -==== Waiting between sniffing attempts - -To avoid needlessly sniffing too often there is a delay between attempts to discover new nodes. This value can be controlled via the `min_delay_between_sniffing` parameter. - -[discrete] -==== Filtering nodes which are sniffed - -By default nodes which are marked with only a `master` role will not be used. To change the behavior the parameter `sniffed_node_callback` can be used. To mark a sniffed node not to be added to the node pool -return `None` from the `sniffed_node_callback`, otherwise return a `NodeConfig` instance. - -[source,python] ------------------------------------- -from typing import Optional, Dict, Any -from elastic_transport import NodeConfig -from elasticsearch import Elasticsearch - -def filter_master_eligible_nodes( - node_info: Dict[str, Any], - node_config: NodeConfig -) -> Optional[NodeConfig]: - # This callback ignores all nodes that are master eligible - # instead of master-only nodes (default behavior) - if "master" in node_info.get("roles", ()): - return None - return node_config - -client = Elasticsearch( - "https://localhost:9200", - sniffed_node_callback=filter_master_eligible_nodes -) ------------------------------------- - -The `node_info` parameter is part of the response from the `nodes.info()` API, below is an example -of what that object looks like: - -[source,json] ------------------------------------- -{ - "name": "SRZpKFZ", - "transport_address": "127.0.0.1:9300", - "host": "127.0.0.1", - "ip": "127.0.0.1", - "version": "5.0.0", - "build_hash": "253032b", - "roles": ["master", "data", "ingest"], - "http": { - "bound_address": ["[fe80::1]:9200", "[::1]:9200", "127.0.0.1:9200"], - "publish_address": "1.1.1.1:123", - "max_content_length_in_bytes": 104857600 - } -} ------------------------------------- - - -[discrete] -[[node-pool]] -=== Node Pool - -[discrete] -==== Selecting a node from the pool - -You can specify a node selector pattern via the `node_selector_class` parameter. The supported values are `round_robin` and `random`. Default is `round_robin`. - -[source,python] ------------------------------------- -client = Elasticsearch( - ..., - node_selector_class="round_robin" -) ------------------------------------- - -Custom selectors are also supported: - -[source,python] ------------------------------------- -from elastic_transport import NodeSelector - -class CustomSelector(NodeSelector): - def select(nodes): ... - -client = Elasticsearch( - ..., - node_selector_class=CustomSelector -) ------------------------------------- - -[discrete] -==== Marking nodes dead and alive - -Individual nodes of Elasticsearch may have transient connectivity or load issues which may make them unable to service requests. To combat this the pool of nodes will detect when a node isn't able to service requests due to transport or API errors. - -After a node has been timed out it will be moved back to the set of "alive" nodes but only after the node returns a successful response will the node be marked as "alive" in terms of consecutive errors. - -The `dead_node_backoff_factor` and `max_dead_node_backoff` parameters can be used to configure how long the node pool will put the node into timeout with each consecutive failure. Both parameters use a unit of seconds. - -The calculation is equal to `min(dead_node_backoff_factor * (2 ** (consecutive_failures - 1)), max_dead_node_backoff)`. - - -[discrete] -[[serializer]] -=== Serializers - -Serializers transform bytes on the wire into native Python objects and vice-versa. By default the client ships with serializers for `application/json`, `application/x-ndjson`, `text/*`, `application/vnd.apache.arrow.stream` and `application/mapbox-vector-tile`. - -You can define custom serializers via the `serializers` parameter: - -[source,python] ------------------------------------- -from elasticsearch import Elasticsearch, JsonSerializer - -class JsonSetSerializer(JsonSerializer): - """Custom JSON serializer that handles Python sets""" - def default(self, data: Any) -> Any: - if isinstance(data, set): - return list(data) - return super().default(data) - -client = Elasticsearch( - ..., - # Serializers are a mapping of 'mimetype' to Serializer class. - serializers={"application/json": JsonSetSerializer()} -) ------------------------------------- - -If the `orjson` package is installed, you can use the faster ``OrjsonSerializer`` for the default mimetype (``application/json``): - -[source,python] ------------------------------------- -from elasticsearch import Elasticsearch, OrjsonSerializer - -es = Elasticsearch( - ..., - serializer=OrjsonSerializer() -) ------------------------------------- - -orjson is particularly fast when serializing vectors as it has native numpy support. This will be the default in a future release. Note that you can install orjson with the `orjson` extra: - -[source,sh] --------------------------------------------- -$ python -m pip install elasticsearch[orjson] --------------------------------------------- - -[discrete] -[[nodes]] -=== Nodes - -[discrete] -==== Node implementations - -The default node class for synchronous I/O is `urllib3` and the default node class for asynchronous I/O is `aiohttp`. - -For all of the built-in HTTP node implementations like `urllib3`, `requests`, and `aiohttp` you can specify with a simple string to the `node_class` parameter: - -[source,python] ------------------------------------- -from elasticsearch import Elasticsearch - -client = Elasticsearch( - ..., - node_class="requests" -) ------------------------------------- - -You can also specify a custom node implementation via the `node_class` parameter: - -[source,python] ------------------------------------- -from elasticsearch import Elasticsearch -from elastic_transport import Urllib3HttpNode - -class CustomHttpNode(Urllib3HttpNode): - ... - -client = Elasticsearch( - ... - node_class=CustomHttpNode -) ------------------------------------- - -[discrete] -==== HTTP connections per node - -Each node contains its own pool of HTTP connections to allow for concurrent requests. This value is configurable via the `connections_per_node` parameter: - -[source,python] ------------------------------------- -client = Elasticsearch( - ..., - connections_per_node=5 -) ------------------------------------- diff --git a/docs/guide/connecting.asciidoc b/docs/guide/connecting.asciidoc deleted file mode 100644 index 101bded51..000000000 --- a/docs/guide/connecting.asciidoc +++ /dev/null @@ -1,438 +0,0 @@ -[[connecting]] -== Connecting - -This page contains the information you need to connect the Client with {es}. - -[discrete] -[[connect-ec]] -=== Connecting to Elastic Cloud - -https://www.elastic.co/guide/en/cloud/current/ec-getting-started.html[Elastic Cloud] -is the easiest way to get started with {es}. When connecting to Elastic Cloud -with the Python {es} client you should always use the `cloud_id` -parameter to connect. You can find this value within the "Manage Deployment" -page after you've created a cluster (look in the top-left if you're in Kibana). - -We recommend using a Cloud ID whenever possible because your client will be -automatically configured for optimal use with Elastic Cloud including HTTPS and -HTTP compression. - -[source,python] ----- -from elasticsearch import Elasticsearch - -# Password for the 'elastic' user generated by Elasticsearch -ELASTIC_PASSWORD = "" - -# Found in the 'Manage Deployment' page -CLOUD_ID = "deployment-name:dXMtZWFzdDQuZ2Nw..." - -# Create the client instance -client = Elasticsearch( - cloud_id=CLOUD_ID, - basic_auth=("elastic", ELASTIC_PASSWORD) -) - -# Successful response! -client.info() -# {'name': 'instance-0000000000', 'cluster_name': ...} ----- - -[discrete] -[[connect-self-managed-new]] -=== Connecting to a self-managed cluster - -By default {es} will start with security features like authentication and TLS -enabled. To connect to the {es} cluster you'll need to configure the Python {es} -client to use HTTPS with the generated CA certificate in order to make requests -successfully. - -If you're just getting started with {es} we recommend reading the documentation -on https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html[configuring] -and -https://www.elastic.co/guide/en/elasticsearch/reference/current/starting-elasticsearch.html[starting {es}] -to ensure your cluster is running as expected. - -When you start {es} for the first time you'll see a distinct block like the one -below in the output from {es} (you may have to scroll up if it's been a while): - -```sh ----------------------------------------------------------------- --> Elasticsearch security features have been automatically configured! --> Authentication is enabled and cluster connections are encrypted. - --> Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`): - lhQpLELkjkrawaBoaz0Q - --> HTTP CA certificate SHA-256 fingerprint: - a52dd93511e8c6045e21f16654b77c9ee0f34aea26d9f40320b531c474676228 -... ----------------------------------------------------------------- -``` - -Note down the `elastic` user password and HTTP CA fingerprint for the next -sections. In the examples below they will be stored in the variables -`ELASTIC_PASSWORD` and `CERT_FINGERPRINT` respectively. - -Depending on the circumstances there are two options for verifying the HTTPS -connection, either verifying with the CA certificate itself or via the HTTP CA -certificate fingerprint. - -[discrete] -==== Verifying HTTPS with CA certificates - -Using the `ca_certs` option is the default way the Python {es} client verifies -an HTTPS connection. - -The generated root CA certificate can be found in the `certs` directory in your -{es} config location (`$ES_CONF_PATH/certs/http_ca.crt`). If you're running {es} -in Docker there is -https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html[additional documentation for retrieving the CA certificate]. - -Once you have the `http_ca.crt` file somewhere accessible pass the path to the -client via `ca_certs`: - -[source,python] ----- -from elasticsearch import Elasticsearch - -# Password for the 'elastic' user generated by Elasticsearch -ELASTIC_PASSWORD = "" - -# Create the client instance -client = Elasticsearch( - "https://localhost:9200", - ca_certs="/path/to/http_ca.crt", - basic_auth=("elastic", ELASTIC_PASSWORD) -) - -# Successful response! -client.info() -# {'name': 'instance-0000000000', 'cluster_name': ...} ----- - -NOTE: If you don't specify `ca_certs` or `ssl_assert_fingerprint` then the -https://certifiio.readthedocs.io[certifi package] will be used for `ca_certs` by -default if available. - -[discrete] -==== Verifying HTTPS with certificate fingerprints (Python 3.10 or later) - -NOTE: Using this method **requires using Python 3.10 or later** and isn't -available when using the `aiohttp` HTTP client library so can't be used with -`AsyncElasticsearch`. - -This method of verifying the HTTPS connection takes advantage of the certificate -fingerprint value noted down earlier. Take this SHA256 fingerprint value and -pass it to the Python {es} client via `ssl_assert_fingerprint`: - -[source,python] ----- -from elasticsearch import Elasticsearch - -# Fingerprint either from Elasticsearch startup or above script. -# Colons and uppercase/lowercase don't matter when using -# the 'ssl_assert_fingerprint' parameter -CERT_FINGERPRINT = "A5:2D:D9:35:11:E8:C6:04:5E:21:F1:66:54:B7:7C:9E:E0:F3:4A:EA:26:D9:F4:03:20:B5:31:C4:74:67:62:28" - -# Password for the 'elastic' user generated by Elasticsearch -ELASTIC_PASSWORD = "" - -client = Elasticsearch( - "https://localhost:9200", - ssl_assert_fingerprint=CERT_FINGERPRINT, - basic_auth=("elastic", ELASTIC_PASSWORD) -) - -# Successful response! -client.info() -# {'name': 'instance-0000000000', 'cluster_name': ...} ----- - -The certificate fingerprint can be calculated using `openssl x509` with the -certificate file: - -[source,sh] ----- -openssl x509 -fingerprint -sha256 -noout -in /path/to/http_ca.crt ----- - -If you don't have access to the generated CA file from {es} you can use the -following script to output the root CA fingerprint of the {es} instance with -`openssl s_client`: - -[source,sh] ----- -# Replace the values of 'localhost' and '9200' to the -# corresponding host and port values for the cluster. -openssl s_client -connect localhost:9200 -servername localhost -showcerts /dev/null \ - | openssl x509 -fingerprint -sha256 -noout -in /dev/stdin ----- - -The output of `openssl x509` will look something like this: - -[source,sh] ----- -SHA256 Fingerprint=A5:2D:D9:35:11:E8:C6:04:5E:21:F1:66:54:B7:7C:9E:E0:F3:4A:EA:26:D9:F4:03:20:B5:31:C4:74:67:62:28 ----- - - -[discrete] -[[connect-no-security]] -=== Connecting without security enabled - -WARNING: Running {es} without security enabled is not recommended. - -If your cluster is configured with -https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html[security explicitly disabled] -then you can connect via HTTP: - -[source,python] ----- -from elasticsearch import Elasticsearch - -# Create the client instance -client = Elasticsearch("http://localhost:9200") - -# Successful response! -client.info() -# {'name': 'instance-0000000000', 'cluster_name': ...} ----- - -[discrete] -[[connect-url]] -=== Connecting to multiple nodes - -The Python {es} client supports sending API requests to multiple nodes in the -cluster. This means that work will be more evenly spread across the cluster -instead of hammering the same node over and over with requests. To configure the -client with multiple nodes you can pass a list of URLs, each URL will be used as -a separate node in the pool. - -[source,python] ----- -from elasticsearch import Elasticsearch - -# List of nodes to connect use with different hosts and ports. -NODES = [ - "https://localhost:9200", - "https://localhost:9201", - "https://localhost:9202", -] - -# Password for the 'elastic' user generated by Elasticsearch -ELASTIC_PASSWORD = "" - -client = Elasticsearch( - NODES, - ca_certs="/path/to/http_ca.crt", - basic_auth=("elastic", ELASTIC_PASSWORD) -) ----- - -By default nodes are selected using round-robin, but alternate node selection -strategies can be configured with `node_selector_class` parameter. - -NOTE: If your {es} cluster is behind a load balancer like when using Elastic -Cloud you won't need to configure multiple nodes. Instead use the load balancer -host and port. - - -[discrete] -[[authentication]] -=== Authentication - -This section contains code snippets to show you how to connect to various {es} -providers. All authentication methods are supported on the client constructor -or via the per-request `.options()` method: - -[source,python] ----- -from elasticsearch import Elasticsearch - -# Authenticate from the constructor -client = Elasticsearch( - "https://localhost:9200", - ca_certs="/path/to/http_ca.crt", - basic_auth=("username", "password") -) - -# Authenticate via the .options() method: -client.options( - basic_auth=("username", "password") -).indices.get(index="*") - -# You can persist the authenticated client to use -# later or use for multiple API calls: -auth_client = client.options(api_key="api_key") -for i in range(10): - auth_client.index( - index="example-index", - document={"field": i} - ) ----- - - -[discrete] -[[auth-basic]] -==== HTTP Basic authentication (Username and Password) - -HTTP Basic authentication uses the `basic_auth` parameter by passing in a -username and password within a tuple: - -[source,python] ----- -from elasticsearch import Elasticsearch - -# Adds the HTTP header 'Authorization: Basic ' -client = Elasticsearch( - "https://localhost:9200", - ca_certs="/path/to/http_ca.crt", - basic_auth=("username", "password") -) ----- - - -[discrete] -[[auth-bearer]] -==== HTTP Bearer authentication - -HTTP Bearer authentication uses the `bearer_auth` parameter by passing the token -as a string. This authentication method is used by -https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-api-create-service-token.html[Service Account Tokens] -and https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-api-get-token.html[Bearer Tokens]. - -[source,python] ----- -from elasticsearch import Elasticsearch - -# Adds the HTTP header 'Authorization: Bearer token-value' -client = Elasticsearch( - "https://localhost:9200", - bearer_auth="token-value" -) ----- - - -[discrete] -[[auth-apikey]] -==== API Key authentication - -You can configure the client to use {es}'s API Key for connecting to your -cluster. These can be generated through the -https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html[Elasticsearch Create API key API] -or https://www.elastic.co/guide/en/kibana/current/api-keys.html#create-api-key[Kibana Stack Management]. - -[source,python] ----- -from elasticsearch import Elasticsearch - -# Adds the HTTP header 'Authorization: ApiKey ' -client = Elasticsearch( - "https://localhost:9200", - ca_certs="/path/to/http_ca.crt", - api_key="api_key", -) ----- - -[discrete] -[[compatibility-mode]] -=== Enabling the Compatibility Mode - -The {es} server version 8.0 is introducing a new compatibility mode that allows -you a smoother upgrade experience from 7 to 8. In a nutshell, you can use the -latest 7.x Python {es} {es} client with an 8.x {es} server, giving more room to -coordinate the upgrade of your codebase to the next major version. - -If you want to leverage this functionality, please make sure that you are using -the latest 7.x Python {es} client and set the environment variable -`ELASTIC_CLIENT_APIVERSIONING` to `true`. The client is handling the rest -internally. For every 8.0 and beyond Python {es} client, you're all set! The -compatibility mode is enabled by default. - -[discrete] -[[connecting-faas]] -=== Using the Client in a Function-as-a-Service Environment - -This section illustrates the best practices for leveraging the {es} client in a -Function-as-a-Service (FaaS) environment. - -The most influential optimization is to initialize the client outside of the -function, the global scope. - -This practice does not only improve performance but also enables background -functionality as – for example – -https://www.elastic.co/blog/elasticsearch-sniffing-best-practices-what-when-why-how[sniffing]. -The following examples provide a skeleton for the best practices. - -IMPORTANT: The async client shouldn't be used within Function-as-a-Service as a new event - loop must be started for each invocation. Instead the synchronous `Elasticsearch` - client is recommended. - -[discrete] -[[connecting-faas-gcp]] -==== GCP Cloud Functions - -[source,python] ----- -from elasticsearch import Elasticsearch - -# Client initialization -client = Elasticsearch( - cloud_id="deployment-name:ABCD...", - api_key=... -) - -def main(request): - # Use the client - client.search(index=..., query={"match_all": {}}) - ----- - -[discrete] -[[connecting-faas-aws]] -==== AWS Lambda - -[source,python] ----- -from elasticsearch import Elasticsearch - -# Client initialization -client = Elasticsearch( - cloud_id="deployment-name:ABCD...", - api_key=... -) - -def main(event, context): - # Use the client - client.search(index=..., query={"match_all": {}}) - ----- - -[discrete] -[[connecting-faas-azure]] -==== Azure Functions - -[source,python] ----- -import azure.functions as func -from elasticsearch import Elasticsearch - -# Client initialization -client = Elasticsearch( - cloud_id="deployment-name:ABCD...", - api_key=... -) - -def main(request: func.HttpRequest) -> func.HttpResponse: - # Use the client - client.search(index=..., query={"match_all": {}}) - ----- - -Resources used to assess these recommendations: - -* https://cloud.google.com/functions/docs/bestpractices/tips#use_global_variables_to_reuse_objects_in_future_invocations[GCP Cloud Functions: Tips & Tricks] -* https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html[Best practices for working with AWS Lambda functions] -* https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-python?tabs=azurecli-linux%2Capplication-level#global-variables[Azure Functions Python developer guide] -* https://docs.aws.amazon.com/lambda/latest/operatorguide/global-scope.html[AWS Lambda: Comparing the effect of global scope] diff --git a/docs/guide/dsl/asyncio.asciidoc b/docs/guide/dsl/asyncio.asciidoc deleted file mode 100644 index ff7799dfb..000000000 --- a/docs/guide/dsl/asyncio.asciidoc +++ /dev/null @@ -1,103 +0,0 @@ -[[asyncio]] -==== Using asyncio with Elasticsearch Python DSL - -The DSL module supports async/await with -https://docs.python.org/3/library/asyncio.html[asyncio]. To ensure that -you have all the required dependencies, install the `[async]` -extra: - -[source,bash] ----- -$ python -m pip install "elasticsearch[async]" ----- - -===== Connections - -Use the `async_connections` module to manage your asynchronous -connections. - -[source,python] ----- -from elasticsearch.dsl import async_connections - -async_connections.create_connection(hosts=['localhost'], timeout=20) ----- - -All the options available in the `connections` module can be used with -`async_connections`. - -====== How to avoid 'Unclosed client session / connector' warnings on exit - -These warnings come from the `aiohttp` package, which is used internally -by the `AsyncElasticsearch` client. They appear often when the -application exits and are caused by HTTP connections that are open when -they are garbage collected. To avoid these warnings, make sure that you -close your connections. - -[source,python] ----- -es = async_connections.get_connection() -await es.close() ----- - -===== Search DSL - -Use the `AsyncSearch` class to perform asynchronous searches. - -[source,python] ----- -from elasticsearch.dsl import AsyncSearch - -s = AsyncSearch().query("match", title="python") -async for hit in s: - print(hit.title) ----- - -Instead of using the `AsyncSearch` object as an asynchronous iterator, -you can explicitly call the `execute()` method to get a `Response` -object. - -[source,python] ----- -s = AsyncSearch().query("match", title="python") -response = await s.execute() -for hit in response: - print(hit.title) ----- - -An `AsyncMultiSearch` is available as well. - -[source,python] ----- -from elasticsearch.dsl import AsyncMultiSearch - -ms = AsyncMultiSearch(index='blogs') - -ms = ms.add(AsyncSearch().filter('term', tags='python')) -ms = ms.add(AsyncSearch().filter('term', tags='elasticsearch')) - -responses = await ms.execute() - -for response in responses: - print("Results for query %r." % response.search.query) - for hit in response: - print(hit.title) ----- - -===== Asynchronous Documents, Indexes, and more - -The `Document`, `Index`, `IndexTemplate`, `Mapping`, `UpdateByQuery` and -`FacetedSearch` classes all have asynchronous versions that use the same -name with an `Async` prefix. These classes expose the same interfaces as -the synchronous versions, but any methods that perform I/O are defined -as coroutines. - -Auxiliary classes that do not perform I/O do not have asynchronous -versions. The same classes can be used in synchronous and asynchronous -applications. - -When using a custom analyzer in an asynchronous -application, use the `async_simulate()` method to invoke the Analyze -API on it. - -Consult the `api` section for details about each specific method. diff --git a/docs/guide/dsl/configuration.asciidoc b/docs/guide/dsl/configuration.asciidoc deleted file mode 100644 index c8cb2b4f0..000000000 --- a/docs/guide/dsl/configuration.asciidoc +++ /dev/null @@ -1,125 +0,0 @@ -=== Configuration - -There are several ways to configure connections for the library. The -easiest and most useful approach is to define one default connection -that can be used every time an API call is made without explicitly -passing in other connections. - -[NOTE] -==== -Unless you want to access multiple clusters from your application, it is -highly recommended that you use the `create_connection` method and -all operations will use that connection automatically. -==== - -==== Default connection - -To define a default connection that can be used globally, use the -`connections` module and the `create_connection` method like this: - -[source,python] ----- -from elasticsearch.dsl import connections - -connections.create_connection(hosts=['localhost'], timeout=20) ----- - -===== Single connection with an alias - -You can define the `alias` or name of a connection so you can easily -refer to it later. The default value for `alias` is `default`. - -[source,python] ----- -from elasticsearch.dsl import connections - -connections.create_connection(alias='my_new_connection', hosts=['localhost'], timeout=60) ----- - -Additional keyword arguments (`hosts` and `timeout` in our example) will -be passed to the `Elasticsearch` class from `elasticsearch-py`. - -To see all possible configuration options refer to the -https://elasticsearch-py.readthedocs.io/en/latest/api/elasticsearch.html[documentation]. - -==== Multiple clusters - -You can define multiple connections to multiple clusters at the same -time using the `configure` method: - -[source,python] ----- -from elasticsearch.dsl import connections - -connections.configure( - default={'hosts': 'localhost'}, - dev={ - 'hosts': ['esdev1.example.com:9200'], - 'sniff_on_start': True - } -) ----- - -Such connections will be constructed lazily when requested for the first -time. - -You can alternatively define multiple connections by adding them one by -one as shown in the following example: - -[source,python] ----- -# if you have configuration options to be passed to Elasticsearch.__init__ -# this also shows creating a connection with the alias 'qa' -connections.create_connection('qa', hosts=['esqa1.example.com'], sniff_on_start=True) - -# if you already have an Elasticsearch instance ready -connections.add_connection('another_qa', my_client) ----- - -===== Using aliases - -When using multiple connections, you can refer to them using the string -alias specified when you created the connection. - -This example shows how to use an alias to a connection: - -[source,python] ----- -s = Search(using='qa') ----- - -A `KeyError` will be raised if there is no connection registered with -that alias. - -==== Manual - -If you don't want to supply a global configuration, you can always pass -in your own connection as an instance of `elasticsearch.Elasticsearch` -with the parameter `using` wherever it is accepted like this: - -[source,python] ----- -s = Search(using=Elasticsearch('localhost')) ----- - -You can even use this approach to override any connection the object -might be already associated with: - -[source,python] ----- -s = s.using(Elasticsearch('otherhost:9200')) ----- - -[NOTE] -==== -When using the `dsl` module, it is highly recommended that you -use the built-in serializer -(`elasticsearch.dsl.serializer.serializer`) to ensure your objects -are correctly serialized into `JSON` every time. The -`create_connection` method that is described here (and that the -`configure` method uses under the hood) will do that automatically for -you, unless you explicitly specify your own serializer. The built-in -serializer also allows you to serialize your own objects - just define a -`to_dict()` method on your objects and that method will be -automatically called when serializing your custom objects to `JSON`. -==== diff --git a/docs/guide/dsl/examples.asciidoc b/docs/guide/dsl/examples.asciidoc deleted file mode 100644 index 5d22f84e5..000000000 --- a/docs/guide/dsl/examples.asciidoc +++ /dev/null @@ -1,5 +0,0 @@ -=== Examples - -Please see the -https://github.com/elastic/elasticsearch-py/tree/master/examples/dsl[DSL examples] -directory to see some complex examples using the DSL module. diff --git a/docs/guide/dsl/faceted_search.asciidoc b/docs/guide/dsl/faceted_search.asciidoc deleted file mode 100644 index 6d05cae2d..000000000 --- a/docs/guide/dsl/faceted_search.asciidoc +++ /dev/null @@ -1,145 +0,0 @@ -[[faceted_search]] -==== Faceted Search - -The library comes with a simple abstraction aimed at helping you develop -faceted navigation for your data. - -[NOTE] -==== -This API is experimental and will be subject to change. Any feedback is -welcome. -==== - -===== Configuration - -You can provide several configuration options (as class attributes) when -declaring a `FacetedSearch` subclass: - -- `index`: - the name of the index (as string) to search through, defaults to - `'_all'`. -- `doc_types`: - list of `Document` subclasses or strings to be used, defaults to - `['_all']`. -- `fields`: - list of fields on the document type to search through. The list will - be passes to `MultiMatch` query so can contain boost values - (`'title^5'`), defaults to `['*']`. -- `facets`: - dictionary of facets to display/filter on. The key is the name - displayed and values should be instances of any `Facet` subclass, for - example: `{'tags': TermsFacet(field='tags')}` - -====== Facets - -There are several different facets available: - -- `TermsFacet`: - provides an option to split documents into groups based on a value of - a field, for example `TermsFacet(field='category')` -- `DateHistogramFacet`: - split documents into time intervals, example: - `DateHistogramFacet(field="published_date", calendar_interval="day")` -- `HistogramFacet`: - similar to `DateHistogramFacet` but for numerical values: - `HistogramFacet(field="rating", interval=2)` -- `RangeFacet`: - allows you to define your own ranges for a numerical fields: - `RangeFacet(field="comment_count", ranges=[("few", (None, 2)), ("lots", (2, None))])` -- `NestedFacet`: - is just a simple facet that wraps another to provide access to nested - documents: - `NestedFacet('variants', TermsFacet(field='variants.color'))` - -By default facet results will only calculate document count, if you wish -for a different metric you can pass in any single value metric -aggregation as the `metric` kwarg -(`TermsFacet(field='tags', metric=A('max', field=timestamp))`). When -specifying `metric` the results will be, by default, sorted in -descending order by that metric. To change it to ascending specify -`metric_sort="asc"` and to just sort by document count use -`metric_sort=False`. - -====== Advanced - -If you require any custom behavior or modifications simply override one -or more of the methods responsible for the class' functions: - -- `search(self)`: - is responsible for constructing the `Search` object used. Override - this if you want to customize the search object (for example by adding - a global filter for published articles only). -- `query(self, search)`: - adds the query position of the search (if search input specified), by - default using `MultiField` query. Override this if you want to modify - the query type used. -- `highlight(self, search)`: - defines the highlighting on the `Search` object and returns a new one. - Default behavior is to highlight on all fields specified for search. - -===== Usage - -The custom subclass can be instantiated empty to provide an empty search -(matching everything) or with `query`, `filters` and `sort`. - -- `query`: - is used to pass in the text of the query to be performed. If `None` is - passed in (default) a `MatchAll` query will be used. For example - `'python web'` -- `filters`: - is a dictionary containing all the facet filters that you wish to - apply. Use the name of the facet (from `.facets` attribute) as the key - and one of the possible values as value. For example - `{'tags': 'python'}`. -- `sort`: - is a tuple or list of fields on which the results should be sorted. - The format of the individual fields are to be the same as those passed - to `~elasticsearch.dsl.Search.sort`. - -====== Response - -the response returned from the `FacetedSearch` object (by calling -`.execute()`) is a subclass of the standard `Response` class that adds a -property called `facets` which contains a dictionary with lists of -buckets -each represented by a tuple of key, document count and a flag -indicating whether this value has been filtered on. - -===== Example - -[source,python] ----- -from datetime import date - -from elasticsearch.dsl import FacetedSearch, TermsFacet, DateHistogramFacet - -class BlogSearch(FacetedSearch): - doc_types = [Article, ] - # fields that should be searched - fields = ['tags', 'title', 'body'] - - facets = { - # use bucket aggregations to define facets - 'tags': TermsFacet(field='tags'), - 'publishing_frequency': DateHistogramFacet(field='published_from', interval='month') - } - - def search(self): - # override methods to add custom pieces - s = super().search() - return s.filter('range', publish_from={'lte': 'now/h'}) - -bs = BlogSearch('python web', {'publishing_frequency': date(2015, 6)}) -response = bs.execute() - -# access hits and other attributes as usual -total = response.hits.total -print('total hits', total.relation, total.value) -for hit in response: - print(hit.meta.score, hit.title) - -for (tag, count, selected) in response.facets.tags: - print(tag, ' (SELECTED):' if selected else ':', count) - -for (month, count, selected) in response.facets.publishing_frequency: - print(month.strftime('%B %Y'), ' (SELECTED):' if selected else ':', count) ----- diff --git a/docs/guide/dsl/howto.asciidoc b/docs/guide/dsl/howto.asciidoc deleted file mode 100644 index 3328234bb..000000000 --- a/docs/guide/dsl/howto.asciidoc +++ /dev/null @@ -1,7 +0,0 @@ -=== How-To Guides - -include::search_dsl.asciidoc[] -include::persistence.asciidoc[] -include::faceted_search.asciidoc[] -include::update_by_query.asciidoc[] -include::asyncio.asciidoc[] diff --git a/docs/guide/dsl/persistence.asciidoc b/docs/guide/dsl/persistence.asciidoc deleted file mode 100644 index ff478dadf..000000000 --- a/docs/guide/dsl/persistence.asciidoc +++ /dev/null @@ -1,761 +0,0 @@ -==== Persistence - -You can use the DSL module to define your mappings and a basic -persistent layer for your application. - -For more comprehensive examples have a look at the -https://github.com/elastic/elasticsearch-py/tree/main/examples/dsl[DSL examples] -directory in the repository. - -[[doc_type]] -===== Document - -If you want to create a model-like wrapper around your documents, use -the `Document` class. It can also be used to create all the necessary -mappings and settings in elasticsearch (see `life-cycle` for details). - -[source,python] ----- -from datetime import datetime -from elasticsearch.dsl import Document, Date, Nested, Boolean, \ - analyzer, InnerDoc, Completion, Keyword, Text - -html_strip = analyzer('html_strip', - tokenizer="standard", - filter=["standard", "lowercase", "stop", "snowball"], - char_filter=["html_strip"] -) - -class Comment(InnerDoc): - author = Text(fields={'raw': Keyword()}) - content = Text(analyzer='snowball') - created_at = Date() - - def age(self): - return datetime.now() - self.created_at - -class Post(Document): - title = Text() - title_suggest = Completion() - created_at = Date() - published = Boolean() - category = Text( - analyzer=html_strip, - fields={'raw': Keyword()} - ) - - comments = Nested(Comment) - - class Index: - name = 'blog' - - def add_comment(self, author, content): - self.comments.append( - Comment(author=author, content=content, created_at=datetime.now())) - - def save(self, ** kwargs): - self.created_at = datetime.now() - return super().save(** kwargs) ----- - -====== Data types - -The `Document` instances use native python types like `str` and -`datetime`. In case of `Object` or `Nested` fields an instance of the -`InnerDoc` subclass is used, as in the `add_comment` method in the -above example where we are creating an instance of the `Comment` class. - -There are some specific types that were created as part of this library -to make working with some field types easier, for example the `Range` -object used in any of the -https://www.elastic.co/guide/en/elasticsearch/reference/current/range.html[range -fields]: - -[source,python] ----- -from elasticsearch.dsl import Document, DateRange, Keyword, Range - -class RoomBooking(Document): - room = Keyword() - dates = DateRange() - - -rb = RoomBooking( - room='Conference Room II', - dates=Range( - gte=datetime(2018, 11, 17, 9, 0, 0), - lt=datetime(2018, 11, 17, 10, 0, 0) - ) -) - -# Range supports the in operator correctly: -datetime(2018, 11, 17, 9, 30, 0) in rb.dates # True - -# you can also get the limits and whether they are inclusive or exclusive: -rb.dates.lower # datetime(2018, 11, 17, 9, 0, 0), True -rb.dates.upper # datetime(2018, 11, 17, 10, 0, 0), False - -# empty range is unbounded -Range().lower # None, False ----- - -====== Python Type Hints - -Document fields can be defined using standard Python type hints if -desired. Here are some simple examples: - -[source,python] ----- -from typing import Optional - -class Post(Document): - title: str # same as title = Text(required=True) - created_at: Optional[datetime] # same as created_at = Date(required=False) - published: bool # same as published = Boolean(required=True) ----- - -It is important to note that when using `Field` subclasses such as -`Text`, `Date` and `Boolean`, they must be given in the right-side of an -assignment, as shown in examples above. Using these classes as type -hints will result in errors. - -Python types are mapped to their corresponding field type according to -the following table: - -.Python type to DSL field mappings -[cols=",",options="header",] -|=== -|Python type |DSL field -|`str` |`Text(required=True)` -|`bool` |`Boolean(required=True)` -|`int` |`Integer(required=True)` -|`float` |`Float(required=True)` -|`bytes` |`Binary(required=True)` -|`datetime` |`Date(required=True)` -|`date` |`Date(format="yyyy-MM-dd", required=True)` -|=== - -To type a field as optional, the standard `Optional` modifier from the -Python `typing` package can be used. When using Python 3.10 or newer, -"pipe" syntax can also be used, by adding `| None` to a type. The -`List` modifier can be added to a field to convert it to an array, -similar to using the `multi=True` argument on the field object. - -[source,python] ----- -from typing import Optional, List - -class MyDoc(Document): - pub_date: Optional[datetime] # same as pub_date = Date() - middle_name: str | None # same as middle_name = Text() - authors: List[str] # same as authors = Text(multi=True, required=True) - comments: Optional[List[str]] # same as comments = Text(multi=True) ----- - -A field can also be given a type hint of an `InnerDoc` subclass, in -which case it becomes an `Object` field of that class. When the -`InnerDoc` subclass is wrapped with `List`, a `Nested` field is created -instead. - -[source,python] ----- -from typing import List - -class Address(InnerDoc): - ... - -class Comment(InnerDoc): - ... - -class Post(Document): - address: Address # same as address = Object(Address, required=True) - comments: List[Comment] # same as comments = Nested(Comment, required=True) ----- - -Unfortunately it is impossible to have Python type hints that uniquely -identify every possible Elasticsearch field type. To choose a field type -that is different than the ones in the table above, the field instance -can be added explicitly as a right-side assignment in the field -declaration. The next example creates a field that is typed as -`Optional[str]`, but is mapped to `Keyword` instead of `Text`: - -[source,python] ----- -class MyDocument(Document): - category: Optional[str] = Keyword() ----- - -This form can also be used when additional options need to be given to -initialize the field, such as when using custom analyzer settings or -changing the `required` default: - -[source,python] ----- -class Comment(InnerDoc): - content: str = Text(analyzer='snowball', required=True) ----- - -When using type hints as above, subclasses of `Document` and `InnerDoc` -inherit some of the behaviors associated with Python dataclasses, as -defined by https://peps.python.org/pep-0681/[PEP 681] and the -https://typing.readthedocs.io/en/latest/spec/dataclasses.html#dataclass-transform[dataclass_transform -decorator]. To add per-field dataclass options such as `default` or -`default_factory`, the `mapped_field()` wrapper can be used on -the right side of a typed field declaration: - -[source,python] ----- -class MyDocument(Document): - title: str = mapped_field(default="no title") - created_at: datetime = mapped_field(default_factory=datetime.now) - published: bool = mapped_field(default=False) - category: str = mapped_field(Keyword(required=True), default="general") ----- - -When using the `mapped_field()` wrapper function, an explicit field -type instance can be passed as a first positional argument, as the -`category` field does in the example above. - -Static type checkers such as https://mypy-lang.org/[mypy] and -https://github.com/microsoft/pyright[pyright] can use the type hints and -the dataclass-specific options added to the `mapped_field()` -function to improve type inference and provide better real-time -suggestions in IDEs. - -One situation in which type checkers can't infer the correct type is -when using fields as class attributes. Consider the following example: - -[source,python] ----- -class MyDocument(Document): - title: str - -doc = MyDocument() -# doc.title is typed as "str" (correct) -# MyDocument.title is also typed as "str" (incorrect) ----- - -To help type checkers correctly identify class attributes as such, the -`M` generic must be used as a wrapper to the type hint, as shown in the -next examples: - -[source,python] ----- -from elasticsearch.dsl import M - -class MyDocument(Document): - title: M[str] - created_at: M[datetime] = mapped_field(default_factory=datetime.now) - -doc = MyDocument() -# doc.title is typed as "str" -# doc.created_at is typed as "datetime" -# MyDocument.title is typed as "InstrumentedField" -# MyDocument.created_at is typed as "InstrumentedField" ----- - -Note that the `M` type hint does not provide any runtime behavior and -its use is not required, but it can be useful to eliminate spurious type -errors in IDEs or type checking builds. - -The `InstrumentedField` objects returned when fields are accessed as -class attributes are proxies for the field instances that can be used -anywhere a field needs to be referenced, such as when specifying sort -options in a `Search` object: - -[source,python] ----- -# sort by creation date descending, and title ascending -s = MyDocument.search().sort(-MyDocument.created_at, MyDocument.title) ----- - -When specifying sorting order, the `{plus}` and `-` unary operators can -be used on the class field attributes to indicate ascending and -descending order. - -Finally, the `ClassVar` annotation can be used to define a regular class -attribute that should not be mapped to the Elasticsearch index: - -[source,python] ----- -from typing import ClassVar - -class MyDoc(Document): - title: M[str] created_at: M[datetime] = - mapped_field(default_factory=datetime.now) my_var: - ClassVar[str] # regular class variable, ignored by Elasticsearch ----- - -====== Note on dates - -The DSL module will always respect the timezone information (or -lack thereof) on the `datetime` objects passed in or stored in -Elasticsearch. Elasticsearch itself interprets all datetimes with no -timezone information as `UTC`. If you wish to reflect this in your -python code, you can specify `default_timezone` when instantiating a -`Date` field: - -[source,python] ----- -class Post(Document): - created_at = Date(default_timezone='UTC') ----- - -In that case any `datetime` object passed in (or parsed from -elasticsearch) will be treated as if it were in `UTC` timezone. - -[[life-cycle]] -====== Document life cycle - -Before you first use the `Post` document type, you need to create the -mappings in Elasticsearch. For that you can either use the `index` -object or create the mappings directly by calling the `init` class -method: - -[source,python] ----- -# create the mappings in Elasticsearch -Post.init() ----- - -This code will typically be run in the setup for your application during -a code deploy, similar to running database migrations. - -To create a new `Post` document just instantiate the class and pass in -any fields you wish to set, you can then use standard attribute setting -to change/add more fields. Note that you are not limited to the fields -defined explicitly: - -[source,python] ----- -# instantiate the document -first = Post(title='My First Blog Post, yay!', published=True) -# assign some field values, can be values or lists of values -first.category = ['everything', 'nothing'] -# every document has an id in meta -first.meta.id = 47 - - -# save the document into the cluster -first.save() ----- - -All the metadata fields (`id`, `routing`, `index` etc) can be accessed -(and set) via a `meta` attribute or directly using the underscored -variant: - -[source,python] ----- -post = Post(meta={'id': 42}) - -# prints 42 -print(post.meta.id) - -# override default index -post.meta.index = 'my-blog' ----- - -[NOTE] -==== -Having all metadata accessible through `meta` means that this name is -reserved and you shouldn't have a field called `meta` on your document. -If you, however, need it you can still access the data using the get -item (as opposed to attribute) syntax: `post['meta']`. -==== - -To retrieve an existing document use the `get` class method: - -[source,python] ----- -# retrieve the document -first = Post.get(id=42) -# now we can call methods, change fields, ... -first.add_comment('me', 'This is nice!') -# and save the changes into the cluster again -first.save() ----- - -The -https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html[Update -API] can also be used via the `update` method. By default any keyword -arguments, beyond the parameters of the API, will be considered fields -with new values. Those fields will be updated on the local copy of the -document and then sent over as partial document to be updated: - -[source,python] ----- -# retrieve the document -first = Post.get(id=42) -# you can update just individual fields which will call the update API -# and also update the document in place -first.update(published=True, published_by='me') ----- - -In case you wish to use a `painless` script to perform the update you -can pass in the script string as `script` or the `id` of a -https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting-using.html#script-stored-scripts[stored script] -via `script_id`. All additional keyword arguments to the -`update` method will then be passed in as parameters of the script. The -document will not be updated in place. - -[source,python] ----- -# retrieve the document -first = Post.get(id=42) -# we execute a script in elasticsearch with additional kwargs being passed -# as params into the script -first.update(script='ctx._source.category.add(params.new_category)', - new_category='testing') ----- - -If the document is not found in elasticsearch an exception -(`elasticsearch.NotFoundError`) will be raised. If you wish to return -`None` instead just pass in `ignore=404` to suppress the exception: - -[source,python] ----- -p = Post.get(id='not-in-es', ignore=404) -p is None ----- - -When you wish to retrieve multiple documents at the same time by their -`id` you can use the `mget` method: - -[source,python] ----- -posts = Post.mget([42, 47, 256]) ----- - -`mget` will, by default, raise a `NotFoundError` if any of the documents -wasn't found and `RequestError` if any of the document had resulted in -error. You can control this behavior by setting parameters: - -- `raise_on_error`: - If `True` (default) then any error will cause an exception to be - raised. Otherwise all documents containing errors will be treated as - missing. -- `missing`: - Can have three possible values: `'none'` (default), `'raise'` and - `'skip'`. If a document is missing or errored it will either be - replaced with `None`, an exception will be raised or the document will - be skipped in the output list entirely. - -The index associated with the `Document` is accessible via the -`_index` class property which gives you access to the `index` class. - -The `_index` attribute is also home to the `load_mappings` -method which will update the mapping on the `Index` from elasticsearch. -This is very useful if you use dynamic mappings and want the class to be -aware of those fields (for example if you wish the `Date` fields to be -properly (de)serialized): - -[source,python] ----- -Post._index.load_mappings() ----- - -To delete a document just call its `delete` method: - -[source,python] ----- -first = Post.get(id=42) -first.delete() ----- - -====== Analysis - -To specify `analyzer` values for `Text` fields you can just use the name -of the analyzer (as a string) and either rely on the analyzer being -defined (like built-in analyzers) or define the analyzer yourself -manually. - -Alternatively you can create your own analyzer and have the persistence -layer handle its creation, from our example earlier: - -[source,python] ----- -from elasticsearch.dsl import analyzer, tokenizer - -my_analyzer = analyzer('my_analyzer', - tokenizer=tokenizer('trigram', 'nGram', min_gram=3, max_gram=3), - filter=['lowercase'] -) ----- - -Each analysis object needs to have a name (`my_analyzer` and -`trigram` in our example) and tokenizers, token filters and char filters -also need to specify type (`nGram` in our example). - -Once you have an instance of a custom `analyzer` you can also call the -https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html[analyze -API] on it by using the `simulate` method: - -[source,python] ----- -response = my_analyzer.simulate('Hello World!') - -# ['hel', 'ell', 'llo', 'lo ', 'o w', ' wo', 'wor', 'orl', 'rld', 'ld!'] -tokens = [t.token for t in response.tokens] ----- - -[NOTE] -==== -When creating a mapping which relies on a custom analyzer the index must -either not exist or be closed. To create multiple `Document`-defined -mappings you can use the `index` object. -==== - -====== Search - -To search for this document type, use the `search` class method: - -[source,python] ----- -# by calling .search we get back a standard Search object -s = Post.search() -# the search is already limited to the index and doc_type of our document -s = s.filter('term', published=True).query('match', title='first') - - -results = s.execute() - -# when you execute the search the results are wrapped in your document class (Post) -for post in results: - print(post.meta.score, post.title) ----- - -Alternatively you can just take a `Search` object and restrict it to -return our document type, wrapped in correct class: - -[source,python] ----- -s = Search() -s = s.doc_type(Post) ----- - -You can also combine document classes with standard doc types (just -strings), which will be treated as before. You can also pass in multiple -`Document` subclasses and each document in the response will be wrapped -in it's class. - -If you want to run suggestions, just use the `suggest` method on the -`Search` object: - -[source,python] ----- -s = Post.search() -s = s.suggest('title_suggestions', 'pyth', completion={'field': 'title_suggest'}) - -response = s.execute() - -for result in response.suggest.title_suggestions: - print('Suggestions for %s:' % result.text) - for option in result.options: - print(' %s (%r)' % (option.text, option.payload)) ----- - -====== `class Meta` options - -In the `Meta` class inside your document definition you can define -various metadata for your document: - -- `mapping`: - optional instance of `Mapping` class to use as base for the mappings - created from the fields on the document class itself. - -Any attributes on the `Meta` class that are instance of `MetaField` will -be used to control the mapping of the meta fields (`_all`, `dynamic` -etc). Just name the parameter (without the leading underscore) as the -field you wish to map and pass any parameters to the `MetaField` class: - -[source,python] ----- -class Post(Document): - title = Text() - - class Meta: - all = MetaField(enabled=False) - dynamic = MetaField('strict') ----- - -====== `class Index` options - -This section of the `Document` definition can contain any information -about the index, its name, settings and other attributes: - -- `name`: - name of the index to use, if it contains a wildcard (`*`) then it - cannot be used for any write operations and an `index` kwarg will have - to be passed explicitly when calling methods like `.save()`. -- `using`: - default connection alias to use, defaults to `'default'` -- `settings`: - dictionary containing any settings for the `Index` object like - `number_of_shards`. -- `analyzers`: - additional list of analyzers that should be defined on an index (see - `analysis` for details). -- `aliases`: - dictionary with any aliases definitions - -====== Document Inheritance - -You can use standard Python inheritance to extend models, this can be -useful in a few scenarios. For example if you want to have a -`BaseDocument` defining some common fields that several different -`Document` classes should share: - -[source,python] ----- -class User(InnerDoc): - username = Text(fields={'keyword': Keyword()}) - email = Text() - -class BaseDocument(Document): - created_by = Object(User) - created_date = Date() - last_updated = Date() - - def save(**kwargs): - if not self.created_date: - self.created_date = datetime.now() - self.last_updated = datetime.now() - return super(BaseDocument, self).save(**kwargs) - -class BlogPost(BaseDocument): - class Index: - name = 'blog' ----- - -Another use case would be using the -https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html[join -type] to have multiple different entities in a single index. You can see -an -https://github.com/elastic/elasticsearch-py/blob/master/examples/dsl/parent_child.py[example] -of this approach. Note that in this case, if the subclasses don't define -their own [.title-ref]#Index# classes, the mappings are merged and -shared between all the subclasses. - -===== Index - -In typical scenario using `class Index` on a `Document` class is -sufficient to perform any action. In a few cases though it can be useful -to manipulate an `Index` object directly. - -`Index` is a class responsible for holding all the metadata related to -an index in elasticsearch - mappings and settings. It is most useful -when defining your mappings since it allows for easy creation of -multiple mappings at the same time. This is especially useful when -setting up your elasticsearch objects in a migration: - -[source,python] ----- -from elasticsearch.dsl import Index, Document, Text, analyzer - -blogs = Index('blogs') - -# define custom settings -blogs.settings( - number_of_shards=1, - number_of_replicas=0 -) - -# define aliases -blogs.aliases( - old_blogs={} -) - -# register a document with the index -blogs.document(Post) - -# can also be used as class decorator when defining the Document -@blogs.document -class Post(Document): - title = Text() - -# You can attach custom analyzers to the index - -html_strip = analyzer('html_strip', - tokenizer="standard", - filter=["standard", "lowercase", "stop", "snowball"], - char_filter=["html_strip"] -) - -blogs.analyzer(html_strip) - -# delete the index, ignore if it doesn't exist -blogs.delete(ignore=404) - -# create the index in elasticsearch -blogs.create() ----- - -You can also set up a template for your indices and use the `clone` -method to create specific copies: - -[source,python] ----- -blogs = Index('blogs', using='production') -blogs.settings(number_of_shards=2) -blogs.document(Post) - -# create a copy of the index with different name -company_blogs = blogs.clone('company-blogs') - -# create a different copy on different cluster -dev_blogs = blogs.clone('blogs', using='dev') -# and change its settings -dev_blogs.setting(number_of_shards=1) ----- - -[[index-template]] -====== IndexTemplate - -The DSL module also exposes an option to manage -https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html[index -templates] in elasticsearch using the `IndexTemplate` class which has -very similar API to `Index`. - -Once an index template is saved in elasticsearch it's contents will be -automatically applied to new indices (existing indices are completely -unaffected by templates) that match the template pattern (any index -starting with `blogs-` in our example), even if the index is created -automatically upon indexing a document into that index. - -Potential workflow for a set of time based indices governed by a single -template: - -[source,python] ----- -from datetime import datetime - -from elasticsearch.dsl import Document, Date, Text - - -class Log(Document): - content = Text() - timestamp = Date() - - class Index: - name = "logs-*" - settings = { - "number_of_shards": 2 - } - - def save(self, **kwargs): - # assign now if no timestamp given - if not self.timestamp: - self.timestamp = datetime.now() - - # override the index to go to the proper timeslot - kwargs['index'] = self.timestamp.strftime('logs-%Y%m%d') - return super().save(**kwargs) - -# once, as part of application setup, during deploy/migrations: -logs = Log._index.as_template('logs', order=0) -logs.save() - -# to perform search across all logs: -search = Log.search() ----- - diff --git a/docs/guide/dsl/search_dsl.asciidoc b/docs/guide/dsl/search_dsl.asciidoc deleted file mode 100644 index dfc3b256a..000000000 --- a/docs/guide/dsl/search_dsl.asciidoc +++ /dev/null @@ -1,704 +0,0 @@ -[[search_dsl]] -==== Search DSL - -===== The `Search` object - -The `Search` object represents the entire search request: - -* queries -* filters -* aggregations -* k-nearest neighbor searches -* sort -* pagination -* highlighting -* suggestions -* collapsing -* additional parameters -* associated client - -The API is designed to be chainable. With the exception of the -aggregations functionality this means that the `Search` object is -immutable -all changes to the object will result in a shallow copy being -created which contains the changes. This means you can safely pass the -`Search` object to foreign code without fear of it modifying your -objects as long as it sticks to the `Search` object APIs. - -You can pass an instance of the -https://elasticsearch-py.readthedocs.io/[elasticsearch client] when -instantiating the `Search` object: - -[source,python] ----- -from elasticsearch import Elasticsearch -from elasticsearch.dsl import Search - -client = Elasticsearch() - -s = Search(using=client) ----- - -You can also define the client at a later time (for more options see the -`configuration` chapter): - -[source,python] ----- -s = s.using(client) ----- - -[NOTE] -==== -All methods return a _copy_ of the object, making it safe to pass to -outside code. -==== - -The API is chainable, allowing you to combine multiple method calls in -one statement: - -[source,python] ----- -s = Search().using(client).query("match", title="python") ----- - -To send the request to Elasticsearch: - -[source,python] ----- -response = s.execute() ----- - -If you just want to iterate over the hits returned by your search you -can iterate over the `Search` object: - -[source,python] ----- -for hit in s: - print(hit.title) ----- - -Search results will be cached. Subsequent calls to `execute` or trying -to iterate over an already executed `Search` object will not trigger -additional requests being sent to Elasticsearch. To force a request -specify `ignore_cache=True` when calling `execute`. - -For debugging purposes you can serialize the `Search` object to a `dict` -explicitly: - -[source,python] ----- -print(s.to_dict()) ----- - -====== Delete By Query - -You can delete the documents matching a search by calling `delete` on -the `Search` object instead of `execute` like this: - -[source,python] ----- -s = Search(index='i').query("match", title="python") -response = s.delete() ----- - -====== Queries - -The library provides classes for all Elasticsearch query types. Pass all -the parameters as keyword arguments. The classes accept any keyword -arguments, the dsl then takes all arguments passed to the constructor -and serializes them as top-level keys in the resulting dictionary (and -thus the resulting json being sent to elasticsearch). This means that -there is a clear one-to-one mapping between the raw query and its -equivalent in the DSL: - -[source,python] ----- -from elasticsearch.dsl.query import MultiMatch, Match - -# {"multi_match": {"query": "python django", "fields": ["title", "body"]}} -MultiMatch(query='python django', fields=['title', 'body']) - -# {"match": {"title": {"query": "web framework", "type": "phrase"}}} -Match(title={"query": "web framework", "type": "phrase"}) ----- - -[NOTE] -==== -In some cases this approach is not possible due to python's restriction -on identifiers - for example if your field is called `@timestamp`. In -that case you have to fall back to unpacking a dictionary: -`Range(*+ {'@timestamp': {'lt': 'now'}})` -==== - -You can use the `Q` shortcut to construct the instance using a name with -parameters or the raw `dict`: - -[source,python] ----- -from elasticsearch.dsl import Q - -Q("multi_match", query='python django', fields=['title', 'body']) -Q({"multi_match": {"query": "python django", "fields": ["title", "body"]}}) ----- - -To add the query to the `Search` object, use the `.query()` method: - -[source,python] ----- -q = Q("multi_match", query='python django', fields=['title', 'body']) -s = s.query(q) ----- - -The method also accepts all the parameters as the `Q` shortcut: - -[source,python] ----- -s = s.query("multi_match", query='python django', fields=['title', 'body']) ----- - -If you already have a query object, or a `dict` representing one, you -can just override the query used in the `Search` object: - -[source,python] ----- -s.query = Q('bool', must=[Q('match', title='python'), Q('match', body='best')]) ----- - -====== Dotted fields - -Sometimes you want to refer to a field within another field, either as a -multi-field (`title.keyword`) or in a structured `json` document like -`address.city`. To make it easier, the `Q` shortcut (as well as the -`query`, `filter`, and `exclude` methods on `Search` class) allows you -to use `_+` (double underscore) in place of a dot in a keyword -argument: - -[source,python] ----- -s = Search() -s = s.filter('term', category__keyword='Python') -s = s.query('match', address__city='prague') ----- - -Alternatively you can always fall back to python's kwarg unpacking if -you prefer: - -[source,python] ----- -s = Search() -s = s.filter('term', **{'category.keyword': 'Python'}) -s = s.query('match', **{'address.city': 'prague'}) ----- - -====== Query combination - -Query objects can be combined using logical operators: - -[source,python] ----- -Q("match", title='python') | Q("match", title='django') -# {"bool": {"should": [...]}} - -Q("match", title='python') & Q("match", title='django') -# {"bool": {"must": [...]}} - -~Q("match", title="python") -# {"bool": {"must_not": [...]}} ----- - -When you call the `.query()` method multiple times, the `&` operator -will be used internally: - -[source,python] ----- -s = s.query().query() -print(s.to_dict()) -# {"query": {"bool": {...}}} ----- - -If you want to have precise control over the query form, use the `Q` -shortcut to directly construct the combined query: - -[source,python] ----- -q = Q('bool', - must=[Q('match', title='python')], - should=[Q(...), Q(...)], - minimum_should_match=1 -) -s = Search().query(q) ----- - -====== Filters - -If you want to add a query in a -https://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-filter-context.html[filter -context] you can use the `filter()` method to make things easier: - -[source,python] ----- -s = Search() -s = s.filter('terms', tags=['search', 'python']) ----- - -Behind the scenes this will produce a `Bool` query and place the -specified `terms` query into its `filter` branch, making it equivalent -to: - -[source,python] ----- -s = Search() -s = s.query('bool', filter=[Q('terms', tags=['search', 'python'])]) ----- - -If you want to use the post_filter element for faceted navigation, -use the `.post_filter()` method. - -You can also `exclude()` items from your query like this: - -[source,python] ----- -s = Search() -s = s.exclude('terms', tags=['search', 'python']) ----- - -which is shorthand for: -`s = s.query('bool', filter=[~Q('terms', tags=['search', 'python'])])` - -====== Aggregations - -To define an aggregation, you can use the `A` shortcut: - -[source,python] ----- -from elasticsearch.dsl import A - -A('terms', field='tags') -# {"terms": {"field": "tags"}} ----- - -To nest aggregations, you can use the `.bucket()`, `.metric()` and -`.pipeline()` methods: - -[source,python] ----- -a = A('terms', field='category') -# {'terms': {'field': 'category'}} - -a.metric('clicks_per_category', 'sum', field='clicks')\ - .bucket('tags_per_category', 'terms', field='tags') -# { -# 'terms': {'field': 'category'}, -# 'aggs': { -# 'clicks_per_category': {'sum': {'field': 'clicks'}}, -# 'tags_per_category': {'terms': {'field': 'tags'}} -# } -# } ----- - -To add aggregations to the `Search` object, use the `.aggs` property, -which acts as a top-level aggregation: - -[source,python] ----- -s = Search() -a = A('terms', field='category') -s.aggs.bucket('category_terms', a) -# { -# 'aggs': { -# 'category_terms': { -# 'terms': { -# 'field': 'category' -# } -# } -# } -# } ----- - -or - -[source,python] ----- -s = Search() -s.aggs.bucket('articles_per_day', 'date_histogram', field='publish_date', interval='day')\ - .metric('clicks_per_day', 'sum', field='clicks')\ - .pipeline('moving_click_average', 'moving_avg', buckets_path='clicks_per_day')\ - .bucket('tags_per_day', 'terms', field='tags') - -s.to_dict() -# { -# "aggs": { -# "articles_per_day": { -# "date_histogram": { "interval": "day", "field": "publish_date" }, -# "aggs": { -# "clicks_per_day": { "sum": { "field": "clicks" } }, -# "moving_click_average": { "moving_avg": { "buckets_path": "clicks_per_day" } }, -# "tags_per_day": { "terms": { "field": "tags" } } -# } -# } -# } -# } ----- - -You can access an existing bucket by its name: - -[source,python] ----- -s = Search() - -s.aggs.bucket('per_category', 'terms', field='category') -s.aggs['per_category'].metric('clicks_per_category', 'sum', field='clicks') -s.aggs['per_category'].bucket('tags_per_category', 'terms', field='tags') ----- - -[NOTE] -==== -When chaining multiple aggregations, there is a difference between what -`.bucket()` and `.metric()` methods return - `.bucket()` returns the -newly defined bucket while `.metric()` returns its parent bucket to -allow further chaining. -==== - -As opposed to other methods on the `Search` objects, defining -aggregations is done in-place (does not return a copy). - -====== K-Nearest Neighbor Searches - -To issue a kNN search, use the `.knn()` method: - -[source,python] ----- -s = Search() -vector = get_embedding("search text") - -s = s.knn( - field="embedding", - k=5, - num_candidates=10, - query_vector=vector -) ----- - -The `field`, `k` and `num_candidates` arguments can be given as -positional or keyword arguments and are required. In addition to these, -`query_vector` or `query_vector_builder` must be given as -well. - -The `.knn()` method can be invoked multiple times to include multiple -kNN searches in the request. - -====== Sorting - -To specify sorting order, use the `.sort()` method: - -[source,python] ----- -s = Search().sort( - 'category', - '-title', - {"lines" : {"order" : "asc", "mode" : "avg"}} -) ----- - -It accepts positional arguments which can be either strings or -dictionaries. String value is a field name, optionally prefixed by the -`-` sign to specify a descending order. - -To reset the sorting, just call the method with no arguments: - -[source,python] ----- -s = s.sort() ----- - -====== Pagination - -To specify the from/size parameters, use the Python slicing API: - -[source,python] ----- -s = s[10:20] -# {"from": 10, "size": 10} - -s = s[:20] -# {"size": 20} - -s = s[10:] -# {"from": 10} - -s = s[10:20][2:] -# {"from": 12, "size": 8} ----- - -If you want to access all the documents matched by your query you can -use the `scan` method which uses the scan/scroll elasticsearch API: - -[source,python] ----- -for hit in s.scan(): - print(hit.title) ----- - -Note that in this case the results won't be sorted. - -====== Highlighting - -To set common attributes for highlighting use the -`highlight_options` method: - -[source,python] ----- -s = s.highlight_options(order='score') ----- - -Enabling highlighting for individual fields is done using the -`highlight` method: - -[source,python] ----- -s = s.highlight('title') -# or, including parameters: -s = s.highlight('title', fragment_size=50) ----- - -The fragments in the response will then be available on each `Result` -object as `.meta.highlight.FIELD` which will contain the list of -fragments: - -[source,python] ----- -response = s.execute() -for hit in response: - for fragment in hit.meta.highlight.title: - print(fragment) ----- - -====== Suggestions - -To specify a suggest request on your `Search` object use the `suggest` -method: - -[source,python] ----- -# check for correct spelling -s = s.suggest('my_suggestion', 'pyhton', term={'field': 'title'}) ----- - -The first argument is the name of the suggestions (name under which it -will be returned), second is the actual text you wish the suggester to -work on and the keyword arguments will be added to the suggest's json -as-is which means that it should be one of `term`, `phrase` or -`completion` to indicate which type of suggester should be used. - -====== Collapsing - -To collapse search results use the `collapse` method on your `Search` -object: - -[source,python] ----- -s = Search().query("match", message="GET /search") -# collapse results by user_id -s = s.collapse("user_id") ----- - -The top hits will only include one result per `user_id`. You can -also expand each collapsed top hit with the `inner_hits` parameter, -`max_concurrent_group_searches` being the number of -concurrent requests allowed to retrieve the inner hits per group: - -[source,python] ----- -inner_hits = {"name": "recent_search", "size": 5, "sort": [{"@timestamp": "desc"}]} -s = s.collapse("user_id", inner_hits=inner_hits, max_concurrent_group_searches=4) ----- - -====== More Like This Query - -To use Elasticsearch's `more_like_this` functionality, you can use -the MoreLikeThis query type. - -A simple example is below - -[source,python] ----- -from elasticsearch.dsl.query import MoreLikeThis -from elasticsearch.dsl import Search - -my_text = 'I want to find something similar' - -s = Search() -# We're going to match based only on two fields, in this case text and title -s = s.query(MoreLikeThis(like=my_text, fields=['text', 'title'])) -# You can also exclude fields from the result to make the response quicker in the normal way -s = s.source(exclude=["text"]) -response = s.execute() - -for hit in response: - print(hit.title) ----- - -====== Extra properties and parameters - -To set extra properties of the search request, use the `.extra()` -method. This can be used to define keys in the body that cannot be -defined via a specific API method like `explain` or `search_after`: - -[source,python] ----- -s = s.extra(explain=True) ----- - -To set query parameters, use the `.params()` method: - -[source,python] ----- -s = s.params(routing="42") ----- - -If you need to limit the fields being returned by elasticsearch, use the -`source()` method: - -[source,python] ----- -# only return the selected fields -s = s.source(['title', 'body']) -# don't return any fields, just the metadata -s = s.source(False) -# explicitly include/exclude fields -s = s.source(includes=["title"], excludes=["user.*"]) -# reset the field selection -s = s.source(None) ----- - -====== Serialization and Deserialization - -The search object can be serialized into a dictionary by using the -`.to_dict()` method. - -You can also create a `Search` object from a `dict` using the -`from_dict` class method. This will create a new `Search` object and -populate it using the data from the dict: - -[source,python] ----- -s = Search.from_dict({"query": {"match": {"title": "python"}}}) ----- - -If you wish to modify an existing `Search` object, overriding it's -properties, instead use the `update_from_dict` method that -alters an instance *in-place*: - -[source,python] ----- -s = Search(index='i') -s.update_from_dict({"query": {"match": {"title": "python"}}, "size": 42}) ----- - -===== Response - -You can execute your search by calling the `.execute()` method that will -return a `Response` object. The `Response` object allows you access to -any key from the response dictionary via attribute access. It also -provides some convenient helpers: - -[source,python] ----- -response = s.execute() - -print(response.success()) -# True - -print(response.took) -# 12 - -print(response.hits.total.relation) -# eq -print(response.hits.total.value) -# 142 - -print(response.suggest.my_suggestions) ----- - -If you want to inspect the contents of the `response` objects, just use -its `to_dict` method to get access to the raw data for pretty -printing. - -====== Hits - -To access to the hits returned by the search, access the `hits` property -or just iterate over the `Response` object: - -[source,python] ----- -response = s.execute() -print('Total %d hits found.' % response.hits.total) -for h in response: - print(h.title, h.body) ----- - -[NOTE] -==== -If you are only seeing partial results (e.g. 10000 or even 10 results), -consider using the option `s.extra(track_total_hits=True)` to -get a full hit count. -==== - -====== Result - -The individual hits is wrapped in a convenience class that allows -attribute access to the keys in the returned dictionary. All the -metadata for the results are accessible via `meta` (without the leading -`_`): - -[source,python] ----- -response = s.execute() -h = response.hits[0] -print('/%s/%s/%s returned with score %f' % ( - h.meta.index, h.meta.doc_type, h.meta.id, h.meta.score)) ----- - -[NOTE] -==== -If your document has a field called `meta` you have to access it using -the get item syntax: `hit['meta']`. -==== - -====== Aggregations - -Aggregations are available through the `aggregations` property: - -[source,python] ----- -for tag in response.aggregations.per_tag.buckets: - print(tag.key, tag.max_lines.value) ----- - -===== `MultiSearch` - -If you need to execute multiple searches at the same time you can use -the `MultiSearch` class which will use the `_msearch` API: - -[source,python] ----- -from elasticsearch.dsl import MultiSearch, Search - -ms = MultiSearch(index='blogs') - -ms = ms.add(Search().filter('term', tags='python')) -ms = ms.add(Search().filter('term', tags='elasticsearch')) - -responses = ms.execute() - -for response in responses: - print("Results for query %r." % response._search.query) - for hit in response: - print(hit.title) ----- - -===== `EmptySearch` - -The `EmptySearch` class can be used as a fully compatible version of -`Search` that will return no results, regardless of any queries -configured. - diff --git a/docs/guide/dsl/tutorials.asciidoc b/docs/guide/dsl/tutorials.asciidoc deleted file mode 100644 index 1b5ff0e2c..000000000 --- a/docs/guide/dsl/tutorials.asciidoc +++ /dev/null @@ -1,251 +0,0 @@ -=== Tutorials - -==== Search - -Let's have a typical search request written directly as a `dict`: - -[source,python] ----- -from elasticsearch import Elasticsearch -client = Elasticsearch("https://localhost:9200") - -response = client.search( - index="my-index", - body={ - "query": { - "bool": { - "must": [{"match": {"title": "python"}}], - "must_not": [{"match": {"description": "beta"}}], - "filter": [{"term": {"category": "search"}}] - } - }, - "aggs" : { - "per_tag": { - "terms": {"field": "tags"}, - "aggs": { - "max_lines": {"max": {"field": "lines"}} - } - } - } - } -) - -for hit in response['hits']['hits']: - print(hit['_score'], hit['_source']['title']) - -for tag in response['aggregations']['per_tag']['buckets']: - print(tag['key'], tag['max_lines']['value']) ----- - -The problem with this approach is that it is very verbose, prone to -syntax mistakes like incorrect nesting, hard to modify (eg. adding -another filter) and definitely not fun to write. - -Let's rewrite the example using the DSL module: - -[source,python] ----- -from elasticsearch import Elasticsearch -from elasticsearch.dsl import Search - -client = Elasticsearch("https://localhost:9200") - -s = Search(using=client, index="my-index") \ - .filter("term", category="search") \ - .query("match", title="python") \ - .exclude("match", description="beta") - -s.aggs.bucket('per_tag', 'terms', field='tags') \ - .metric('max_lines', 'max', field='lines') - -response = s.execute() - -for hit in response: - print(hit.meta.score, hit.title) - -for tag in response.aggregations.per_tag.buckets: - print(tag.key, tag.max_lines.value) ----- - -As you see, the library took care of: - -* creating appropriate `Query` objects by name (eq. "match") -* composing queries into a compound `bool` query -* putting the `term` query in a filter context of the `bool` query -* providing a convenient access to response data -* no curly or square brackets everywhere - -==== Persistence - -Let's have a simple Python class representing an article in a blogging -system: - -[source,python] ----- -from datetime import datetime -from elasticsearch.dsl import Document, Date, Integer, Keyword, Text, connections - -# Define a default Elasticsearch client -connections.create_connection(hosts="https://localhost:9200") - -class Article(Document): - title = Text(analyzer='snowball', fields={'raw': Keyword()}) - body = Text(analyzer='snowball') - tags = Keyword() - published_from = Date() - lines = Integer() - - class Index: - name = 'blog' - settings = { - "number_of_shards": 2, - } - - def save(self, ** kwargs): - self.lines = len(self.body.split()) - return super(Article, self).save(** kwargs) - - def is_published(self): - return datetime.now() > self.published_from - -# create the mappings in elasticsearch -Article.init() - -# create and save and article -article = Article(meta={'id': 42}, title='Hello world!', tags=['test']) -article.body = ''' looong text ''' -article.published_from = datetime.now() -article.save() - -article = Article.get(id=42) -print(article.is_published()) - -# Display cluster health -print(connections.get_connection().cluster.health()) ----- - -In this example you can see: - -* providing a default connection -* defining fields with mapping configuration -* setting index name -* defining custom methods -* overriding the built-in `.save()` method to hook into the persistence -life cycle -* retrieving and saving the object into Elasticsearch -* accessing the underlying client for other APIs - -You can see more in the `persistence` chapter. - -==== Pre-built Faceted Search - -If you have your `Document`s defined you can very easily create a -faceted search class to simplify searching and filtering. - -[NOTE] -==== -This feature is experimental and may be subject to change. -==== - -[source,python] ----- -from elasticsearch.dsl import FacetedSearch, TermsFacet, DateHistogramFacet - -class BlogSearch(FacetedSearch): - doc_types = [Article, ] - # fields that should be searched - fields = ['tags', 'title', 'body'] - - facets = { - # use bucket aggregations to define facets - 'tags': TermsFacet(field='tags'), - 'publishing_frequency': DateHistogramFacet(field='published_from', interval='month') - } - -# empty search -bs = BlogSearch() -response = bs.execute() - -for hit in response: - print(hit.meta.score, hit.title) - -for (tag, count, selected) in response.facets.tags: - print(tag, ' (SELECTED):' if selected else ':', count) - -for (month, count, selected) in response.facets.publishing_frequency: - print(month.strftime('%B %Y'), ' (SELECTED):' if selected else ':', count) ----- - -You can find more details in the `faceted_search` chapter. - -==== Update By Query - -Let's resume the simple example of articles on a blog, and let's assume -that each article has a number of likes. For this example, imagine we -want to increment the number of likes by 1 for all articles that match a -certain tag and do not match a certain description. Writing this as a -`dict`, we would have the following code: - -[source,python] ----- -from elasticsearch import Elasticsearch -client = Elasticsearch() - -response = client.update_by_query( - index="my-index", - body={ - "query": { - "bool": { - "must": [{"match": {"tag": "python"}}], - "must_not": [{"match": {"description": "beta"}}] - } - }, - "script"={ - "source": "ctx._source.likes++", - "lang": "painless" - } - }, - ) ----- - -Using the DSL, we can now express this query as such: - -[source,python] ----- -from elasticsearch import Elasticsearch -from elasticsearch.dsl import Search, UpdateByQuery - -client = Elasticsearch() -ubq = UpdateByQuery(using=client, index="my-index") \ - .query("match", title="python") \ - .exclude("match", description="beta") \ - .script(source="ctx._source.likes++", lang="painless") - -response = ubq.execute() ----- - -As you can see, the `Update By Query` object provides many of the -savings offered by the `Search` object, and additionally allows one to -update the results of the search based on a script assigned in the same -manner. - -==== Migration from the standard client - -You don't have to port your entire application to get the benefits of -the DSL module, you can start gradually by creating a `Search` object -from your existing `dict`, modifying it using the API and serializing it -back to a `dict`: - -[source,python] ----- -body = {...} # insert complicated query here - -# Convert to Search object -s = Search.from_dict(body) - -# Add some filters, aggregations, queries, ... -s.filter("term", tags="python") - -# Convert back to dict to plug back into existing code -body = s.to_dict() ----- diff --git a/docs/guide/dsl/update_by_query.asciidoc b/docs/guide/dsl/update_by_query.asciidoc deleted file mode 100644 index b4a550a77..000000000 --- a/docs/guide/dsl/update_by_query.asciidoc +++ /dev/null @@ -1,168 +0,0 @@ -[[update_by_query]] -==== Update By Query - -===== The `Update By Query` object - -The `Update By Query` object enables the use of the -https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html[_update_by_query] -endpoint to perform an update on documents that match a search query. - -The object is implemented as a modification of the `Search` object, -containing a subset of its query methods, as well as a script method, -which is used to make updates. - -The `Update By Query` object implements the following `Search` query -types: - -* queries -* filters -* excludes - -For more information on queries, see the `search_dsl` chapter. - -Like the `Search` object, the API is designed to be chainable. This -means that the `Update By Query` object is immutable: all changes to the -object will result in a shallow copy being created which contains the -changes. This means you can safely pass the `Update By Query` object to -foreign code without fear of it modifying your objects as long as it -sticks to the `Update By Query` object APIs. - -You can define your client in a number of ways, but the preferred method -is to use a global configuration. For more information on defining a -client, see the `configuration` chapter. - -Once your client is defined, you can instantiate a copy of the -`Update By Query` object as seen below: - -[source,python] ----- -from elasticsearch.dsl import UpdateByQuery - -ubq = UpdateByQuery().using(client) -# or -ubq = UpdateByQuery(using=client) ----- - -[NOTE] -==== -All methods return a _copy_ of the object, making it safe to pass to -outside code. -==== - -The API is chainable, allowing you to combine multiple method calls in -one statement: - -[source,python] ----- -ubq = UpdateByQuery().using(client).query("match", title="python") ----- - -To send the request to Elasticsearch: - -[source,python] ----- -response = ubq.execute() ----- - -It should be noted, that there are limits to the chaining using the -script method: calling script multiple times will overwrite the previous -value. That is, only a single script can be sent with a call. An attempt -to use two scripts will result in only the second script being stored. - -Given the below example: - -[source,python] ----- -ubq = UpdateByQuery() \ - .using(client) \ - .script(source="ctx._source.likes++") \ - .script(source="ctx._source.likes+=2") ----- - -This means that the stored script by this client will be -`'source': 'ctx._source.likes{plus}=2'` and the previous call will -not be stored. - -For debugging purposes you can serialize the `Update By Query` object to -a `dict` explicitly: - -[source,python] ----- -print(ubq.to_dict()) ----- - -Also, to use variables in script see below example: - -[source,python] ----- -ubq.script( - source="ctx._source.messages.removeIf(x -> x.somefield == params.some_var)", - params={ - 'some_var': 'some_string_val' - } -) ----- - -====== Serialization and Deserialization - -The search object can be serialized into a dictionary by using the -`.to_dict()` method. - -You can also create a `Update By Query` object from a `dict` using the -`from_dict` class method. This will create a new `Update By Query` -object and populate it using the data from the dict: - -[source,python] ----- -ubq = UpdateByQuery.from_dict({"query": {"match": {"title": "python"}}}) ----- - -If you wish to modify an existing `Update By Query` object, overriding -it's properties, instead use the `update_from_dict` method that -alters an instance *in-place*: - -[source,python] ----- -ubq = UpdateByQuery(index='i') -ubq.update_from_dict({"query": {"match": {"title": "python"}}, "size": 42}) ----- - -====== Extra properties and parameters - -To set extra properties of the search request, use the `.extra()` -method. This can be used to define keys in the body that cannot be -defined via a specific API method like `explain`: - -[source,python] ----- -ubq = ubq.extra(explain=True) ----- - -To set query parameters, use the `.params()` method: - -[source,python] ----- -ubq = ubq.params(routing="42") ----- - -===== Response - -You can execute your search by calling the `.execute()` method that will -return a `Response` object. The `Response` object allows you access to -any key from the response dictionary via attribute access. It also -provides some convenient helpers: - -[source,python] ----- -response = ubq.execute() - -print(response.success()) -# True - -print(response.took) -# 12 ----- - -If you want to inspect the contents of the `response` objects, just use -its `to_dict` method to get access to the raw data for pretty -printing. diff --git a/docs/guide/elasticsearch-dsl.asciidoc b/docs/guide/elasticsearch-dsl.asciidoc deleted file mode 100644 index bd3fb5d19..000000000 --- a/docs/guide/elasticsearch-dsl.asciidoc +++ /dev/null @@ -1,48 +0,0 @@ -[[elasticsearch-dsl]] -== Elasticsearch Python DSL - -Elasticsearch DSL is a module of the official Python client that aims to help -with writing and running queries against Elasticsearch in a more convenient and -idiomatic way. It stays close to the Elasticsearch JSON DSL, mirroring its -terminology and structure. It exposes the whole range of the DSL from -Python either directly using defined classes or a queryset-like -expressions. Here is an example: - -[source,python] -.... -from elasticsearch.dsl import Search - -s = Search(index="my-index") \ - .filter("term", category="search") \ - .query("match", title="python") \ - .exclude("match", description="beta") -for hit in s: - print(hit.title) -.... - -Or with asynchronous Python: - -[source,python] -.... -from elasticsearch.dsl import AsyncSearch - -async def run_query(): - s = AsyncSearch(index="my-index") \ - .filter("term", category="search") \ - .query("match", title="python") \ - .exclude("match", description="beta") - async for hit in s: - print(hit.title) -.... - -It also provides an optional wrapper for working with documents as -Python objects: defining mappings, retrieving and saving documents, -wrapping the document data in user-defined classes. - -To use the other Elasticsearch APIs (eg. cluster health) just use the -regular client. - -include::dsl/configuration.asciidoc[] -include::dsl/tutorials.asciidoc[] -include::dsl/howto.asciidoc[] -include::dsl/examples.asciidoc[] diff --git a/docs/guide/esql-pandas.asciidoc b/docs/guide/esql-pandas.asciidoc deleted file mode 100644 index 94887745c..000000000 --- a/docs/guide/esql-pandas.asciidoc +++ /dev/null @@ -1,453 +0,0 @@ -[[esql-pandas]] -=== ES|QL and Pandas - -The {ref}/esql.html[Elasticsearch Query Language (ES|QL)] provides a powerful -way to filter, transform, and analyze data stored in {es}. Designed to be easy -to learn and use, it is a perfect fit for data scientists familiar with Pandas -and other dataframe-based libraries. ES|QL queries produce tables with named -columns, which is the definition of dataframes. - -This page shows you an example of using ES|QL and Pandas together to work with -dataframes. - -[discrete] -[[import-data]] -==== Import data - -Use the -https://github.com/elastic/elasticsearch/blob/main/x-pack/plugin/esql/qa/testFixtures/src/main/resources/employees.csv[`employees` sample data] and -https://github.com/elastic/elasticsearch/blob/main/x-pack/plugin/esql/qa/testFixtures/src/main/resources/mapping-default.json[mapping]. -The easiest way to load this dataset is to run https://gist.github.com/pquentin/7cf29a5932cf52b293699dd994b1a276[two Elasticsearch API requests] in the Kibana Console. - -.Index mapping request -[%collapsible] -==== -[source,console] --------------------------------------------------- -PUT employees -{ - "mappings": { - "properties": { - "avg_worked_seconds": { - "type": "long" - }, - "birth_date": { - "type": "date" - }, - "emp_no": { - "type": "integer" - }, - "first_name": { - "type": "keyword" - }, - "gender": { - "type": "keyword" - }, - "height": { - "type": "double", - "fields": { - "float": { - "type": "float" - }, - "half_float": { - "type": "half_float" - }, - "scaled_float": { - "type": "scaled_float", - "scaling_factor": 100 - } - } - }, - "hire_date": { - "type": "date" - }, - "is_rehired": { - "type": "boolean" - }, - "job_positions": { - "type": "keyword" - }, - "languages": { - "type": "integer", - "fields": { - "byte": { - "type": "byte" - }, - "long": { - "type": "long" - }, - "short": { - "type": "short" - } - } - }, - "last_name": { - "type": "keyword" - }, - "salary": { - "type": "integer" - }, - "salary_change": { - "type": "double", - "fields": { - "int": { - "type": "integer" - }, - "keyword": { - "type": "keyword" - }, - "long": { - "type": "long" - } - } - }, - "still_hired": { - "type": "boolean" - } - } - } -} --------------------------------------------------- -// TEST[skip:TBD] -==== - -.Bulk request to ingest data -[%collapsible] -==== -[source,console] --------------------------------------------------- -PUT employees/_bulk -{ "index": {}} -{"birth_date":"1953-09-02T00:00:00Z","emp_no":"10001","first_name":"Georgi","gender":"M","hire_date":"1986-06-26T00:00:00Z","languages":"2","last_name":"Facello","salary":"57305","height":"2.03","still_hired":"true","avg_worked_seconds":"268728049","job_positions":["Senior Python Developer","Accountant"],"is_rehired":["false","true"],"salary_change":"1.19"} -{ "index": {}} -{"birth_date":"1964-06-02T00:00:00Z","emp_no":"10002","first_name":"Bezalel","gender":"F","hire_date":"1985-11-21T00:00:00Z","languages":"5","last_name":"Simmel","salary":"56371","height":"2.08","still_hired":"true","avg_worked_seconds":"328922887","job_positions":"Senior Team Lead","is_rehired":["false","false"],"salary_change":["-7.23","11.17"]} -{ "index": {}} -{"birth_date":"1959-12-03T00:00:00Z","emp_no":"10003","first_name":"Parto","gender":"M","hire_date":"1986-08-28T00:00:00Z","languages":"4","last_name":"Bamford","salary":"61805","height":"1.83","still_hired":"false","avg_worked_seconds":"200296405","salary_change":["14.68","12.82"]} -{ "index": {}} -{"birth_date":"1954-05-01T00:00:00Z","emp_no":"10004","first_name":"Chirstian","gender":"M","hire_date":"1986-12-01T00:00:00Z","languages":"5","last_name":"Koblick","salary":"36174","height":"1.78","still_hired":"true","avg_worked_seconds":"311267831","job_positions":["Reporting Analyst","Tech Lead","Head Human Resources","Support Engineer"],"is_rehired":"true","salary_change":["3.65","-0.35","1.13","13.48"]} -{ "index": {}} -{"birth_date":"1955-01-21T00:00:00Z","emp_no":"10005","first_name":"Kyoichi","gender":"M","hire_date":"1989-09-12T00:00:00Z","languages":"1","last_name":"Maliniak","salary":"63528","height":"2.05","still_hired":"true","avg_worked_seconds":"244294991","is_rehired":["false","false","false","true"],"salary_change":["-2.14","13.07"]} -{ "index": {}} -{"birth_date":"1953-04-20T00:00:00Z","emp_no":"10006","first_name":"Anneke","gender":"F","hire_date":"1989-06-02T00:00:00Z","languages":"3","last_name":"Preusig","salary":"60335","height":"1.56","still_hired":"false","avg_worked_seconds":"372957040","job_positions":["Tech Lead","Principal Support Engineer","Senior Team Lead"],"salary_change":"-3.90"} -{ "index": {}} -{"birth_date":"1957-05-23T00:00:00Z","emp_no":"10007","first_name":"Tzvetan","gender":"F","hire_date":"1989-02-10T00:00:00Z","languages":"4","last_name":"Zielinski","salary":"74572","height":"1.70","still_hired":"true","avg_worked_seconds":"393084805","is_rehired":["true","false","true","false"],"salary_change":["-7.06","1.99","0.57"]} -{ "index": {}} -{"birth_date":"1958-02-19T00:00:00Z","emp_no":"10008","first_name":"Saniya","gender":"M","hire_date":"1994-09-15T00:00:00Z","languages":"2","last_name":"Kalloufi","salary":"43906","height":"2.10","still_hired":"true","avg_worked_seconds":"283074758","job_positions":["Senior Python Developer","Junior Developer","Purchase Manager","Internship"],"is_rehired":["true","false"],"salary_change":["12.68","3.54","0.75","-2.92"]} -{ "index": {}} -{"birth_date":"1952-04-19T00:00:00Z","emp_no":"10009","first_name":"Sumant","gender":"F","hire_date":"1985-02-18T00:00:00Z","languages":"1","last_name":"Peac","salary":"66174","height":"1.85","still_hired":"false","avg_worked_seconds":"236805489","job_positions":["Senior Python Developer","Internship"]} -{ "index": {}} -{"birth_date":"1963-06-01T00:00:00Z","emp_no":"10010","first_name":"Duangkaew","hire_date":"1989-08-24T00:00:00Z","languages":"4","last_name":"Piveteau","salary":"45797","height":"1.70","still_hired":"false","avg_worked_seconds":"315236372","job_positions":["Architect","Reporting Analyst","Tech Lead","Purchase Manager"],"is_rehired":["true","true","false","false"],"salary_change":["5.05","-6.77","4.69","12.15"]} -{ "index": {}} -{"birth_date":"1953-11-07T00:00:00Z","emp_no":"10011","first_name":"Mary","hire_date":"1990-01-22T00:00:00Z","languages":"5","last_name":"Sluis","salary":"31120","height":"1.50","still_hired":"true","avg_worked_seconds":"239615525","job_positions":["Architect","Reporting Analyst","Tech Lead","Senior Team Lead"],"is_rehired":["true","true"],"salary_change":["10.35","-7.82","8.73","3.48"]} -{ "index": {}} -{"birth_date":"1960-10-04T00:00:00Z","emp_no":"10012","first_name":"Patricio","hire_date":"1992-12-18T00:00:00Z","languages":"5","last_name":"Bridgland","salary":"48942","height":"1.97","still_hired":"false","avg_worked_seconds":"365510850","job_positions":["Head Human Resources","Accountant"],"is_rehired":["false","true","true","false"],"salary_change":"0.04"} -{ "index": {}} -{"birth_date":"1963-06-07T00:00:00Z","emp_no":"10013","first_name":"Eberhardt","hire_date":"1985-10-20T00:00:00Z","languages":"1","last_name":"Terkki","salary":"48735","height":"1.94","still_hired":"true","avg_worked_seconds":"253864340","job_positions":"Reporting Analyst","is_rehired":["true","true"]} -{ "index": {}} -{"birth_date":"1956-02-12T00:00:00Z","emp_no":"10014","first_name":"Berni","hire_date":"1987-03-11T00:00:00Z","languages":"5","last_name":"Genin","salary":"37137","height":"1.99","still_hired":"false","avg_worked_seconds":"225049139","job_positions":["Reporting Analyst","Data Scientist","Head Human Resources"],"salary_change":["-1.89","9.07"]} -{ "index": {}} -{"birth_date":"1959-08-19T00:00:00Z","emp_no":"10015","first_name":"Guoxiang","hire_date":"1987-07-02T00:00:00Z","languages":"5","last_name":"Nooteboom","salary":"25324","height":"1.66","still_hired":"true","avg_worked_seconds":"390266432","job_positions":["Principal Support Engineer","Junior Developer","Head Human Resources","Support Engineer"],"is_rehired":["true","false","false","false"],"salary_change":["14.25","12.40"]} -{ "index": {}} -{"birth_date":"1961-05-02T00:00:00Z","emp_no":"10016","first_name":"Kazuhito","hire_date":"1995-01-27T00:00:00Z","languages":"2","last_name":"Cappelletti","salary":"61358","height":"1.54","still_hired":"false","avg_worked_seconds":"253029411","job_positions":["Reporting Analyst","Python Developer","Accountant","Purchase Manager"],"is_rehired":["false","false"],"salary_change":["-5.18","7.69"]} -{ "index": {}} -{"birth_date":"1958-07-06T00:00:00Z","emp_no":"10017","first_name":"Cristinel","hire_date":"1993-08-03T00:00:00Z","languages":"2","last_name":"Bouloucos","salary":"58715","height":"1.74","still_hired":"false","avg_worked_seconds":"236703986","job_positions":["Data Scientist","Head Human Resources","Purchase Manager"],"is_rehired":["true","false","true","true"],"salary_change":"-6.33"} -{ "index": {}} -{"birth_date":"1954-06-19T00:00:00Z","emp_no":"10018","first_name":"Kazuhide","hire_date":"1987-04-03T00:00:00Z","languages":"2","last_name":"Peha","salary":"56760","height":"1.97","still_hired":"false","avg_worked_seconds":"309604079","job_positions":"Junior Developer","is_rehired":["false","false","true","true"],"salary_change":["-1.64","11.51","-5.32"]} -{ "index": {}} -{"birth_date":"1953-01-23T00:00:00Z","emp_no":"10019","first_name":"Lillian","hire_date":"1999-04-30T00:00:00Z","languages":"1","last_name":"Haddadi","salary":"73717","height":"2.06","still_hired":"false","avg_worked_seconds":"342855721","job_positions":"Purchase Manager","is_rehired":["false","false"],"salary_change":["-6.84","8.42","-7.26"]} -{ "index": {}} -{"birth_date":"1952-12-24T00:00:00Z","emp_no":"10020","first_name":"Mayuko","gender":"M","hire_date":"1991-01-26T00:00:00Z","last_name":"Warwick","salary":"40031","height":"1.41","still_hired":"false","avg_worked_seconds":"373309605","job_positions":"Tech Lead","is_rehired":["true","true","false"],"salary_change":"-5.81"} -{ "index": {}} -{"birth_date":"1960-02-20T00:00:00Z","emp_no":"10021","first_name":"Ramzi","gender":"M","hire_date":"1988-02-10T00:00:00Z","last_name":"Erde","salary":"60408","height":"1.47","still_hired":"false","avg_worked_seconds":"287654610","job_positions":"Support Engineer","is_rehired":"true"} -{ "index": {}} -{"birth_date":"1952-07-08T00:00:00Z","emp_no":"10022","first_name":"Shahaf","gender":"M","hire_date":"1995-08-22T00:00:00Z","last_name":"Famili","salary":"48233","height":"1.82","still_hired":"false","avg_worked_seconds":"233521306","job_positions":["Reporting Analyst","Data Scientist","Python Developer","Internship"],"is_rehired":["true","false"],"salary_change":["12.09","2.85"]} -{ "index": {}} -{"birth_date":"1953-09-29T00:00:00Z","emp_no":"10023","first_name":"Bojan","gender":"F","hire_date":"1989-12-17T00:00:00Z","last_name":"Montemayor","salary":"47896","height":"1.75","still_hired":"true","avg_worked_seconds":"330870342","job_positions":["Accountant","Support Engineer","Purchase Manager"],"is_rehired":["true","true","false"],"salary_change":["14.63","0.80"]} -{ "index": {}} -{"birth_date":"1958-09-05T00:00:00Z","emp_no":"10024","first_name":"Suzette","gender":"F","hire_date":"1997-05-19T00:00:00Z","last_name":"Pettey","salary":"64675","height":"2.08","still_hired":"true","avg_worked_seconds":"367717671","job_positions":"Junior Developer","is_rehired":["true","true","true","true"]} -{ "index": {}} -{"birth_date":"1958-10-31T00:00:00Z","emp_no":"10025","first_name":"Prasadram","gender":"M","hire_date":"1987-08-17T00:00:00Z","last_name":"Heyers","salary":"47411","height":"1.87","still_hired":"false","avg_worked_seconds":"371270797","job_positions":"Accountant","is_rehired":["true","false"],"salary_change":["-4.33","-2.90","12.06","-3.46"]} -{ "index": {}} -{"birth_date":"1953-04-03T00:00:00Z","emp_no":"10026","first_name":"Yongqiao","gender":"M","hire_date":"1995-03-20T00:00:00Z","last_name":"Berztiss","salary":"28336","height":"2.10","still_hired":"true","avg_worked_seconds":"359208133","job_positions":"Reporting Analyst","is_rehired":["false","true"],"salary_change":["-7.37","10.62","11.20"]} -{ "index": {}} -{"birth_date":"1962-07-10T00:00:00Z","emp_no":"10027","first_name":"Divier","gender":"F","hire_date":"1989-07-07T00:00:00Z","last_name":"Reistad","salary":"73851","height":"1.53","still_hired":"false","avg_worked_seconds":"374037782","job_positions":"Senior Python Developer","is_rehired":"false"} -{ "index": {}} -{"birth_date":"1963-11-26T00:00:00Z","emp_no":"10028","first_name":"Domenick","gender":"M","hire_date":"1991-10-22T00:00:00Z","last_name":"Tempesti","salary":"39356","height":"2.07","still_hired":"true","avg_worked_seconds":"226435054","job_positions":["Tech Lead","Python Developer","Accountant","Internship"],"is_rehired":["true","false","false","true"]} -{ "index": {}} -{"birth_date":"1956-12-13T00:00:00Z","emp_no":"10029","first_name":"Otmar","gender":"M","hire_date":"1985-11-20T00:00:00Z","last_name":"Herbst","salary":"74999","height":"1.99","still_hired":"false","avg_worked_seconds":"257694181","job_positions":["Senior Python Developer","Data Scientist","Principal Support Engineer"],"is_rehired":"true","salary_change":["-0.32","-1.90","-8.19"]} -{ "index": {}} -{"birth_date":"1958-07-14T00:00:00Z","emp_no":"10030","gender":"M","hire_date":"1994-02-17T00:00:00Z","languages":"3","last_name":"Demeyer","salary":"67492","height":"1.92","still_hired":"false","avg_worked_seconds":"394597613","job_positions":["Tech Lead","Data Scientist","Senior Team Lead"],"is_rehired":["true","false","false"],"salary_change":"-0.40"} -{ "index": {}} -{"birth_date":"1959-01-27T00:00:00Z","emp_no":"10031","gender":"M","hire_date":"1991-09-01T00:00:00Z","languages":"4","last_name":"Joslin","salary":"37716","height":"1.68","still_hired":"false","avg_worked_seconds":"348545109","job_positions":["Architect","Senior Python Developer","Purchase Manager","Senior Team Lead"],"is_rehired":"false"} -{ "index": {}} -{"birth_date":"1960-08-09T00:00:00Z","emp_no":"10032","gender":"F","hire_date":"1990-06-20T00:00:00Z","languages":"3","last_name":"Reistad","salary":"62233","height":"2.10","still_hired":"false","avg_worked_seconds":"277622619","job_positions":["Architect","Senior Python Developer","Junior Developer","Purchase Manager"],"is_rehired":["false","false"],"salary_change":["9.32","-4.92"]} -{ "index": {}} -{"birth_date":"1956-11-14T00:00:00Z","emp_no":"10033","gender":"M","hire_date":"1987-03-18T00:00:00Z","languages":"1","last_name":"Merlo","salary":"70011","height":"1.63","still_hired":"false","avg_worked_seconds":"208374744","is_rehired":"true"} -{ "index": {}} -{"birth_date":"1962-12-29T00:00:00Z","emp_no":"10034","gender":"M","hire_date":"1988-09-21T00:00:00Z","languages":"1","last_name":"Swan","salary":"39878","height":"1.46","still_hired":"false","avg_worked_seconds":"214393176","job_positions":["Business Analyst","Data Scientist","Python Developer","Accountant"],"is_rehired":"false","salary_change":"-8.46"} -{ "index": {}} -{"birth_date":"1953-02-08T00:00:00Z","emp_no":"10035","gender":"M","hire_date":"1988-09-05T00:00:00Z","languages":"5","last_name":"Chappelet","salary":"25945","height":"1.81","still_hired":"false","avg_worked_seconds":"203838153","job_positions":["Senior Python Developer","Data Scientist"],"is_rehired":"false","salary_change":["-2.54","-6.58"]} -{ "index": {}} -{"birth_date":"1959-08-10T00:00:00Z","emp_no":"10036","gender":"M","hire_date":"1992-01-03T00:00:00Z","languages":"4","last_name":"Portugali","salary":"60781","height":"1.61","still_hired":"false","avg_worked_seconds":"305493131","job_positions":"Senior Python Developer","is_rehired":["true","false","false"]} -{ "index": {}} -{"birth_date":"1963-07-22T00:00:00Z","emp_no":"10037","gender":"M","hire_date":"1990-12-05T00:00:00Z","languages":"2","last_name":"Makrucki","salary":"37691","height":"2.00","still_hired":"true","avg_worked_seconds":"359217000","job_positions":["Senior Python Developer","Tech Lead","Accountant"],"is_rehired":"false","salary_change":"-7.08"} -{ "index": {}} -{"birth_date":"1960-07-20T00:00:00Z","emp_no":"10038","gender":"M","hire_date":"1989-09-20T00:00:00Z","languages":"4","last_name":"Lortz","salary":"35222","height":"1.53","still_hired":"true","avg_worked_seconds":"314036411","job_positions":["Senior Python Developer","Python Developer","Support Engineer"]} -{ "index": {}} -{"birth_date":"1959-10-01T00:00:00Z","emp_no":"10039","gender":"M","hire_date":"1988-01-19T00:00:00Z","languages":"2","last_name":"Brender","salary":"36051","height":"1.55","still_hired":"false","avg_worked_seconds":"243221262","job_positions":["Business Analyst","Python Developer","Principal Support Engineer"],"is_rehired":["true","true"],"salary_change":"-6.90"} -{ "index": {}} -{"emp_no":"10040","first_name":"Weiyi","gender":"F","hire_date":"1993-02-14T00:00:00Z","languages":"4","last_name":"Meriste","salary":"37112","height":"1.90","still_hired":"false","avg_worked_seconds":"244478622","job_positions":"Principal Support Engineer","is_rehired":["true","false","true","true"],"salary_change":["6.97","14.74","-8.94","1.92"]} -{ "index": {}} -{"emp_no":"10041","first_name":"Uri","gender":"F","hire_date":"1989-11-12T00:00:00Z","languages":"1","last_name":"Lenart","salary":"56415","height":"1.75","still_hired":"false","avg_worked_seconds":"287789442","job_positions":["Data Scientist","Head Human Resources","Internship","Senior Team Lead"],"salary_change":["9.21","0.05","7.29","-2.94"]} -{ "index": {}} -{"emp_no":"10042","first_name":"Magy","gender":"F","hire_date":"1993-03-21T00:00:00Z","languages":"3","last_name":"Stamatiou","salary":"30404","height":"1.44","still_hired":"true","avg_worked_seconds":"246355863","job_positions":["Architect","Business Analyst","Junior Developer","Internship"],"salary_change":["-9.28","9.42"]} -{ "index": {}} -{"emp_no":"10043","first_name":"Yishay","gender":"M","hire_date":"1990-10-20T00:00:00Z","languages":"1","last_name":"Tzvieli","salary":"34341","height":"1.52","still_hired":"true","avg_worked_seconds":"287222180","job_positions":["Data Scientist","Python Developer","Support Engineer"],"is_rehired":["false","true","true"],"salary_change":["-5.17","4.62","7.42"]} -{ "index": {}} -{"emp_no":"10044","first_name":"Mingsen","gender":"F","hire_date":"1994-05-21T00:00:00Z","languages":"1","last_name":"Casley","salary":"39728","height":"2.06","still_hired":"false","avg_worked_seconds":"387408356","job_positions":["Tech Lead","Principal Support Engineer","Accountant","Support Engineer"],"is_rehired":["true","true"],"salary_change":"8.09"} -{ "index": {}} -{"emp_no":"10045","first_name":"Moss","gender":"M","hire_date":"1989-09-02T00:00:00Z","languages":"3","last_name":"Shanbhogue","salary":"74970","height":"1.70","still_hired":"false","avg_worked_seconds":"371418933","job_positions":["Principal Support Engineer","Junior Developer","Accountant","Purchase Manager"],"is_rehired":["true","false"]} -{ "index": {}} -{"emp_no":"10046","first_name":"Lucien","gender":"M","hire_date":"1992-06-20T00:00:00Z","languages":"4","last_name":"Rosenbaum","salary":"50064","height":"1.52","still_hired":"true","avg_worked_seconds":"302353405","job_positions":["Principal Support Engineer","Junior Developer","Head Human Resources","Internship"],"is_rehired":["true","true","false","true"],"salary_change":"2.39"} -{ "index": {}} -{"emp_no":"10047","first_name":"Zvonko","gender":"M","hire_date":"1989-03-31T00:00:00Z","languages":"4","last_name":"Nyanchama","salary":"42716","height":"1.52","still_hired":"true","avg_worked_seconds":"306369346","job_positions":["Architect","Data Scientist","Principal Support Engineer","Senior Team Lead"],"is_rehired":"true","salary_change":["-6.36","12.12"]} -{ "index": {}} -{"emp_no":"10048","first_name":"Florian","gender":"M","hire_date":"1985-02-24T00:00:00Z","languages":"3","last_name":"Syrotiuk","salary":"26436","height":"2.00","still_hired":"false","avg_worked_seconds":"248451647","job_positions":"Internship","is_rehired":["true","true"]} -{ "index": {}} -{"emp_no":"10049","first_name":"Basil","gender":"F","hire_date":"1992-05-04T00:00:00Z","languages":"5","last_name":"Tramer","salary":"37853","height":"1.52","still_hired":"true","avg_worked_seconds":"320725709","job_positions":["Senior Python Developer","Business Analyst"],"salary_change":"-1.05"} -{ "index": {}} -{"birth_date":"1958-05-21T00:00:00Z","emp_no":"10050","first_name":"Yinghua","gender":"M","hire_date":"1990-12-25T00:00:00Z","languages":"2","last_name":"Dredge","salary":"43026","height":"1.96","still_hired":"true","avg_worked_seconds":"242731798","job_positions":["Reporting Analyst","Junior Developer","Accountant","Support Engineer"],"is_rehired":"true","salary_change":["8.70","10.94"]} -{ "index": {}} -{"birth_date":"1953-07-28T00:00:00Z","emp_no":"10051","first_name":"Hidefumi","gender":"M","hire_date":"1992-10-15T00:00:00Z","languages":"3","last_name":"Caine","salary":"58121","height":"1.89","still_hired":"true","avg_worked_seconds":"374753122","job_positions":["Business Analyst","Accountant","Purchase Manager"]} -{ "index": {}} -{"birth_date":"1961-02-26T00:00:00Z","emp_no":"10052","first_name":"Heping","gender":"M","hire_date":"1988-05-21T00:00:00Z","languages":"1","last_name":"Nitsch","salary":"55360","height":"1.79","still_hired":"true","avg_worked_seconds":"299654717","is_rehired":["true","true","false"],"salary_change":["-0.55","-1.89","-4.22","-6.03"]} -{ "index": {}} -{"birth_date":"1954-09-13T00:00:00Z","emp_no":"10053","first_name":"Sanjiv","gender":"F","hire_date":"1986-02-04T00:00:00Z","languages":"3","last_name":"Zschoche","salary":"54462","height":"1.58","still_hired":"false","avg_worked_seconds":"368103911","job_positions":"Support Engineer","is_rehired":["true","false","true","false"],"salary_change":["-7.67","-3.25"]} -{ "index": {}} -{"birth_date":"1957-04-04T00:00:00Z","emp_no":"10054","first_name":"Mayumi","gender":"M","hire_date":"1995-03-13T00:00:00Z","languages":"4","last_name":"Schueller","salary":"65367","height":"1.82","still_hired":"false","avg_worked_seconds":"297441693","job_positions":"Principal Support Engineer","is_rehired":["false","false"]} -{ "index": {}} -{"birth_date":"1956-06-06T00:00:00Z","emp_no":"10055","first_name":"Georgy","gender":"M","hire_date":"1992-04-27T00:00:00Z","languages":"5","last_name":"Dredge","salary":"49281","height":"2.04","still_hired":"false","avg_worked_seconds":"283157844","job_positions":["Senior Python Developer","Head Human Resources","Internship","Support Engineer"],"is_rehired":["false","false","true"],"salary_change":["7.34","12.99","3.17"]} -{ "index": {}} -{"birth_date":"1961-09-01T00:00:00Z","emp_no":"10056","first_name":"Brendon","gender":"F","hire_date":"1990-02-01T00:00:00Z","languages":"2","last_name":"Bernini","salary":"33370","height":"1.57","still_hired":"true","avg_worked_seconds":"349086555","job_positions":"Senior Team Lead","is_rehired":["true","false","false"],"salary_change":["10.99","-5.17"]} -{ "index": {}} -{"birth_date":"1954-05-30T00:00:00Z","emp_no":"10057","first_name":"Ebbe","gender":"F","hire_date":"1992-01-15T00:00:00Z","languages":"4","last_name":"Callaway","salary":"27215","height":"1.59","still_hired":"true","avg_worked_seconds":"324356269","job_positions":["Python Developer","Head Human Resources"],"salary_change":["-6.73","-2.43","-5.27","1.03"]} -{ "index": {}} -{"birth_date":"1954-10-01T00:00:00Z","emp_no":"10058","first_name":"Berhard","gender":"M","hire_date":"1987-04-13T00:00:00Z","languages":"3","last_name":"McFarlin","salary":"38376","height":"1.83","still_hired":"false","avg_worked_seconds":"268378108","job_positions":"Principal Support Engineer","salary_change":"-4.89"} -{ "index": {}} -{"birth_date":"1953-09-19T00:00:00Z","emp_no":"10059","first_name":"Alejandro","gender":"F","hire_date":"1991-06-26T00:00:00Z","languages":"2","last_name":"McAlpine","salary":"44307","height":"1.48","still_hired":"false","avg_worked_seconds":"237368465","job_positions":["Architect","Principal Support Engineer","Purchase Manager","Senior Team Lead"],"is_rehired":"false","salary_change":["5.53","13.38","-4.69","6.27"]} -{ "index": {}} -{"birth_date":"1961-10-15T00:00:00Z","emp_no":"10060","first_name":"Breannda","gender":"M","hire_date":"1987-11-02T00:00:00Z","languages":"2","last_name":"Billingsley","salary":"29175","height":"1.42","still_hired":"true","avg_worked_seconds":"341158890","job_positions":["Business Analyst","Data Scientist","Senior Team Lead"],"is_rehired":["false","false","true","false"],"salary_change":["-1.76","-0.85"]} -{ "index": {}} -{"birth_date":"1962-10-19T00:00:00Z","emp_no":"10061","first_name":"Tse","gender":"M","hire_date":"1985-09-17T00:00:00Z","languages":"1","last_name":"Herber","salary":"49095","height":"1.45","still_hired":"false","avg_worked_seconds":"327550310","job_positions":["Purchase Manager","Senior Team Lead"],"is_rehired":["false","true"],"salary_change":["14.39","-2.58","-0.95"]} -{ "index": {}} -{"birth_date":"1961-11-02T00:00:00Z","emp_no":"10062","first_name":"Anoosh","gender":"M","hire_date":"1991-08-30T00:00:00Z","languages":"3","last_name":"Peyn","salary":"65030","height":"1.70","still_hired":"false","avg_worked_seconds":"203989706","job_positions":["Python Developer","Senior Team Lead"],"is_rehired":["false","true","true"],"salary_change":"-1.17"} -{ "index": {}} -{"birth_date":"1952-08-06T00:00:00Z","emp_no":"10063","first_name":"Gino","gender":"F","hire_date":"1989-04-08T00:00:00Z","languages":"3","last_name":"Leonhardt","salary":"52121","height":"1.78","still_hired":"true","avg_worked_seconds":"214068302","is_rehired":"true"} -{ "index": {}} -{"birth_date":"1959-04-07T00:00:00Z","emp_no":"10064","first_name":"Udi","gender":"M","hire_date":"1985-11-20T00:00:00Z","languages":"5","last_name":"Jansch","salary":"33956","height":"1.93","still_hired":"false","avg_worked_seconds":"307364077","job_positions":"Purchase Manager","is_rehired":["false","false","true","false"],"salary_change":["-8.66","-2.52"]} -{ "index": {}} -{"birth_date":"1963-04-14T00:00:00Z","emp_no":"10065","first_name":"Satosi","gender":"M","hire_date":"1988-05-18T00:00:00Z","languages":"2","last_name":"Awdeh","salary":"50249","height":"1.59","still_hired":"false","avg_worked_seconds":"372660279","job_positions":["Business Analyst","Data Scientist","Principal Support Engineer"],"is_rehired":["false","true"],"salary_change":["-1.47","14.44","-9.81"]} -{ "index": {}} -{"birth_date":"1952-11-13T00:00:00Z","emp_no":"10066","first_name":"Kwee","gender":"M","hire_date":"1986-02-26T00:00:00Z","languages":"5","last_name":"Schusler","salary":"31897","height":"2.10","still_hired":"true","avg_worked_seconds":"360906451","job_positions":["Senior Python Developer","Data Scientist","Accountant","Internship"],"is_rehired":["true","true","true"],"salary_change":"5.94"} -{ "index": {}} -{"birth_date":"1953-01-07T00:00:00Z","emp_no":"10067","first_name":"Claudi","gender":"M","hire_date":"1987-03-04T00:00:00Z","languages":"2","last_name":"Stavenow","salary":"52044","height":"1.77","still_hired":"true","avg_worked_seconds":"347664141","job_positions":["Tech Lead","Principal Support Engineer"],"is_rehired":["false","false"],"salary_change":["8.72","4.44"]} -{ "index": {}} -{"birth_date":"1962-11-26T00:00:00Z","emp_no":"10068","first_name":"Charlene","gender":"M","hire_date":"1987-08-07T00:00:00Z","languages":"3","last_name":"Brattka","salary":"28941","height":"1.58","still_hired":"true","avg_worked_seconds":"233999584","job_positions":"Architect","is_rehired":"true","salary_change":["3.43","-5.61","-5.29"]} -{ "index": {}} -{"birth_date":"1960-09-06T00:00:00Z","emp_no":"10069","first_name":"Margareta","gender":"F","hire_date":"1989-11-05T00:00:00Z","languages":"5","last_name":"Bierman","salary":"41933","height":"1.77","still_hired":"true","avg_worked_seconds":"366512352","job_positions":["Business Analyst","Junior Developer","Purchase Manager","Support Engineer"],"is_rehired":"false","salary_change":["-3.34","-6.33","6.23","-0.31"]} -{ "index": {}} -{"birth_date":"1955-08-20T00:00:00Z","emp_no":"10070","first_name":"Reuven","gender":"M","hire_date":"1985-10-14T00:00:00Z","languages":"3","last_name":"Garigliano","salary":"54329","height":"1.77","still_hired":"true","avg_worked_seconds":"347188604","is_rehired":["true","true","true"],"salary_change":"-5.90"} -{ "index": {}} -{"birth_date":"1958-01-21T00:00:00Z","emp_no":"10071","first_name":"Hisao","gender":"M","hire_date":"1987-10-01T00:00:00Z","languages":"2","last_name":"Lipner","salary":"40612","height":"2.07","still_hired":"false","avg_worked_seconds":"306671693","job_positions":["Business Analyst","Reporting Analyst","Senior Team Lead"],"is_rehired":["false","false","false"],"salary_change":"-2.69"} -{ "index": {}} -{"birth_date":"1952-05-15T00:00:00Z","emp_no":"10072","first_name":"Hironoby","gender":"F","hire_date":"1988-07-21T00:00:00Z","languages":"5","last_name":"Sidou","salary":"54518","height":"1.82","still_hired":"true","avg_worked_seconds":"209506065","job_positions":["Architect","Tech Lead","Python Developer","Senior Team Lead"],"is_rehired":["false","false","true","false"],"salary_change":["11.21","-2.30","2.22","-5.44"]} -{ "index": {}} -{"birth_date":"1954-02-23T00:00:00Z","emp_no":"10073","first_name":"Shir","gender":"M","hire_date":"1991-12-01T00:00:00Z","languages":"4","last_name":"McClurg","salary":"32568","height":"1.66","still_hired":"false","avg_worked_seconds":"314930367","job_positions":["Principal Support Engineer","Python Developer","Junior Developer","Purchase Manager"],"is_rehired":["true","false"],"salary_change":"-5.67"} -{ "index": {}} -{"birth_date":"1955-08-28T00:00:00Z","emp_no":"10074","first_name":"Mokhtar","gender":"F","hire_date":"1990-08-13T00:00:00Z","languages":"5","last_name":"Bernatsky","salary":"38992","height":"1.64","still_hired":"true","avg_worked_seconds":"382397583","job_positions":["Senior Python Developer","Python Developer"],"is_rehired":["true","false","false","true"],"salary_change":["6.70","1.98","-5.64","2.96"]} -{ "index": {}} -{"birth_date":"1960-03-09T00:00:00Z","emp_no":"10075","first_name":"Gao","gender":"F","hire_date":"1987-03-19T00:00:00Z","languages":"5","last_name":"Dolinsky","salary":"51956","height":"1.94","still_hired":"false","avg_worked_seconds":"370238919","job_positions":"Purchase Manager","is_rehired":"true","salary_change":["9.63","-3.29","8.42"]} -{ "index": {}} -{"birth_date":"1952-06-13T00:00:00Z","emp_no":"10076","first_name":"Erez","gender":"F","hire_date":"1985-07-09T00:00:00Z","languages":"3","last_name":"Ritzmann","salary":"62405","height":"1.83","still_hired":"false","avg_worked_seconds":"376240317","job_positions":["Architect","Senior Python Developer"],"is_rehired":"false","salary_change":["-6.90","-1.30","8.75"]} -{ "index": {}} -{"birth_date":"1964-04-18T00:00:00Z","emp_no":"10077","first_name":"Mona","gender":"M","hire_date":"1990-03-02T00:00:00Z","languages":"5","last_name":"Azuma","salary":"46595","height":"1.68","still_hired":"false","avg_worked_seconds":"351960222","job_positions":"Internship","salary_change":"-0.01"} -{ "index": {}} -{"birth_date":"1959-12-25T00:00:00Z","emp_no":"10078","first_name":"Danel","gender":"F","hire_date":"1987-05-26T00:00:00Z","languages":"2","last_name":"Mondadori","salary":"69904","height":"1.81","still_hired":"true","avg_worked_seconds":"377116038","job_positions":["Architect","Principal Support Engineer","Internship"],"is_rehired":"true","salary_change":["-7.88","9.98","12.52"]} -{ "index": {}} -{"birth_date":"1961-10-05T00:00:00Z","emp_no":"10079","first_name":"Kshitij","gender":"F","hire_date":"1986-03-27T00:00:00Z","languages":"2","last_name":"Gils","salary":"32263","height":"1.59","still_hired":"false","avg_worked_seconds":"320953330","is_rehired":"false","salary_change":"7.58"} -{ "index": {}} -{"birth_date":"1957-12-03T00:00:00Z","emp_no":"10080","first_name":"Premal","gender":"M","hire_date":"1985-11-19T00:00:00Z","languages":"5","last_name":"Baek","salary":"52833","height":"1.80","still_hired":"false","avg_worked_seconds":"239266137","job_positions":"Senior Python Developer","salary_change":["-4.35","7.36","5.56"]} -{ "index": {}} -{"birth_date":"1960-12-17T00:00:00Z","emp_no":"10081","first_name":"Zhongwei","gender":"M","hire_date":"1986-10-30T00:00:00Z","languages":"2","last_name":"Rosen","salary":"50128","height":"1.44","still_hired":"true","avg_worked_seconds":"321375511","job_positions":["Accountant","Internship"],"is_rehired":["false","false","false"]} -{ "index": {}} -{"birth_date":"1963-09-09T00:00:00Z","emp_no":"10082","first_name":"Parviz","gender":"M","hire_date":"1990-01-03T00:00:00Z","languages":"4","last_name":"Lortz","salary":"49818","height":"1.61","still_hired":"false","avg_worked_seconds":"232522994","job_positions":"Principal Support Engineer","is_rehired":"false","salary_change":["1.19","-3.39"]} -{ "index": {}} -{"birth_date":"1959-07-23T00:00:00Z","emp_no":"10083","first_name":"Vishv","gender":"M","hire_date":"1987-03-31T00:00:00Z","languages":"1","last_name":"Zockler","salary":"39110","height":"1.42","still_hired":"false","avg_worked_seconds":"331236443","job_positions":"Head Human Resources"} -{ "index": {}} -{"birth_date":"1960-05-25T00:00:00Z","emp_no":"10084","first_name":"Tuval","gender":"M","hire_date":"1995-12-15T00:00:00Z","languages":"1","last_name":"Kalloufi","salary":"28035","height":"1.51","still_hired":"true","avg_worked_seconds":"359067056","job_positions":"Principal Support Engineer","is_rehired":"false"} -{ "index": {}} -{"birth_date":"1962-11-07T00:00:00Z","emp_no":"10085","first_name":"Kenroku","gender":"M","hire_date":"1994-04-09T00:00:00Z","languages":"5","last_name":"Malabarba","salary":"35742","height":"2.01","still_hired":"true","avg_worked_seconds":"353404008","job_positions":["Senior Python Developer","Business Analyst","Tech Lead","Accountant"],"salary_change":["11.67","6.75","8.40"]} -{ "index": {}} -{"birth_date":"1962-11-19T00:00:00Z","emp_no":"10086","first_name":"Somnath","gender":"M","hire_date":"1990-02-16T00:00:00Z","languages":"1","last_name":"Foote","salary":"68547","height":"1.74","still_hired":"true","avg_worked_seconds":"328580163","job_positions":"Senior Python Developer","is_rehired":["false","true"],"salary_change":"13.61"} -{ "index": {}} -{"birth_date":"1959-07-23T00:00:00Z","emp_no":"10087","first_name":"Xinglin","gender":"F","hire_date":"1986-09-08T00:00:00Z","languages":"5","last_name":"Eugenio","salary":"32272","height":"1.74","still_hired":"true","avg_worked_seconds":"305782871","job_positions":["Junior Developer","Internship"],"is_rehired":["false","false"],"salary_change":"-2.05"} -{ "index": {}} -{"birth_date":"1954-02-25T00:00:00Z","emp_no":"10088","first_name":"Jungsoon","gender":"F","hire_date":"1988-09-02T00:00:00Z","languages":"5","last_name":"Syrzycki","salary":"39638","height":"1.91","still_hired":"false","avg_worked_seconds":"330714423","job_positions":["Reporting Analyst","Business Analyst","Tech Lead"],"is_rehired":"true"} -{ "index": {}} -{"birth_date":"1963-03-21T00:00:00Z","emp_no":"10089","first_name":"Sudharsan","gender":"F","hire_date":"1986-08-12T00:00:00Z","languages":"4","last_name":"Flasterstein","salary":"43602","height":"1.57","still_hired":"true","avg_worked_seconds":"232951673","job_positions":["Junior Developer","Accountant"],"is_rehired":["true","false","false","false"]} -{ "index": {}} -{"birth_date":"1961-05-30T00:00:00Z","emp_no":"10090","first_name":"Kendra","gender":"M","hire_date":"1986-03-14T00:00:00Z","languages":"2","last_name":"Hofting","salary":"44956","height":"2.03","still_hired":"true","avg_worked_seconds":"212460105","is_rehired":["false","false","false","true"],"salary_change":["7.15","-1.85","3.60"]} -{ "index": {}} -{"birth_date":"1955-10-04T00:00:00Z","emp_no":"10091","first_name":"Amabile","gender":"M","hire_date":"1992-11-18T00:00:00Z","languages":"3","last_name":"Gomatam","salary":"38645","height":"2.09","still_hired":"true","avg_worked_seconds":"242582807","job_positions":["Reporting Analyst","Python Developer"],"is_rehired":["true","true","false","false"],"salary_change":["-9.23","7.50","5.85","5.19"]} -{ "index": {}} -{"birth_date":"1964-10-18T00:00:00Z","emp_no":"10092","first_name":"Valdiodio","gender":"F","hire_date":"1989-09-22T00:00:00Z","languages":"1","last_name":"Niizuma","salary":"25976","height":"1.75","still_hired":"false","avg_worked_seconds":"313407352","job_positions":["Junior Developer","Accountant"],"is_rehired":["false","false","true","true"],"salary_change":["8.78","0.39","-6.77","8.30"]} -{ "index": {}} -{"birth_date":"1964-06-11T00:00:00Z","emp_no":"10093","first_name":"Sailaja","gender":"M","hire_date":"1996-11-05T00:00:00Z","languages":"3","last_name":"Desikan","salary":"45656","height":"1.69","still_hired":"false","avg_worked_seconds":"315904921","job_positions":["Reporting Analyst","Tech Lead","Principal Support Engineer","Purchase Manager"],"salary_change":"-0.88"} -{ "index": {}} -{"birth_date":"1957-05-25T00:00:00Z","emp_no":"10094","first_name":"Arumugam","gender":"F","hire_date":"1987-04-18T00:00:00Z","languages":"5","last_name":"Ossenbruggen","salary":"66817","height":"2.10","still_hired":"false","avg_worked_seconds":"332920135","job_positions":["Senior Python Developer","Principal Support Engineer","Accountant"],"is_rehired":["true","false","true"],"salary_change":["2.22","7.92"]} -{ "index": {}} -{"birth_date":"1965-01-03T00:00:00Z","emp_no":"10095","first_name":"Hilari","gender":"M","hire_date":"1986-07-15T00:00:00Z","languages":"4","last_name":"Morton","salary":"37702","height":"1.55","still_hired":"false","avg_worked_seconds":"321850475","is_rehired":["true","true","false","false"],"salary_change":["-3.93","-6.66"]} -{ "index": {}} -{"birth_date":"1954-09-16T00:00:00Z","emp_no":"10096","first_name":"Jayson","gender":"M","hire_date":"1990-01-14T00:00:00Z","languages":"4","last_name":"Mandell","salary":"43889","height":"1.94","still_hired":"false","avg_worked_seconds":"204381503","job_positions":["Architect","Reporting Analyst"],"is_rehired":["false","false","false"]} -{ "index": {}} -{"birth_date":"1952-02-27T00:00:00Z","emp_no":"10097","first_name":"Remzi","gender":"M","hire_date":"1990-09-15T00:00:00Z","languages":"3","last_name":"Waschkowski","salary":"71165","height":"1.53","still_hired":"false","avg_worked_seconds":"206258084","job_positions":["Reporting Analyst","Tech Lead"],"is_rehired":["true","false"],"salary_change":"-1.12"} -{ "index": {}} -{"birth_date":"1961-09-23T00:00:00Z","emp_no":"10098","first_name":"Sreekrishna","gender":"F","hire_date":"1985-05-13T00:00:00Z","languages":"4","last_name":"Servieres","salary":"44817","height":"2.00","still_hired":"false","avg_worked_seconds":"272392146","job_positions":["Architect","Internship","Senior Team Lead"],"is_rehired":"false","salary_change":["-2.83","8.31","4.38"]} -{ "index": {}} -{"birth_date":"1956-05-25T00:00:00Z","emp_no":"10099","first_name":"Valter","gender":"F","hire_date":"1988-10-18T00:00:00Z","languages":"2","last_name":"Sullins","salary":"73578","height":"1.81","still_hired":"true","avg_worked_seconds":"377713748","is_rehired":["true","true"],"salary_change":["10.71","14.26","-8.78","-3.98"]} -{ "index": {}} -{"birth_date":"1953-04-21T00:00:00Z","emp_no":"10100","first_name":"Hironobu","gender":"F","hire_date":"1987-09-21T00:00:00Z","languages":"4","last_name":"Haraldson","salary":"68431","height":"1.77","still_hired":"true","avg_worked_seconds":"223910853","job_positions":"Purchase Manager","is_rehired":["false","true","true","false"],"salary_change":["13.97","-7.49"]} --------------------------------------------------- -// TEST[skip:TBD] -==== - -[discrete] -[[convert-dataset-pandas-dataframe]] -==== Convert the dataset - -Use the ES|QL CSV import to convert the `employees` dataset to a Pandas -dataframe object. - -[source,python] ------------------------------------- -from io import StringIO -from elasticsearch import Elasticsearch -import pandas as pd -client = Elasticsearch( - "https://[host].elastic-cloud.com", - api_key="...", -) -response = client.esql.query( - query="FROM employees | LIMIT 500", - format="csv", -) -df = pd.read_csv(StringIO(response.body)) -print(df) ------------------------------------- - -Even though the dataset contains only 100 records, a LIMIT of 500 is specified to suppress -ES|QL warnings about potentially missing records. This prints the -following dataframe: - -[source,python] ------------------------------------- - avg_worked_seconds ... salary_change.long still_hired -0 268728049 ... 1 True -1 328922887 ... [-7, 11] True -2 200296405 ... [12, 14] False -3 311267831 ... [0, 1, 3, 13] True -4 244294991 ... [-2, 13] True -.. ... ... ... ... -95 204381503 ... NaN False -96 206258084 ... -1 False -97 272392146 ... [-2, 4, 8] False -98 377713748 ... [-8, -3, 10, 14] True -99 223910853 ... [-7, 13] True ------------------------------------- - -You can now analyze the data with Pandas or you can also continue transforming -the data using ES|QL. - - -[discrete] -[[analyze-data]] -==== Analyze the data with Pandas - -In the next example, the {ref}/esql-commands.html#esql-stats-by[STATS ... BY] -command is utilized to count how many employees are speaking a given language. -The results are sorted with the `languages` column using -{ref}/esql-commands.html#esql-sort[SORT]: - -[source,python] ------------------------------------- -response = client.esql.query( - query=""" - FROM employees - | STATS count = COUNT(emp_no) BY languages - | SORT languages - | LIMIT 500 - """, - format="csv", -) -df = pd.read_csv( - StringIO(response.body), - dtype={"count": "Int64", "languages": "Int64"}, -) -print(df) ------------------------------------- - -Note that the `dtype` parameter of `pd.read_csv()` is useful when the type -inferred by Pandas is not enough. The code prints the following response: - -[source,python] ------------------------------------- - count languages -0 15 1 -1 19 2 -2 17 3 -3 18 4 -4 21 5 ------------------------------------- - - -[discrete] -[[passing-params]] -==== Pass parameters to a query with ES|QL - -Use the -{ref}/esql-rest.html#esql-rest-params[built-in parameters support of the ES|QL REST API] -to pass parameters to a query: - -[source,python] ------------------------------------- -response = client.esql.query( - query=""" - FROM employees - | STATS count = COUNT(emp_no) BY languages - | WHERE languages >= (?) - | SORT languages - | LIMIT 500 - """, - format="csv", - params=[3], -) -df = pd.read_csv( - StringIO(response.body), - dtype={"count": "Int64", "languages": "Int64"}, -) -print(df) ------------------------------------- - -The code above outputs the following: - -[source,python] ------------------------------------- - count languages -0 17 3 -1 18 4 -2 21 5 ------------------------------------- - -If you want to learn more about ES|QL, refer to the -{ref}/esql.html[ES|QL documentation]. You can also check out this other -https://github.com/elastic/elasticsearch-labs/blob/main/supporting-blog-content/Boston-Celtics-Demo/celtics-esql-demo.ipynb[Python example using Boston Celtics data]. \ No newline at end of file diff --git a/docs/guide/examples.asciidoc b/docs/guide/examples.asciidoc deleted file mode 100644 index 575f43bbe..000000000 --- a/docs/guide/examples.asciidoc +++ /dev/null @@ -1,287 +0,0 @@ -[[examples]] -== Examples - -Below you can find examples of how to use the most frequently called APIs with -the Python client. - -* <> -* <> -* <> -* <> -* <> -* <> - -[discrete] -[[ex-index]] -=== Indexing a document - -To index a document, you need to specify three pieces of information: `index`, -`id`, and a `document`: - -[source,py] ----------------------------- -from datetime import datetime -from elasticsearch import Elasticsearch -client = Elasticsearch('https://localhost:9200') - -doc = { - 'author': 'author_name', - 'text': 'Interesting content...', - 'timestamp': datetime.now(), -} -resp = client.index(index="test-index", id=1, document=doc) -print(resp['result']) ----------------------------- - - -[discrete] -[[ex-get]] -=== Getting a document - -To get a document, you need to specify its `index` and `id`: - -[source,py] ----------------------------- -resp = client.get(index="test-index", id=1) -print(resp['_source']) ----------------------------- - - -[discrete] -[[ex-refresh]] -=== Refreshing an index - -You can perform the refresh operation on an index: - -[source,py] ----------------------------- -client.indices.refresh(index="test-index") ----------------------------- - - -[discrete] -[[ex-search]] -=== Searching for a document - -The `search()` method returns results that are matching a query: - -[source,py] ----------------------------- -resp = client.search(index="test-index", query={"match_all": {}}) -print("Got %d Hits:" % resp['hits']['total']['value']) -for hit in resp['hits']['hits']: - print("%(timestamp)s %(author)s: %(text)s" % hit["_source"]) ----------------------------- - - -[discrete] -[[ex-update]] -=== Updating a document - -To update a document, you need to specify three pieces of information: `index`, -`id`, and a `doc`: - -[source,py] ----------------------------- -from datetime import datetime -from elasticsearch import Elasticsearch - -client = Elasticsearch('https://localhost:9200') - -doc = { - 'author': 'author_name', - 'text': 'Interesting modified content...', - 'timestamp': datetime.now(), -} -resp = client.update(index="test-index", id=1, doc=doc) -print(resp['result']) ----------------------------- - - -[discrete] -[[ex-delete]] -=== Deleting a document - -You can delete a document by specifying its `index`, and `id` in the `delete()` -method: - -[source,py] ----------------------------- -client.delete(index="test-index", id=1) ----------------------------- - -[discrete] -[[ex-interactive]] -=== Interactive examples - -The https://github.com/elastic/elasticsearch-labs[elasticsearch-labs] -repo contains interactive and executable -https://github.com/elastic/elasticsearch-labs/tree/main/notebooks[Python -notebooks], sample apps, and resources for testing out Elasticsearch, -using the Python client. These examples are mainly focused on vector -search, hybrid search and generative AI use cases, but you'll also find -examples of basic operations like creating index mappings and performing -lexical search. - -[discrete] -==== Search notebooks - -The -https://github.com/elastic/elasticsearch-labs/tree/main/notebooks/search[Search] -folder is a good place to start if you're new to Elasticsearch. This -folder contains a number of notebooks that demonstrate the fundamentals -of Elasticsearch, like indexing vectors, running lexical, semantic and -_hybrid_ searches, and more. - -The following notebooks are available: - -[arabic, start=0] -* https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/00-quick-start.ipynb[Quick -start] -* https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/01-keyword-querying-filtering.ipynb[Keyword, -querying, filtering] -* https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/02-hybrid-search.ipynb[Hybrid -search] -* https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/03-ELSER.ipynb[Semantic -search with ELSER] -* https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/04-multilingual.ipynb[Multilingual -semantic search] -* https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/05-query-rules.ipynb[Query -rules] -* https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/06-synonyms-api.ipynb[Synonyms -API quick start] - -Here's a brief overview of what you'll learn in each notebook. - -[discrete] -===== Quick start - -In the -https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/00-quick-start.ipynb[00-quick-start.ipynb] -notebook you'll learn how to: - -* Use the Elasticsearch Python client for various operations. -* Create and define an index for a sample dataset with -`dense_vector` fields. -* Transform book titles into embeddings using -https://www.sbert.net[Sentence Transformers] and index them into -Elasticsearch. -* Perform k-nearest neighbors (knn) semantic searches. -* Integrate traditional text-based search with semantic search, for a -hybrid search system. -* Use reciprocal rank fusion (RRF) to intelligently combine search -results from different retrieval systems. - -[discrete] -===== Keyword, querying, filtering - -In the -https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/01-keyword-querying-filtering.ipynb[01-keyword-querying-filtering.ipynb] -notebook, you'll learn how to: - -* Use -https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html[query -and filter contexts] to search and filter documents in Elasticsearch. -* Execute full-text searches with `match` and `multi-match` queries. -* Query and filter documents based on `text`, `number`, `date`, or -`boolean` values. -* Run multi-field searches using the `multi-match` query. -* Prioritize specific fields in the `multi-match` query for tailored -results. - -[discrete] -===== Hybrid search - -In the -https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/02-hybrid-search.ipynb[02-hybrid-search.ipynb] -notebook, you'll learn how to: - -* Combine results of traditional text-based search with semantic search, -for a hybrid search system. -* Transform fields in the sample dataset into embeddings using the -Sentence Transformer model and index them into Elasticsearch. -* Use the -https://www.elastic.co/guide/en/elasticsearch/reference/current/rrf.html#rrf-api[RRF -API] to combine the results of a `match` query and a `kNN` semantic -search. -* Walk through a super simple toy example that demonstrates, step by -step, how RRF ranking works. - -[discrete] -===== Semantic search with ELSER - -In the -https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/03-ELSER.ipynb[03-ELSER.ipynb] -notebook, you'll learn how to: - -* Use the Elastic Learned Sparse Encoder (ELSER) for text -expansion-powered semantic search, out of the box — without training, -fine-tuning, or embeddings generation. -* Download and deploy the ELSER model in your Elastic environment. -* Create an Elasticsearch index named [.title-ref]#search-movies# with -specific mappings and index a dataset of movie descriptions. -* Create an ingest pipeline containing an inference processor for ELSER -model execution. -* Reindex the data from [.title-ref]#search-movies# into another index, -[.title-ref]#elser-movies#, using the ELSER pipeline for text expansion. -* Observe the results of running the documents through the model by -inspecting the additional terms it adds to documents, which enhance -searchability. -* Perform simple keyword searches on the [.title-ref]#elser-movies# -index to assess the impact of ELSER's text expansion. -* Execute ELSER-powered semantic searches using the `text_expansion` -query. - -[discrete] -===== Multilingual semantic search - -In the -https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/04-multilingual.ipynb[04-multilingual.ipynb] -notebook, you'll learn how to: - -* Use a multilingual embedding model for semantic search across -languages. -* Transform fields in the sample dataset into embeddings using the -Sentence Transformer model and index them into Elasticsearch. -* Use filtering with a `kNN` semantic search. -* Walk through a super simple toy example that demonstrates, step by -step, how multilingual search works across languages, and within -non-English languages. - -[discrete] -===== Query rules - -In the -https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/05-query-rules.ipynb[05-query-rules.ipynb] -notebook, you'll learn how to: - -* Use the query rules management APIs to create and edit promotional -rules based on contextual queries. -* Apply these query rules by using the `rule_query` in Query DSL. - -[discrete] -===== Synonyms API quick start - -In the -https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/06-synonyms-api.ipynb[06-synonyms-api.ipynb] -notebook, you'll learn how to: - -* Use the synonyms management API to create a synonyms set to enhance -your search recall. -* Configure an index to use search-time synonyms. -* Update synonyms in real time. -* Run queries that are enhanced by synonyms. - -[discrete] -==== Other notebooks - -* https://github.com/elastic/elasticsearch-labs/tree/main/notebooks/generative-ai[Generative -AI]. Notebooks that demonstrate various use cases for Elasticsearch as -the retrieval engine and vector store for LLM-powered applications. -* https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/integrations[Integrations]. -Notebooks that demonstrate how to integrate popular services and -projects with Elasticsearch, including OpenAI, Hugging Face, and -LlamaIndex -* https://github.com/elastic/elasticsearch-labs/tree/main/notebooks/langchain[Langchain]. -Notebooks that demonstrate how to integrate Elastic with LangChain, a -framework for developing applications powered by language models. diff --git a/docs/guide/getting-started.asciidoc b/docs/guide/getting-started.asciidoc deleted file mode 100644 index 58b6f33a5..000000000 --- a/docs/guide/getting-started.asciidoc +++ /dev/null @@ -1,201 +0,0 @@ -[[getting-started-python]] -== Getting started - -This page guides you through the installation process of the Python client, -shows you how to instantiate the client, and how to perform basic Elasticsearch -operations with it. - -[discrete] -=== Requirements - -* https://www.python.org/[Python] 3.8 or newer -* https://pip.pypa.io/en/stable/[`pip`], installed by default alongside Python - -[discrete] -=== Installation - -To install the latest version of the client, run the following command: - -[source,shell] --------------------------- -python -m pip install elasticsearch --------------------------- - -Refer to the <> page to learn more. - - -[discrete] -=== Connecting - -You can connect to the Elastic Cloud using an API key and the Elasticsearch -endpoint. - -[source,py] ----- -from elasticsearch import Elasticsearch - -client = Elasticsearch( - "https://...", # Elasticsearch endpoint - api_key="api_key", -) ----- - -Your Elasticsearch endpoint can be found on the **My deployment** page of your -deployment: - -image::images/es-endpoint.jpg[alt="Finding Elasticsearch endpoint",align="center"] - -You can generate an API key on the **Management** page under Security. - -image::images/create-api-key.png[alt="Create API key",align="center"] - -For other connection options, refer to the <> section. - - -[discrete] -=== Operations - -Time to use Elasticsearch! This section walks you through the basic, and most -important, operations of Elasticsearch. For more operations and more advanced -examples, refer to the <> page. - - -[discrete] -==== Creating an index - -This is how you create the `my_index` index: - -[source,py] ----- -client.indices.create(index="my_index") ----- - -Optionally, you can first define the expected types of your features with a -custom mapping. - -[source,py] ----- -mappings = { - "properties": { - "foo": {"type": "text"}, - "bar": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256, - } - }, - }, - } -} - -client.indices.create(index="my_index", mappings=mappings) ----- - -[discrete] -==== Indexing documents - -This indexes a document with the index API: - -[source,py] ----- -client.index( - index="my_index", - id="my_document_id", - document={ - "foo": "foo", - "bar": "bar", - } -) ----- - -You can also index multiple documents at once with the bulk helper function: - -[source,py] ----- -from elasticsearch import helpers - -def generate_docs(): - for i in range(10): - yield { - "_index": "my_index", - "foo": f"foo {i}", - "bar": "bar", - } - -helpers.bulk(client, generate_docs()) ----- - -These helpers are the recommended way to perform bulk ingestion. While it is -also possible to perform bulk ingestion using `client.bulk` directly, the -helpers handle retries, ingesting chunk by chunk and more. See the -<> page for more details. - - -[discrete] -==== Getting documents - -You can get documents by using the following code: - -[source,py] ----- -client.get(index="my_index", id="my_document_id") ----- - - -[discrete] -==== Searching documents - -This is how you can create a single match query with the Python client: - -[source,py] ----- -client.search(index="my_index", query={ - "match": { - "foo": "foo" - } -}) ----- - - -[discrete] -==== Updating documents - -This is how you can update a document, for example to add a new field: - -[source,py] ----- -client.update( - index="my_index", - id="my_document_id", - doc={ - "foo": "bar", - "new_field": "new value", - } -) ----- - - -[discrete] -==== Deleting documents - -[source,py] ----- -client.delete(index="my_index", id="my_document_id") ----- - - -[discrete] -==== Deleting an index - -[source,py] ----- -client.indices.delete(index="my_index") ----- - - -[discrete] -== Further reading - -* Use <> for a more comfortable experience with the APIs. diff --git a/docs/guide/helpers.asciidoc b/docs/guide/helpers.asciidoc deleted file mode 100644 index 8157904c4..000000000 --- a/docs/guide/helpers.asciidoc +++ /dev/null @@ -1,90 +0,0 @@ -[[client-helpers]] -== Client helpers - -You can find here a collection of simple helper functions that abstract some -specifics of the raw API. For detailed examples, refer to -https://elasticsearch-py.readthedocs.io/en/stable/helpers.html[this page]. - - -[discrete] -[[bulk-helpers]] -=== Bulk helpers - -There are several helpers for the bulk API since its requirement for specific -formatting and other considerations can make it cumbersome if used directly. - -All bulk helpers accept an instance of `{es}` class and an iterable `action` -(any iterable, can also be a generator, which is ideal in most cases since it -allows you to index large datasets without the need of loading them into -memory). - -The items in the iterable `action` should be the documents we wish to index in -several formats. The most common one is the same as returned by `search()`, for -example: - -[source,yml] ----------------------------- -{ - '_index': 'index-name', - '_id': 42, - '_routing': 5, - 'pipeline': 'my-ingest-pipeline', - '_source': { - "title": "Hello World!", - "body": "..." - } -} ----------------------------- - -Alternatively, if `_source` is not present, it pops all metadata fields from -the doc and use the rest as the document data: - -[source,yml] ----------------------------- -{ - "_id": 42, - "_routing": 5, - "title": "Hello World!", - "body": "..." -} ----------------------------- - -The `bulk()` api accepts `index`, `create`, `delete`, and `update` actions. Use -the `_op_type` field to specify an action (`_op_type` defaults to `index`): - -[source,yml] ----------------------------- -{ - '_op_type': 'delete', - '_index': 'index-name', - '_id': 42, -} -{ - '_op_type': 'update', - '_index': 'index-name', - '_id': 42, - 'doc': {'question': 'The life, universe and everything.'} -} ----------------------------- - - -[discrete] -[[scan]] -=== Scan - -Simple abstraction on top of the `scroll()` API - a simple iterator that yields -all hits as returned by underlining scroll requests. - -By default scan does not return results in any pre-determined order. To have a -standard order in the returned documents (either by score or explicit sort -definition) when scrolling, use `preserve_order=True`. This may be an expensive -operation and will negate the performance benefits of using `scan`. - - -[source,py] ----------------------------- -scan(es, - query={"query": {"match": {"title": "python"}}}, - index="orders-*" -) ----------------------------- \ No newline at end of file diff --git a/docs/guide/images/create-api-key.png b/docs/guide/images/create-api-key.png deleted file mode 100644 index d75c230300b1509869c461e5f38ddcc3d9d3d690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80572 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
    yrzys%8TjQ)A>Fl2Fd^^<2l^4@6d5K{m(Bq)25Q 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

    * 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 z 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

    1TiyQU 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

    O>Q{$B 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


    ;2+5 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 Fe*ra3AesOG diff --git a/docs/guide/images/otel-waterfall-retry.png b/docs/guide/images/otel-waterfall-retry.png deleted file mode 100644 index c4eb79473e2acfe2a7210e5c22356c1b7f7ef4be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50707 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

    Iyd0u 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 HjD!CJ|3%M^ diff --git a/docs/guide/images/otel-waterfall-with-http.png b/docs/guide/images/otel-waterfall-with-http.png deleted file mode 100644 index 2d11542a659b877962cde7b62488e9ef3697a6f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44194 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 Y1#CGaW%<|$p{S&ACYHx5emZ;Q->{}h4FCWD diff --git a/docs/guide/images/otel-waterfall-without-http.png b/docs/guide/images/otel-waterfall-without-http.png deleted file mode 100644 index 4a3b8de5bb9f4096740d69b10b83bb72ec5c5f73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35709 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 BF9-kt diff --git a/docs/guide/index.asciidoc b/docs/guide/index.asciidoc deleted file mode 100644 index 687710626..000000000 --- a/docs/guide/index.asciidoc +++ /dev/null @@ -1,31 +0,0 @@ -= Elasticsearch Python Client - -:doctype: book - -include::{asciidoc-dir}/../../shared/versions/stack/{source_branch}.asciidoc[] - -include::{asciidoc-dir}/../../shared/attributes.asciidoc[] - -include::overview.asciidoc[] - -include::getting-started.asciidoc[] - -include::installation.asciidoc[] - -include::connecting.asciidoc[] - -include::configuration.asciidoc[] - -include::async.asciidoc[] - -include::migration.asciidoc[] - -include::integrations.asciidoc[] - -include::examples.asciidoc[] - -include::elasticsearch-dsl.asciidoc[] - -include::helpers.asciidoc[] - -include::release-notes.asciidoc[] diff --git a/docs/guide/installation.asciidoc b/docs/guide/installation.asciidoc deleted file mode 100644 index f96265d1d..000000000 --- a/docs/guide/installation.asciidoc +++ /dev/null @@ -1,25 +0,0 @@ -[[installation]] -== Installation - -**https://www.elastic.co/downloads/elasticsearch[Download the latest version of Elasticsearch]** -or -**https://cloud.elastic.co/registration?elektra=en-ess-sign-up-page[sign-up]** -**for a free trial of Elastic Cloud**. - -The Python client for {es} can be installed with pip: - -[source,sh] -------------------------------------- -$ python -m pip install elasticsearch -------------------------------------- - -If your application uses async/await in Python you can install with the `async` -extra: - -[source,sh] --------------------------------------------- -$ python -m pip install elasticsearch[async] --------------------------------------------- - -Read more about -https://elasticsearch-py.readthedocs.io/en/master/async.html[how to use asyncio with this project]. diff --git a/docs/guide/integrations.asciidoc b/docs/guide/integrations.asciidoc deleted file mode 100644 index d82e67498..000000000 --- a/docs/guide/integrations.asciidoc +++ /dev/null @@ -1,75 +0,0 @@ -[[integrations]] -== Integrations - -You can find integration options and information on this page. - - -[discrete] -[[opentelemetry-intro]] -=== OpenTelemetry instrumentation - -The Python Elasticsearch client supports native OpenTelemetry instrumentation following the https://opentelemetry.io/docs/specs/semconv/database/elasticsearch/[OpenTelemetry Semantic Conventions for Elasticsearch]. -Refer to the <> page for details. - - -[discrete] -[[esql-intro]] -=== ES|QL - -{ref}/esql.html[ES|QL] is available through the Python Elasticsearch client. -Refer to the <> page to learn more about using ES|QL and Pandas together with dataframes. - - -[discrete] -[[transport]] -=== Transport - -The handling of connections, retries, and pooling is handled by the https://github.com/elastic/elastic-transport-python[Elastic Transport Python] library. -Documentation on the low-level classes is available on https://elastic-transport-python.readthedocs.io[Read the Docs]. - - -[discrete] -[[opaque-id]] -=== Tracking requests with Opaque ID - -You can enrich your requests against Elasticsearch with an identifier string, that allows you to discover this identifier in https://www.elastic.co/guide/en/elasticsearch/reference/current/logging.html#deprecation-logging[deprecation logs], to support you with https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-slowlog.html#_identifying_search_slow_log_origin[identifying search slow log origin] -or to help with https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html#_identifying_running_tasks[identifying running tasks]. - -The opaque ID can be set via the `opaque_id` parameter via the client `.options()` method: - -[source,python] ------------------------------------- -client = Elasticsearch(...) -client.options(opaque_id="request-id-...").search(...) ------------------------------------- - - -[discrete] -[[type-hints]] -=== Type Hints - -Starting in `elasticsearch-py` v7.10.0 the library now ships with https://www.python.org/dev/peps/pep-0484[type hints] and supports basic static type analysis with tools like http://mypy-lang.org[Mypy] and https://github.com/microsoft/pyright[Pyright]. - -If we write a script that has a type error like using `request_timeout` with a `str` argument instead of `float` and then run Mypy on the script: - -[source,python] ------------------------------------- -# script.py -from elasticsearch import Elasticsearch - -client = Elasticsearch(...) -client.options( - request_timeout="5" # type error! -).search(...) - -# $ mypy script.py -# script.py:5: error: Argument "request_timeout" to "search" of "Elasticsearch" has -# incompatible type "str"; expected "Union[int, float, None]" -# Found 1 error in 1 file (checked 1 source file) ------------------------------------- - -Type hints also allow tools like your IDE to check types and provide better auto-complete functionality. - - -include::open-telemetry.asciidoc[] -include::esql-pandas.asciidoc[] \ No newline at end of file diff --git a/docs/guide/migration.asciidoc b/docs/guide/migration.asciidoc deleted file mode 100644 index 1230399d7..000000000 --- a/docs/guide/migration.asciidoc +++ /dev/null @@ -1,377 +0,0 @@ -[[migration]] -== Migrating to 8.0 - -The client has major changes that require changes to how you use the client. -Below outlines all the changes you'll have to take into account when upgrading -from 7.x to 8.0. - -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> - -[discrete] -[[migration-compat-mode]] -=== Enable compatibility mode and upgrade Elasticsearch - -Upgrade your Elasticsearch client to 7.16: - -[source,bash] ------------------------------------- -$ python -m pip install --upgrade 'elasticsearch>=7.16,<8' ------------------------------------- - -If you have an existing application enable the compatibility mode -by setting `ELASTIC_CLIENT_APIVERSIONING=1` environment variable. -This will instruct the Elasticsearch server to accept and respond -with 7.x-compatibile requests and responses. - -After you've done this you can https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html[upgrade the Elasticsearch server to 8.0.0]. - -[discrete] -[[migration-upgrade-client]] -=== Upgrading the client - -After you've deployed your application with the 7.16 client and -using an 8.0.0 Elasticsearch server you can upgrade your client to -be 8.0. - -[source,bash] ------------------------------------- -$ python -m pip install --upgrade 'elasticsearch>=8,<9' ------------------------------------- - -[discrete] -[[migration-remove-deprecations]] -=== Removing deprecation warnings - -You'll likely notice after upgrading the client to 8.0 your code is -either raising errors or `DeprecationWarning` to signal where you need -to change your code before using the 8.0 client. - - -[discrete] -[[migration-strict-client-config]] -==== Strict client configuration - -Previously the client would use `scheme="http"`, `host="localhost"`, and `port=9200` defaults -when specifying which node(s) to connect to. Starting in 8.0 these defaults have been removed -and instead require explicit configuration of scheme, host, and port or to be configured -using `cloud_id` to avoid confusion about which Elasticsearch instance is being connected to. - -This choice was made because starting 8.0.0 Elasticsearch enables HTTPS is by default, so it's no -longer a good assumption that `http://localhost:9200` is the locally running cluster. - -See documentation on <> and <>. - -For quick examples, using a configuration like one of the two below works best: - -[source,python] ------------------------------------- -from elasticsearch import Elasticsearch - -# If you're connecting to an instance on Elastic Cloud: -client = Elasticsearch( - cloud_id="cluster-1:dXMa5Fx...", - - # Include your authentication like 'api_key' - # 'basic_auth', or 'bearer_auth' here. - basic_auth=("elastic", "") -) - -# If you're connecting to an instance hosted elsewhere: -client = Elasticsearch( - # Notice that the scheme (https://) host (localhost), - # and port (9200) are explicit here: - "http://localhost:9200", - - # Include your authentication like 'api_key' - # 'basic_auth', or 'bearer_auth' here: - api_key="api_key" -) ------------------------------------- - -[discrete] -[[migration-keyword-only-args]] -==== Keyword-only arguments for APIs - -APIs used to support both positional and keyword arguments, however -using **keyword-only arguments was always recommended** in the documentation. -Starting in 7.14 using positional arguments would raise a `DeprecationWarning` but would still work. - -Now starting in 8.0 keyword-only arguments are now required for APIs for better forwards-compatibility -with new API options. When attempting to use positional arguments a `TypeError` will be raised. - -[source,python] ------------------------------------- -# 8.0+ SUPPORTED USAGE: -client.indices.get(index="*") - -# 7.x UNSUPPORTED USAGE (Don't do this!): -client.indices.get("*") ------------------------------------- - -[discrete] -[[migration-options]] -==== Start using .options() for transport parameters - -Previously some per-request options like `api_key` and `ignore` were allowed within -client API methods. Starting in 8.0 this is deprecated for all APIs and for a small -number of APIs may break in unexpected ways if not changed. - -The parameters `headers`, `api_key`, `http_auth`, `opaque_id`, `request_timeout`, and `ignore` -are effected: - -[source,python] ------------------------------------- -from elasticsearch import Elasticsearch - -client = Elasticsearch("http://localhost:9200") - -# 8.0+ SUPPORTED USAGE: -client.options(api_key="api_key").search(index="blogs") - -# 7.x DEPRECATED USAGE (Don't do this!): -client.search(index="blogs", api_key=("id", "api_key")) ------------------------------------- - -Some of these parameters have been renamed to be more readable and to fit other APIs. -`ignore` should be `ignore_status` and `http_auth` should be `basic_auth`: - -[source,python] ------------------------------------- -# 8.0+ SUPPORTED USAGES: -client.options(basic_auth=("username", "password")).search(...) -client.options(ignore_status=404).indices.delete(index=...) - -# 7.x DEPRECATED USAGES (Don't do this!): -client.search(http_auth=("username", "password"), ...) -client.indices.delete(index=..., ignore=404) ------------------------------------- - -APIs where this change is breaking and doesn't have a deprecation period due to conflicts -between the client API and Elasticsearch's API: - -- `sql.query` using `request_timeout` -- `security.grant_api_key` using `api_key` -- `render_search_template` using `params` -- `search_template` using `params` - -You should immediately evaluate the usage of these parameters and start using `.options(...)` -to avoid unexpected behavior. Below is an example of migrating away from using per-request `api_key` -with the `security.grant_api_key` API: - -[source,python] ------------------------------------- -# 8.0+ SUPPORTED USAGE: -resp = ( - client.options( - # This is the API key being used for the request - api_key="request-api-key" - ).security.grant_api_key( - # This is the API key being granted - api_key={ - "name": "granted-api-key" - }, - grant_type="password", - username="elastic", - password="changeme" - ) -) - -# 7.x DEPRECATED USAGE (Don't do this!): -resp = ( - # This is the API key being used for the request - client.security.grant_api_key( - api_key=("request-id", "request-api-key"), - body={ - # This is the API key being granted - "api_key": { - "name": "granted-api-key" - }, - "grant_type": "password", - "username": "elastic", - "password": "changeme" - } - ) -) ------------------------------------- - -Starting with the 8.12 client, using a body parameter is fully supported again, meaning you can also use `grant_api_key` like this: - -[source,python] ------------------------------------- -# 8.12+ SUPPORTED USAGE: -resp = ( - client.options( - # This is the API key being used for the request - api_key="request-api-key" - ).security.grant_api_key( - body={ - # This is the API key being granted - "api_key": { - "name": "granted-api-key" - }, - "grant_type": "password", - "username": "elastic", - "password": "changeme" - } - ) -) ------------------------------------- - -[discrete] -[[migration-response-types]] -==== Changes to API responses - -In 7.x and earlier the return type for API methods were the raw deserialized response body. -This meant that there was no way to access HTTP status codes, headers, or other information -from the transport layer. - -In 8.0.0 responses are no longer the raw deserialized response body and instead an object -with two properties, `meta` and `body`. Transport layer metadata about the response -like HTTP status, headers, version, and which node serviced the request are available here: - -[source,python] ------------------------------------- ->>> resp = client.search(...) - -# Response is not longer a 'dict' ->>> resp -ObjectApiResponse({'took': 1, 'timed_out': False, ...}) - -# But can still be used like one: ->>> resp["hits"]["total"] -{'value': 5500, 'relation': 'eq'} - ->>> resp.keys() -dict_keys(['took', 'timed_out', '_shards', 'hits']) - -# HTTP status ->>> resp.meta.status -200 - -# HTTP headers ->>> resp.meta.headers['content-type'] -'application/json' - -# HTTP version ->>> resp.meta.http_version -'1.1' ------------------------------------- - -Because the response is no longer a dictionary, list, `str`, or `bytes` instance -calling `isintance()` on the response object will return `False`. If you need -direct access to the underlying deserialized response body you can use the `body` -property: - -[source,python] ------------------------------------- ->>> resp.body -{'took': 1, 'timed_out': False, ...} - -# The response isn't a dict, but resp.body is. ->>> isinstance(resp, dict) -False - ->>> isinstance(resp.body, dict) -True ------------------------------------- - -Requests that used the `HEAD` HTTP method can still be used within `if` conditions but won't work with `is`. - -[source,python] ------------------------------------- ->>> resp = client.indices.exists(index=...) ->>> resp.body -True - ->>> resp is True -False - ->>> resp.body is True -True - ->>> isinstance(resp, bool) -False - ->>> isinstance(resp.body, bool) -True ------------------------------------- - -[discrete] -[[migration-error-types]] -==== Changes to error classes - -Previously `elasticsearch.TransportError` was the base class for both transport layer errors (like timeouts, connection errors) and API layer errors (like "404 Not Found" when accessing an index). This was pretty confusing when you wanted to capture API errors to inspect them for a response body and not capture errors from the transport layer. - -Now in 8.0 `elasticsearch.TransportError` is a redefinition of `elastic_transport.TransportError` and will only be the base class for true transport layer errors. If you instead want to capture API layer errors you can use the new `elasticsearch.ApiError` base class. - -[source,python] ------------------------------------- -from elasticsearch import TransportError, Elasticsearch - -try: - client.indices.get(index="index-that-does-not-exist") - -# In elasticsearch-py v7.x this would capture the resulting -# 'NotFoundError' that would be raised above. But in 8.0.0 this -# 'except TransportError' won't capture 'NotFoundError'. -except TransportError as err: - print(f"TransportError: {err}") ------------------------------------- - -The `elasticsearch.ElasticsearchException` base class has been removed as well. If you'd like to capture all errors that can be raised from the library you can capture both `elasticsearch.ApiError` and `elasticsearch.TransportError`: - -[source,python] ------------------------------------- -from elasticsearch import TransportError, ApiError, Elasticsearch - -try: - client.search(...) -# This is the 'except' clause you should use if you *actually* want to -# capture both Transport errors and API errors in one clause: -except (ApiError, TransportError) as err: - ... - -# However I recommend you instead split each error into their own 'except' -# clause so you can have different behavior for TransportErrors. This -# construction wasn't possible in 7.x and earlier. -try: - client.search(...) -except ApiError as err: - ... # API errors handled here -except TransportError as err: - ... # Transport errors handled here ------------------------------------- - -`elasticsearch.helpers.errors.BulkIndexError` and `elasticsearch.helpers.errors.ScanError` now use `Exception` as a base class instead of `ElasticsearchException`. - -Another difference between 7.x and 8.0 errors is their properties. Previously there were `status_code`, `info`, and `error` properties that weren't super useful as they'd be a mix of different value types depending on what the error was and what layer it'd been raised from (transport versus API). You can inspect the error and get response metadata via `meta` and response via `body`` from an `ApiError` instance: - -[source,python] ------------------------------------- -from elasticsearch import ApiError, Elasticsearch - -try: - client.indices.get(index="index-that-does-not-exist") -except ApiError as err: - print(err.meta.status) - # 404 - print(err.meta.headers) - # {'content-length': '200', ...} - print(err.body) - # { - # 'error': { - # 'type': 'index_not_found_exception', - # 'reason': 'no such index', - # 'resource.type': 'index_or_alias', - # ... - # }, - # 'status': 404 - # } ------------------------------------- diff --git a/docs/guide/open-telemetry.asciidoc b/docs/guide/open-telemetry.asciidoc deleted file mode 100644 index 9bbc1da47..000000000 --- a/docs/guide/open-telemetry.asciidoc +++ /dev/null @@ -1,75 +0,0 @@ -[[opentelemetry]] -=== Using OpenTelemetry - -You can use https://opentelemetry.io/[OpenTelemetry] to monitor the performance and behavior of your {es} requests through the Elasticsearch Python client. -The Python client comes with built-in OpenTelemetry instrumentation that emits https://www.elastic.co/guide/en/apm/guide/current/apm-distributed-tracing.html[distributed tracing spans] by default. -With that, applications using https://www.elastic.co/blog/manual-instrumentation-of-python-applications-opentelemetry[manual OpenTelemetry instrumentation] or https://www.elastic.co/blog/auto-instrumentation-of-python-applications-opentelemetry[automatic OpenTelemetry instrumentation] are enriched with additional spans that contain insightful information about the execution of the {es} requests. - -The native instrumentation in the Python client follows the https://opentelemetry.io/docs/specs/semconv/database/elasticsearch/[OpenTelemetry Semantic Conventions for {es}]. In particular, the instrumentation in the client covers the logical layer of {es} requests. A single span per request is created that is processed by the service through the Python client. The following image shows a trace that records the handling of two different {es} requests: an `info` request and a `search` request. - -[role="screenshot"] -image::images/otel-waterfall-without-http.png[alt="Distributed trace with Elasticsearch spans",align="center"] - -Usually, OpenTelemetry auto-instrumentation modules come with instrumentation support for HTTP-level communication. In this case, in addition to the logical {es} client requests, spans will be captured for the physical HTTP requests emitted by the client. The following image shows a trace with both, {es} spans (in blue) and the corresponding HTTP-level spans (in red) after having installed the ``opentelemetry-instrumentation-urllib3`` package: - -[role="screenshot"] -image::images/otel-waterfall-with-http.png[alt="Distributed trace with Elasticsearch spans",align="center"] - -Advanced Python client behavior such as nodes round-robin and request retries are revealed through the combination of logical {es} spans and the physical HTTP spans. The following example shows a `search` request in a scenario with two nodes: - -[role="screenshot"] -image::images/otel-waterfall-retry.png[alt="Distributed trace with Elasticsearch spans",align="center"] - -The first node is unavailable and results in an HTTP error, while the retry to the second node succeeds. Both HTTP requests are subsumed by the logical {es} request span (in blue). - -[discrete] -==== Setup the OpenTelemetry instrumentation - -When using the https://opentelemetry.io/docs/languages/python/instrumentation/[manual Python OpenTelemetry instrumentation] or the https://opentelemetry.io/docs/languages/python/automatic/[OpenTelemetry Python agent], the Python client's OpenTelemetry instrumentation is enabled by default and uses the global OpenTelemetry SDK with the global tracer provider. -If you're getting started with OpenTelemetry instrumentation, the following blog posts have step-by-step instructions to ingest and explore tracing data with the Elastic stack: - -* https://www.elastic.co/blog/manual-instrumentation-of-python-applications-opentelemetry[Manual instrumentation with OpenTelemetry for Python applications] -* https://www.elastic.co/blog/auto-instrumentation-of-python-applications-opentelemetry[Automatic instrumentation with OpenTelemetry for Python applications] - -[discrete] -=== Comparison with community instrumentation - -The https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/elasticsearch/elasticsearch.html[commmunity OpenTelemetry Elasticsearch instrumentation] also instruments the client and sends OpenTelemetry traces, but was developed before the OpenTelemetry Semantic Conventions for {es}, so the traces attributes are inconsistent with other OpenTelemetry Elasticsearch client instrumentations. To avoid tracing the same requests twice, make sure to use only one instrumentation, either by uninstalling the opentelemetry-instrumentation-elasticsearch Python package or by <>. - -[discrete] -==== Configuring the OpenTelemetry instrumentation - -You can configure this OpenTelemetry instrumentation through environment variables. -The following configuration options are available. - -[discrete] -[[opentelemetry-config-enable]] -===== Enable / Disable the OpenTelemetry instrumentation - -With this configuration option you can enable (default) or disable the built-in OpenTelemetry instrumentation. - -**Default:** `true` - -|============ -| Environment Variable | `OTEL_PYTHON_INSTRUMENTATION_ELASTICSEARCH_ENABLED` -|============ - -[discrete] -===== Capture search request bodies - -Per default, the built-in OpenTelemetry instrumentation does not capture request bodies due to data privacy considerations. You can use this option to enable capturing of search queries from the request bodies of {es} search requests in case you wish to gather this information regardless. The options are to capture the raw search query or not capture it at all. - -**Default:** `omit` - -**Valid Options:** `omit`, `raw` - -|============ -| Environment Variable | `OTEL_PYTHON_INSTRUMENTATION_ELASTICSEARCH_CAPTURE_SEARCH_QUERY` -|============ - -[discrete] -==== Overhead - -The OpenTelemetry instrumentation (as any other monitoring approach) may come with a slight overhead on CPU, memory, and/or latency. The overhead may only occur when the instrumentation is enabled (default) and an OpenTelemetry SDK is active in the target application. When the instrumentation is disabled or no OpenTelemetry SDK is active within the target application, monitoring overhead is not expected when using the client. - -Even in cases where the instrumentation is enabled and is actively used (by an OpenTelemetry SDK), the overhead is minimal and negligible in the vast majority of cases. In edge cases where there is a noticeable overhead, the <> to eliminate any potential impact on performance. diff --git a/docs/guide/overview.asciidoc b/docs/guide/overview.asciidoc deleted file mode 100644 index 2b331e08c..000000000 --- a/docs/guide/overview.asciidoc +++ /dev/null @@ -1,89 +0,0 @@ -[[overview]] -== Overview - -This is the official low-level Python client for {es}. Its goal is to provide -common ground for all {es}-related code in Python. For this reason, the client -is designed to be unopinionated and extendable. An API reference is available -on https://elasticsearch-py.readthedocs.io[Read the Docs]. - - -[discrete] -=== Compatibility - -Language clients are forward compatible; meaning that the clients support -communicating with greater or equal minor versions of {es} without breaking. It -does not mean that the clients automatically support new features of newer -{es} versions; it is only possible after a release of a new client version. For -example, a 8.12 client version won't automatically support the new features of -the 8.13 version of {es}, the 8.13 client version is required for that. {es} -language clients are only backwards compatible with default distributions and -without guarantees made. - -|=== -| Elasticsearch version | elasticsearch-py branch | Supported - -| main | main | -| 8.x | 8.x | 8.x -| 7.x | 7.x | 7.17 -|=== - -If you have a need to have multiple versions installed at the same time older -versions are also released as `elasticsearch7` and `elasticsearch8`. - - -[discrete] -=== Example use - -Simple use-case: - -[source,python] ------------------------------------- ->>> from datetime import datetime ->>> from elasticsearch import Elasticsearch - -# Connect to 'http://localhost:9200' ->>> client = Elasticsearch("http://localhost:9200") - -# Datetimes will be serialized: ->>> client.index(index="my-index-000001", id=42, document={"any": "data", "timestamp": datetime.now()}) -{'_id': '42', '_index': 'my-index-000001', '_type': 'test-type', '_version': 1, 'ok': True} - -# ...but not deserialized ->>> client.get(index="my-index-000001", id=42)['_source'] -{'any': 'data', 'timestamp': '2013-05-12T19:45:31.804229'} ------------------------------------- - -TIP: For an elaborate example of how to ingest data into Elastic Cloud, -refer to {cloud}/ec-getting-started-python.html[this page]. - - -[discrete] -=== Features - -The client's features include: - -* Translating basic Python data types to and from JSON - -* Configurable automatic discovery of cluster nodes - -* Persistent connections - -* Load balancing (with pluggable selection strategy) across all available nodes - -* Node timeouts on transient errors - -* Thread safety - -* Pluggable architecture - -The client also contains a convenient set of -https://elasticsearch-py.readthedocs.org/en/master/helpers.html[helpers] for -some of the more engaging tasks like bulk indexing and reindexing. - - -[discrete] -=== Elasticsearch Python DSL - -For a higher level access with more limited scope, have a look at the DSL module, -which provides a more convenient and idiomatic way to write and manipulate -queries. diff --git a/docs/guide/release-notes.asciidoc b/docs/guide/release-notes.asciidoc deleted file mode 100644 index 1b8d3957f..000000000 --- a/docs/guide/release-notes.asciidoc +++ /dev/null @@ -1,714 +0,0 @@ -[[release-notes]] -== Release notes - -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> - -[discrete] -[[rn-8-17-1]] -=== 8.17.1 (2025-01-23) - -- Make pyarrow dependency optional for tests (https://github.com/elastic/elasticsearch-py/pull/2733[#2733], contributed by danigm) -- Update APIs: - * Add Simulate ingest API - * Add Get data stream lifecycle stats API - * Add Update inference API - * Add Create or update, Get and Delete IP geolocation database configuration APIs - * Add Bulk update API keys - * Add Get and Update Security index settings APIs - * Add OpenID Connect prepare authentication, OpenID Connect authenticate and OpenID Connect logout APIs - * Add Delegate PKI authentication API - * Add Repository analysis API - * Add Render Search Application Query API - * Add Find field structure and Find messages structure APIs - * Add Get Watcher index settings and Update Watcher index settings APIs - * Add experimental Check in and Claim connector sync job APIs - * Add experimental Set connector sync job errors and Set connector sync job stats APIs - * Add experimental Update connector features APIs - * Add experimental Post Event to an Analytics Collection API - * Add `timeout` and `master_timeout` to Snapshot lifecycle management (SLM) APIs - * Add `allow_partial_search_results` to SQL search API - * Add `throttle_period_in_millis` to Create or update watch API - * Fix query parameters for CAT APIs - -[discrete] -[[rn-8-17-0]] -=== 8.17.0 (2024-12-13) - -- Allow simsimd again on Python 3.13 (https://github.com/elastic/elasticsearch-py/pull/2722[#2722]) -- Update APIs: - * Mark all Inference APIs as stable. - * Add `allow_partial_search_results` to the Open Point in Time API - * Add `keep_alive` to the Get async search status API - * Remove the `keep_alive`, `pre_filter_shard_size` and `scroll` parameters from the Submit async search API. They were never supported. - * Add `master_timeout` and `timeout` to all autoscaling policy APIs - * Add `master_timeout` to the Alias exists and Get alias APIs - * Add `list_executed_pipelines` and `require_data_stream` to Bulk API - * Add `include_model_definition` to Get trained models API - * Add `meta` to Create data frame analytics API - * Add `aggs` to Create datafeeds API - * Add `allow_no_indices`, `expand_wildcards`, `ignore_throttled` and `ignore_unavailable` to Create anomaly detection jobs API - -[discrete] -[[rn-8-16-0]] -=== 8.16.0 (2024-11-12) - -- Support Python 3.13 (https://github.com/elastic/elasticsearch-py/pull/2689[#2689]) -- Emit Python warnings for beta and tech preview APIs (https://github.com/elastic/elasticsearch-py/pull/2685[#2685]) -- Vectorstore: use a retriever query for hybrid search (https://github.com/elastic/elasticsearch-py/pull/2682[#2682]) -- Allow retries for statuses other than 429 in streaming bulk (https://github.com/elastic/elasticsearch-py/pull/2702[#2702]) -- Make `BulkIndexError` and `ScanError` serializable (https://github.com/elastic/elasticsearch-py/pull/2700[#2700]) -- Fix import when `trace` is missing from `opentelemetry` package (https://github.com/elastic/elasticsearch-py/pull/2705[#2705]) -- Update APIs: - * Fix `nodes` parameter in Task management API - * Add Test query rule API - * Add Create Cross-Cluster API key and Update Cross-Cluster API key APIs - * Add Verify snapshot repository API - * Add `data_stream_name` and `settings` to Delete auto-follow pattern API - * Add `max_samples_per_key` to Get async EQL status API - * Add `lifecycle` and remove unused `data_retention` and `downsampling parameters` from Put data stream lifecycle API - * Add `include_remotes` and remove `flat_settings` from Cluster stats API - * Add `remote_indices` to Create or update application privileges and Create or update roles APIs - -Note that the new Python warnings can be disabled as follows: - -[source,python] ----- -import warnings -from elasticsearch.exceptions import GeneralAvailabilityWarning - -warnings.filterwarnings("ignore", category=GeneralAvailabilityWarning) ----- - -[discrete] -[[rn-8-15-1]] -=== 8.15.1 (2024-09-08) - -- Fix OTel context loss in parallel bulk helper (https://github.com/elastic/elasticsearch-py/pull/2616[#2616]) -- Use request converter to generate python examples (https://github.com/elastic/elasticsearch-py/pull/2645[#2645]) -- Add Geoip database configuration APIs: Create or update, Get and Delete -- Add `q` parameter to Update by Query API -- Add `allow_no_indices` and `ignore_unavailable` parameters to Resolve index API - -[discrete] -[[rn-8-15-0]] -=== 8.15.0 (2024-08-09) - -- Added the Connector API (https://github.com/elastic/elasticsearch-py/pull/2623[#2623]) -- Added support for https://www.elastic.co/guide/en/elasticsearch/reference/master/semantic-text.html[semantic_text] and https://www.elastic.co/guide/en/elasticsearch/reference/master/query-dsl-semantic-query.html[semantic query]. -- Added support for sequences of job id, model id and tags where applicable in ML APIs -- Added `dry_run` and `force` parameters to the Perform inference API -- Added optional Arrow deserialization support (https://github.com/elastic/elasticsearch-py/pull/2632[#2632]) -- Merged Query Ruleset API into new Query Rules API (https://github.com/elastic/elasticsearch-py/pull/2607[#2607]) -- Added mapping code examples (https://github.com/elastic/elasticsearch-py/pull/2596[#2596]) -- Fixed reference docs (https://github.com/elastic/elasticsearch-py/pull/2629[#2629]) -- Dropped Python 3.7 support (https://github.com/elastic/elasticsearch-py/pull/2618[#2618]) - -[discrete] -[[rn-8-14-0]] -=== 8.14.0 (2024-06-06) - -- Fixed `node_pool_class` override (#2581, contributed by Tallak Hellebust) -- Added `retriever` to the Search API -- Added `deprecated` and removed `allow_auto_create` from the Create or update component template API -- Added `allow_auto_create`, `cause`, `deprecated`, `ignore_missing_component_templates` and `master_timeout` to the Create or update index template API -- Added `cause`, removed `flat_settings` and `timeout` from the Create or update index template legacy API -- Removed various unsupported parameters from the Simulate index API -- Added various supported paramters to the Simulate index template API -- Added the `completion` and `rerank` task types to the Inference APIs -- Added the `query` and `timeout` parameters to the Perform inference API -- Added `typed_keys` to the Search Application Search API -- Added `with_profile_uid` to the Get API key information and Query API key information APIs - - -[discrete] -[[rn-8-13-2]] -=== 8.13.2 (2024-05-24) - -- Added the `ml.update_trained_model_deployment` API -- Marked Requests 2.32.2 as incompatible with the Elasticsearch client - -[discrete] -[[rn-8-13-1]] -=== 8.13.1 (2024-05-03) - -- Added `force_synthetic_source` to the Get API -- Added `wait_for_completion` to the Create trained model API -- Added `typed_keys` to the Query API key information API - -[discrete] -[[rn-8-13-0]] -=== 8.13.0 (2024-03-22) - -- Added native OpenTelemetry support -- Added optional `orjson` (a fast, correct JSON library) serialization support -- Added the `text_structure.test_grok_pattern` API -- Added the `indices.resolve_cluster` API -- Renamed the `model_id` parameter to `inference_id` in the `inference` APIs -- Changed all `synonyms` APIs from **experimental** to **stable**. -- Fixed API key documentation - -[discrete] -[[rn-8-12-1]] -=== 8.12.1 (2024-02-22) - -- Fixed but deprecated parameter aliases in body parameter -- Added mappings and bulk to quickstart page - -[discrete] -[[rn-8-12-0]] -=== 8.12.0 (2024-01-19) - -- Dropped support for Python 3.6 -- Allowed unrestricted `body` parameter again -- Added the Inference APIs -- Added the ES|QL API -- Added `active_only` parameter to `security.get_api_key` API -- Added `expiration` parameter to `security.update_api_key` API - -[discrete] -[[rn-8-11-1]] -=== 8.11.1 (2023-12-08) - -- Added missing `role_templates` to `security.put_role_mapping` API -- Added interactive examples page to documentation -- Changed API reference to have one page per sub-client - -[discrete] -[[rn-8-11-0]] -=== 8.11.0 (2023-11-13) - -- Support Python 3.12 -- Added missing `scores` parameter to create trained model vocabulary API -- Added missing `delete_dest_index` parameter to delete transform API - -[discrete] -[[rn-8-10-1]] -=== 8.10.1 (2023-10-13) - -- Removed deprecation warnings when using `body` parameter -- Fixed some type hints to use covariant Sequence instead of invariant List - -[discrete] -[[rn-8-10-0]] -=== 8.10.0 (2023-09-22) - -- Added the Query rules APIs -- Added the Synonyms APIs - -[discrete] -[[rn-8-9-0]] -=== 8.9.0 (2023-08-10) - -- Added the `cluster.info` API -- Updated the `inference_config` argument in `ml.put_trained_model` API to reflect an improvement in the specification - -[discrete] -[[rn-8-8-1]] -=== 8.8.1 (2023-07-06) - -* Added the `rank` parameter to the `search` API - -[discrete] -[[rn-8-8-0]] -=== 8.8.0 (2023-05-25) - -* Added `include_defaults` parameter to the `cluster.get_component_template`, `indices.get_data_stream`, and `indices.get_index_template` API -* Added the `indices.delete_data_lifecycle`, `indices.explain_data_lifecycle`, `indices.get_data_lifecycle`, and `indices.put_data_lifecycle` APIs -* Added the **experimental** `search_application.delete`, `search_application.delete_behavioral_analytics`, `search_application.get`, `search_application.get_behavioral_analytics`, `search_application.list`, `search_application.put`, `search_application.put_behavioral_analytics`, and `search_application.search` APIs. - -[discrete] -[[rn-8-7-0]] -=== 8.7.0 (2023-04-06) - -* Added the `health_report` API -* Added the `transform.schedule_now_transform` API -* Added the `from_` request parameter to the `transform.start_transform` API -* Added the `buffer`, `grid_agg`, and `with_labels` parameters to the `search_mvt` API -* Added the `allow_auto_create` parameter to the `cluster.create_component_template` API -* Added the `delete_user_annotations` parameter to the `ml.delete_job`, `ml.reset_job` API -* Added the `start` and `end` parameters to the `ml.preview_datafeed` API -* Added the `priority` parameter to the `ml.start_datafeed` API -* Added the `job_id` parameter to the `ml.update_datafeed` API -* Added the `model_prune_window` parameter to the `ml.update_job` API -* Added the `feature_states` parameter to the `snapshot.restore_snapshot` API -* Added the `timeout` parameter to the `transform.get_transform_stats` API -* Added the `from_` parameter to the `transform.start_transform` API -* Changed the `input` parameter of the `ml.put_trained_models` API from required to optional -* Fixed the `cluster.create_component_template` API by removing the erroneously provided `aliases`, `mappings`, and `settings` parameters. Only the `template` parameter should be used for specifying component templates. - -[discrete] -[[rn-8-6-2]] -=== 8.6.2 (2023-02-16) - -* Client is compatible with Elasticsearch 8.6.2 - -[discrete] -[[rn-8-6-1]] -=== 8.6.1 (2023-01-27) - -* Client is compatible with Elasticsearch 8.6.1 - -[discrete] -==== Core - -* Added the `expand_wildcards`, `preference`, and `routing` parameters to the `open_point_in_time` API. - -[discrete] -[[rn-8-6-0]] -=== 8.6.0 (2023-01-10) - -* Client is compatible with Elasticsearch 8.6.0 - -[discrete] -==== Core - -* Changed the `fields` parameter of the `field_caps` API to be encoded in the HTTP request body. -* Changed the `index` parameter of the `rank_eval` API to be optional. -* Changed the `requests` parameter of the `rank_eval` API to be optional. - -[discrete] -==== CAT - -* Added the `time` parameter to the `cat.indices` API - -[discrete] -==== Machine Learning - -* Fixed the `model_id` parameter of the `ml.clear_trained_model_deployment_cache` API to be required. - -[discrete] -[[rn-8-5-3]] -=== 8.5.3 (2022-12-08) - -* Client is compatible with Elasticsearch 8.5.3 - -[discrete] -[[rn-8-5-2]] -=== 8.5.2 (2022-11-23) - -* Client is compatible with Elasticsearch 8.5.2 - -[discrete] -[[rn-8-5-1]] -=== 8.5.1 (2022-11-21) - -* Client is compatible with Elasticsearch 8.5.1 - -[discrete] -[[rn-8-5-0]] -=== 8.5.0 (2022-11-2) - -[discrete] -==== Indices - -* Added the **experimental** `indices.downsample` API - -[discrete] -==== Rollup - -* Removed the deprecated `rollup.rollup` API. - -[discrete] -==== Snapshot - -* Added the `index_names` parameter to the `snapshot.get` API. - -[discrete] -==== Machine Learning - -* Added the **beta** `ml.clear_trained_model_deployment_cache` API. -* Changed the `ml.put_trained_model_definition_part` API from **experimental** to **stable**. -* Changed the `ml.put_trained_model_vocabulary` API from **experimental** to **stable**. -* Changed the `ml.start_trained_model_deployment` API from **experimental** to **stable**. -* Changed the `ml.stop_trained_model_deployment` API from **experimental** to **stable**. - -[discrete] -==== Security - -* Added the `with_limited_by` parameter to the `get_api_key` API. -* Added the `with_limited_by` parameter to the `query_api_keys` API. -* Added the `with_profile_uid` parameter to the `get_user` API. -* Changed the `security.activate_user_profile` API from **beta** to **stable**. -* Changed the `security.disable_user_profile` API from **beta** to **stable**. -* Changed the `security.enable_user_profile` API from **beta** to **stable**. -* Changed the `security.get_user_profile` API from **beta** to **stable**. -* Changed the `security.suggest_user_profiles` API from **beta** to **stable**. -* Changed the `security.update_user_profile_data` API from **beta** to **stable**. -* Changed the `security.has_privileges_user_profile` API from **experimental** to **stable**. - -[discrete] -[[rn-8-4-3]] -=== 8.4.3 (2022-10-06) - -* Client is compatible with Elasticsearch 8.4.3 - -[discrete] -[[rn-8-4-2]] -=== 8.4.2 (2022-09-20) - -[discrete] -==== Documents - -* Added the `error_trace`, `filter_path`, `human` and `pretty` parameters to the `get_source` API. -* Added the `ext` parameter to the `search` API. - -[discrete] -==== Async Search - -* Added the `ext` parameter to the `async_search.submit` API. - -[discrete] -==== Fleet - -* Added the `ext` parameter to the `fleet.search` API. - -[discrete] -[[rn-8-4-1]] -=== 8.4.1 (2022-09-06) - -* Client is compatible with Elasticsearch 8.4.1 - -[discrete] -[[rn-8-4-0]] -=== 8.4.0 (2022-08-25) - -[discrete] -==== Search - -* Added the `knn` parameter to the `search` API. -* Added the `knn` parameter to the `async_search.submit` API. - -[discrete] -==== Machine Learning - -* Added the `cache_size` parameter to the `ml.start_trained_model_deployment` API. - -[discrete] -==== Security - -* Added the `security.update_api_key` API. - -[discrete] -[[rn-8-3-3]] -=== 8.3.3 (2022-08-01) - -* Client is compatible with Elasticsearch 8.3.3 - -[discrete] -[[rn-8-3-2]] -=== 8.3.2 (2022-08-01) - -[discrete] -==== Security - -* Added the `refresh` parameter to the `security.create_service_token` API. - -[discrete] -[[rn-8-3-1]] -=== 8.3.1 (2022-06-30) - -[discrete] -==== Security - -* Added the **experimental** `security.has_privileges_user_profile` API. -* Added the `hint` parameter to the **experimental** `security.suggest_user_profiles` API. - -[discrete] -[[rn-8-3-0]] -=== 8.3.0 (2022-06-29) - -* Client is compatible with Elasticsearch 8.3.0 - -[discrete] -[[rn-8-2-3]] -=== 8.2.3 (2022-06-15) - -[discrete] -==== Documents - -* Added the `routing` parameter to the `msearch` API. - -[discrete] -==== CAT - -* Added the `cat.component_templates` API. - -[discrete] -==== Ingest - -* Added the `if_version` parameter to the `ingest.put_pipeline` API. - -[discrete] -==== Security - -* Changed the `name` parameter for the `security.create_service_token` API from required to optional. -* Added the `refresh` parameter to the `security.create_service_token` API. -* Changed the name of `access` parameter to the `labels` parameter in the `security.update_user_profile_data` API. - -[discrete] -==== Shutdown - -* Added the `timeout` and `master_timeout` parameters to the `shutdown.get_node`, `shutdown.delete_node`, and `shutdown.put_node` APIs. -* Added the `reason`, `type`, `allocation_delay`, and `target_node_name` parameters to the `shutdown.put_node` API. - -[discrete] -[[rn-8-2-2]] -=== 8.2.2 (2022-06-01) - -* Client is compatible with Elasticsearch 8.2.2 - -[discrete] -[[rn-8-2-1]] -=== 8.2.1 (2022-06-01) - -[discrete] -==== Machine Learning - -* Added the `inference_config` parameter to the `ml.infer_trained_model_deployment` API - -[discrete] -[[rn-8-2-0]] -=== 8.2.0 (2022-05-03) - -[discrete] -==== Client - -* Re-introduced support for passing `requests.auth.BaseAuth` objects to the `http_auth` parameter which was available in 7.x. - -[discrete] -==== Search - -* Added the `filter` parameter to the **experimental** `knn_search` API - -[discrete] -==== Documents - -* Changed the `source` and `dest` parameters for the `reindex` API from optional to required - -[discrete] -==== Indices - -* Added the `indices.field_usage_stats` API -* Added the `indices.modify_data_stream` API -* Added the `fields` and `types` parameters to the `field_caps` API -* Added the `ignore_unvailable` parameter to the `open_point_in_time` API -* Added the `master_timeout` and `timeout` parameters to the `indices.delete` API -* Added the `features` parameter to the `indices.get` API - -[discrete] -==== Machine Learning - -* Added the `ml.get_memory_stats` API - -[discrete] -==== Migrations - -* Added the `migrations.get_feature_upgrade_status` API -* Added the `migrations.post_feature_upgrade` API - -[discrete] -==== Nodes - -* Added the `nodes.clear_repositories_metering_archive` API -* Added the `nodes.get_repositories_metering_info` API - -[discrete] -==== Security - -* Added the **beta** `security.activate_user_profile` API -* Added the **beta** `security.disable_user_profile` API -* Added the **beta** `security.enable_user_profile` API -* Added the **beta** `security.get_user_profile` API -* Added the **beta** `security.suggest_user_profiles` API -* Added the **beta** `security.update_user_profile_data` API - -[discrete] -==== SQL - -* Added the `catalog`, `index_using_frozen`, `keep_alive`, `keep_on_completion`, `runtime_mappings`, and `wait_for_completion_timeout` parameters to the `sql.query` API - -[discrete] -[[rn-8-1-2]] -=== 8.1.2 (2022-03-30) - -* Client is compatible with Elasticsearch 8.1.2 - - -[discrete] -[[rn-8-1-1]] -=== 8.1.1 (2022-03-22) - -[discrete] -==== Documents - -* Changed the `source` and `dest` parameters of the `reindex` API to be required. - -[discrete] -==== Mappings - -* Changed the `fields` parameter of the `field_caps` API to be required. - - -[discrete] -[[rn-8-1-0]] -=== 8.1.0 (2022-03-08) - -[discrete] -==== Transforms - -* Added the `transform.reset_transform` API - - -[discrete] -[[rn-8-0-0]] -=== 8.0.0 (2022-02-10) - -[discrete] -==== Added - -* Added the top-level `.options()` method to `Elasticsearch` and `AsyncElasticsearch` for modifying transport options. -* Added parameters corresponding to JSON request body fields for all APIs -* Added `basic_auth` parameter for specifying username and password authentication -* Added `bearer_auth` parameter for specifying an HTTP bearer token or service token -* Added the `meta` property to `ApiError` to access the HTTP response metadata of an error. -* Added a check that a compatible version of the `elastic-transport` package is installed. - -[discrete] -==== Changed - -* Changed the transport layer to use the `elastic-transport` package -* Changed user-defined `body` parameters to have semantic names (e.g `index(document={...})` instead of `index(body={...})`). -* Changed responses to be objects with two properties, `meta` for response metadata (HTTP status, headers, node, etc) and `body` for a typed body. -* Changed `AsyncElasticsearch` to always be available, regardless of whether `aiohttp` is installed -* Changed exception hierarchy, the major change is a new exception `ApiError` which differentiates between an error that's raised from the transport layer (previously `elasticsearch.exceptions.TransportError`, now `elastic_transport.TransportError`) and one raised from the API layer -* Changed the name of `JSONSerializer` to `JsonSerializer` for consistency with other serializer names. Added an alias to the old name for backwards compatibility -* Changed the default mimetypes (`application/json`) to instead use compatibility mimetypes (`application/vnd.elasticsearch+json`) which always request for responses compatibility with version 8.x. - -[discrete] -==== Removed - -* Removed support for Python 2.7 and Python 3.5, the library now supports only Python 3.6+ -* Removed the `elasticsearch.connection` module as all functionality has been moved to the `elastic-transport` package -* Removed the default URL of `http://localhost:9200` due to Elasticsearch 8.0 default configuration being `https://localhost:9200`. - The client's connection to Elasticsearch now must be specified with scheme, host, and port or with the `cloud_id` parameter -* Removed the ability to use positional arguments with API methods. Going forward all API parameters must be keyword-only parameters -* Removed the `doc_type`, `include_type_name`, and `copy_settings` parameters from many document and index APIs - -[discrete] -==== Deprecated - -* Deprecated the `body` and `params` parameters on all APIs -* Deprecated setting transport options `http_auth`, `api_key`, `ignore`, `request_timeout`, `headers`, and `opaque_id` - All of these settings should instead be set via the `.options()` method -* Deprecated the `elasticsearch.transport` and `elasticsearch.client` modules. These modules will be removed in a future version - -[discrete] -==== CAT - -* Removed the deprecated `local` parameter from the `cat.indices`, `cat.nodes`, `cat.shards` API -* Removed the deprecated `allow_no_datafeeds` parameter from the `cat.ml_datafeeds` API -* Removed the deprecated `allow_no_jobs` parameter from the `cat.ml_jobs` API -* Removed the deprecated `size` parameter from the `cat.thread_pool` API -* Added the `time` parameter to the `cat.thread_pool` API - -[discrete] -==== Documents - -* Removed the deprecated `size` parameter from the `delete_by_query` API -* Removed the deprecated `size` parameter from the `update_by_query` API - -[discrete] -==== Indices - -* Removed the deprecated `indices.flush_synced` API -* Removed the deprecated `indices.freeze` API -* Removed the deprecated `indices.get_upgrade` API -* Removed the deprecated `indices.upgrade` API -* Removed the deprecated `indices.exist_type` API -* Removed the deprecated parameter `copy_settings` from the `indices.shrink` API -* Deprecated the `verbose` parameter of the `indices.segments` API - -[discrete] -==== License / X-Pack - -* Deprecated the `accept_enterprise` parameter of the `license.get` API -* Deprecated the `accept_enterprise` parameter of the `xpack.info` API - -[discrete] -==== Machine Learning - -* Added the **experimental** `ml.infer_trained_model_deployment` API -* Added the **experimental** `ml.put_trained_model_definition_part` API -* Added the **experimental** `ml.put_trained_model_vocabulary` API -* Added the **experimental** `ml.start_trained_model_deployment` API -* Added the **experimental** `ml.stop_trained_model_deployment` API -* Added the `timeout` parameter to the `ml.delete_trained_model` API -* Removed the deprecated `allow_no_jobs` parameter from the `ml.close_job` API -* Removed the deprecated `ml.find_text_structure` API -* Removed the deprecated `allow_no_datafeeds` parameter from the `ml.get_datafeed_stats` API -* Removed the deprecated `allow_no_datafeeds` parameter from the `ml.get_datafeeds` API -* Removed the deprecated `allow_no_jobs` parameter from the `ml.get_job_stats` API -* Removed the deprecated `allow_no_jobs` parameter from the `ml.get_jobs` API -* Removed the deprecated `allow_no_jobs` parameter from the `ml.get_overall_buckets` API - -[discrete] -==== Search - -* Added the **experimental** `knn_search` API - -[discrete] -==== Searchable Snapshots - -* Removed the deprecated `searchable_snapshots.repository_stats` API - -[discrete] -==== Snapshots - -* Changed the `snapshot.delete` API to accept multiple snapshots - -[discrete] -==== Security - -* Added the `security.enroll_kibana` API -* Added the `security.enroll_node` API diff --git a/docs/logo-elastic-glyph-color.svg b/docs/logo-elastic-glyph-color.svg deleted file mode 100644 index 37a349291..000000000 --- a/docs/logo-elastic-glyph-color.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - From 4601f82a9d1bbde69af92913ed41a52b3b9363f7 Mon Sep 17 00:00:00 2001 From: Colleen McGinnis Date: Tue, 25 Feb 2025 19:16:40 -0600 Subject: [PATCH 2/5] add migrated files --- docs/docset.yml | 487 ++++++ docs/images/create-api-key.png | Bin 0 -> 80572 bytes docs/images/es-endpoint.jpg | Bin 0 -> 369643 bytes docs/images/otel-waterfall-retry.png | Bin 0 -> 50707 bytes docs/images/otel-waterfall-with-http.png | Bin 0 -> 44194 bytes docs/images/otel-waterfall-without-http.png | Bin 0 -> 35709 bytes docs/reference/_configuration.md | 105 ++ docs/reference/_examples.md | 9 + docs/reference/_how_to_guides.md | 1492 +++++++++++++++++++ docs/reference/_tutorials.md | 241 +++ docs/reference/async.md | 108 ++ docs/reference/client-helpers.md | 72 + docs/reference/configuration.md | 415 ++++++ docs/reference/connecting.md | 357 +++++ docs/reference/elasticsearch-dsl.md | 42 + docs/reference/esql-pandas.md | 422 ++++++ docs/reference/examples.md | 199 +++ docs/reference/getting-started.md | 180 +++ docs/reference/index.md | 69 + docs/reference/installation.md | 22 + docs/reference/integrations.md | 62 + docs/reference/opentelemetry.md | 80 + docs/reference/toc.yml | 19 + docs/release-notes/breaking-changes.md | 28 + docs/release-notes/deprecations.md | 28 + docs/release-notes/index.md | 27 + docs/release-notes/known-issues.md | 20 + docs/release-notes/toc.yml | 5 + 28 files changed, 4489 insertions(+) create mode 100644 docs/docset.yml create mode 100644 docs/images/create-api-key.png create mode 100644 docs/images/es-endpoint.jpg create mode 100644 docs/images/otel-waterfall-retry.png create mode 100644 docs/images/otel-waterfall-with-http.png create mode 100644 docs/images/otel-waterfall-without-http.png create mode 100644 docs/reference/_configuration.md create mode 100644 docs/reference/_examples.md create mode 100644 docs/reference/_how_to_guides.md create mode 100644 docs/reference/_tutorials.md create mode 100644 docs/reference/async.md create mode 100644 docs/reference/client-helpers.md create mode 100644 docs/reference/configuration.md create mode 100644 docs/reference/connecting.md create mode 100644 docs/reference/elasticsearch-dsl.md create mode 100644 docs/reference/esql-pandas.md create mode 100644 docs/reference/examples.md create mode 100644 docs/reference/getting-started.md create mode 100644 docs/reference/index.md create mode 100644 docs/reference/installation.md create mode 100644 docs/reference/integrations.md create mode 100644 docs/reference/opentelemetry.md create mode 100644 docs/reference/toc.yml create mode 100644 docs/release-notes/breaking-changes.md create mode 100644 docs/release-notes/deprecations.md create mode 100644 docs/release-notes/index.md create mode 100644 docs/release-notes/known-issues.md create mode 100644 docs/release-notes/toc.yml diff --git a/docs/docset.yml b/docs/docset.yml new file mode 100644 index 000000000..ce873e602 --- /dev/null +++ b/docs/docset.yml @@ -0,0 +1,487 @@ +project: 'Python client' +cross_links: + - apm-agent-php + - elasticsearch +toc: + - toc: reference + - toc: release-notes +subs: + ref: "https://www.elastic.co/guide/en/elasticsearch/reference/current" + ref-bare: "https://www.elastic.co/guide/en/elasticsearch/reference" + ref-8x: "https://www.elastic.co/guide/en/elasticsearch/reference/8.1" + ref-80: "https://www.elastic.co/guide/en/elasticsearch/reference/8.0" + ref-7x: "https://www.elastic.co/guide/en/elasticsearch/reference/7.17" + ref-70: "https://www.elastic.co/guide/en/elasticsearch/reference/7.0" + ref-60: "https://www.elastic.co/guide/en/elasticsearch/reference/6.0" + ref-64: "https://www.elastic.co/guide/en/elasticsearch/reference/6.4" + xpack-ref: "https://www.elastic.co/guide/en/x-pack/6.2" + logstash-ref: "https://www.elastic.co/guide/en/logstash/current" + kibana-ref: "https://www.elastic.co/guide/en/kibana/current" + kibana-ref-all: "https://www.elastic.co/guide/en/kibana" + beats-ref-root: "https://www.elastic.co/guide/en/beats" + beats-ref: "https://www.elastic.co/guide/en/beats/libbeat/current" + beats-ref-60: "https://www.elastic.co/guide/en/beats/libbeat/6.0" + beats-ref-63: "https://www.elastic.co/guide/en/beats/libbeat/6.3" + beats-devguide: "https://www.elastic.co/guide/en/beats/devguide/current" + auditbeat-ref: "https://www.elastic.co/guide/en/beats/auditbeat/current" + packetbeat-ref: "https://www.elastic.co/guide/en/beats/packetbeat/current" + metricbeat-ref: "https://www.elastic.co/guide/en/beats/metricbeat/current" + filebeat-ref: "https://www.elastic.co/guide/en/beats/filebeat/current" + functionbeat-ref: "https://www.elastic.co/guide/en/beats/functionbeat/current" + winlogbeat-ref: "https://www.elastic.co/guide/en/beats/winlogbeat/current" + heartbeat-ref: "https://www.elastic.co/guide/en/beats/heartbeat/current" + journalbeat-ref: "https://www.elastic.co/guide/en/beats/journalbeat/current" + ingest-guide: "https://www.elastic.co/guide/en/ingest/current" + fleet-guide: "https://www.elastic.co/guide/en/fleet/current" + apm-guide-ref: "https://www.elastic.co/guide/en/apm/guide/current" + apm-guide-7x: "https://www.elastic.co/guide/en/apm/guide/7.17" + apm-app-ref: "https://www.elastic.co/guide/en/kibana/current" + apm-agents-ref: "https://www.elastic.co/guide/en/apm/agent" + apm-android-ref: "https://www.elastic.co/guide/en/apm/agent/android/current" + apm-py-ref: "https://www.elastic.co/guide/en/apm/agent/python/current" + apm-py-ref-3x: "https://www.elastic.co/guide/en/apm/agent/python/3.x" + apm-node-ref-index: "https://www.elastic.co/guide/en/apm/agent/nodejs" + apm-node-ref: "https://www.elastic.co/guide/en/apm/agent/nodejs/current" + apm-node-ref-1x: "https://www.elastic.co/guide/en/apm/agent/nodejs/1.x" + apm-rum-ref: "https://www.elastic.co/guide/en/apm/agent/rum-js/current" + apm-ruby-ref: "https://www.elastic.co/guide/en/apm/agent/ruby/current" + apm-java-ref: "https://www.elastic.co/guide/en/apm/agent/java/current" + apm-go-ref: "https://www.elastic.co/guide/en/apm/agent/go/current" + apm-dotnet-ref: "https://www.elastic.co/guide/en/apm/agent/dotnet/current" + apm-php-ref: "https://www.elastic.co/guide/en/apm/agent/php/current" + apm-ios-ref: "https://www.elastic.co/guide/en/apm/agent/swift/current" + apm-lambda-ref: "https://www.elastic.co/guide/en/apm/lambda/current" + apm-attacher-ref: "https://www.elastic.co/guide/en/apm/attacher/current" + docker-logging-ref: "https://www.elastic.co/guide/en/beats/loggingplugin/current" + esf-ref: "https://www.elastic.co/guide/en/esf/current" + kinesis-firehose-ref: "https://www.elastic.co/guide/en/kinesis/{{kinesis_version}}" + estc-welcome-current: "https://www.elastic.co/guide/en/starting-with-the-elasticsearch-platform-and-its-solutions/current" + estc-welcome: "https://www.elastic.co/guide/en/starting-with-the-elasticsearch-platform-and-its-solutions/current" + estc-welcome-all: "https://www.elastic.co/guide/en/starting-with-the-elasticsearch-platform-and-its-solutions" + hadoop-ref: "https://www.elastic.co/guide/en/elasticsearch/hadoop/current" + stack-ref: "https://www.elastic.co/guide/en/elastic-stack/current" + stack-ref-67: "https://www.elastic.co/guide/en/elastic-stack/6.7" + stack-ref-68: "https://www.elastic.co/guide/en/elastic-stack/6.8" + stack-ref-70: "https://www.elastic.co/guide/en/elastic-stack/7.0" + stack-ref-80: "https://www.elastic.co/guide/en/elastic-stack/8.0" + stack-ov: "https://www.elastic.co/guide/en/elastic-stack-overview/current" + stack-gs: "https://www.elastic.co/guide/en/elastic-stack-get-started/current" + stack-gs-current: "https://www.elastic.co/guide/en/elastic-stack-get-started/current" + javaclient: "https://www.elastic.co/guide/en/elasticsearch/client/java-api/current" + java-api-client: "https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current" + java-rest: "https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current" + jsclient: "https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current" + jsclient-current: "https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current" + es-ruby-client: "https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current" + es-dotnet-client: "https://www.elastic.co/guide/en/elasticsearch/client/net-api/current" + es-php-client: "https://www.elastic.co/guide/en/elasticsearch/client/php-api/current" + es-python-client: "https://www.elastic.co/guide/en/elasticsearch/client/python-api/current" + defguide: "https://www.elastic.co/guide/en/elasticsearch/guide/2.x" + painless: "https://www.elastic.co/guide/en/elasticsearch/painless/current" + plugins: "https://www.elastic.co/guide/en/elasticsearch/plugins/current" + plugins-8x: "https://www.elastic.co/guide/en/elasticsearch/plugins/8.1" + plugins-7x: "https://www.elastic.co/guide/en/elasticsearch/plugins/7.17" + plugins-6x: "https://www.elastic.co/guide/en/elasticsearch/plugins/6.8" + glossary: "https://www.elastic.co/guide/en/elastic-stack-glossary/current" + upgrade_guide: "https://www.elastic.co/products/upgrade_guide" + blog-ref: "https://www.elastic.co/blog/" + curator-ref: "https://www.elastic.co/guide/en/elasticsearch/client/curator/current" + curator-ref-current: "https://www.elastic.co/guide/en/elasticsearch/client/curator/current" + metrics-ref: "https://www.elastic.co/guide/en/metrics/current" + metrics-guide: "https://www.elastic.co/guide/en/metrics/guide/current" + logs-ref: "https://www.elastic.co/guide/en/logs/current" + logs-guide: "https://www.elastic.co/guide/en/logs/guide/current" + uptime-guide: "https://www.elastic.co/guide/en/uptime/current" + observability-guide: "https://www.elastic.co/guide/en/observability/current" + observability-guide-all: "https://www.elastic.co/guide/en/observability" + siem-guide: "https://www.elastic.co/guide/en/siem/guide/current" + security-guide: "https://www.elastic.co/guide/en/security/current" + security-guide-all: "https://www.elastic.co/guide/en/security" + endpoint-guide: "https://www.elastic.co/guide/en/endpoint/current" + sql-odbc: "https://www.elastic.co/guide/en/elasticsearch/sql-odbc/current" + ecs-ref: "https://www.elastic.co/guide/en/ecs/current" + ecs-logging-ref: "https://www.elastic.co/guide/en/ecs-logging/overview/current" + ecs-logging-go-logrus-ref: "https://www.elastic.co/guide/en/ecs-logging/go-logrus/current" + ecs-logging-go-zap-ref: "https://www.elastic.co/guide/en/ecs-logging/go-zap/current" + ecs-logging-go-zerolog-ref: "https://www.elastic.co/guide/en/ecs-logging/go-zap/current" + ecs-logging-java-ref: "https://www.elastic.co/guide/en/ecs-logging/java/current" + ecs-logging-dotnet-ref: "https://www.elastic.co/guide/en/ecs-logging/dotnet/current" + ecs-logging-nodejs-ref: "https://www.elastic.co/guide/en/ecs-logging/nodejs/current" + ecs-logging-php-ref: "https://www.elastic.co/guide/en/ecs-logging/php/current" + ecs-logging-python-ref: "https://www.elastic.co/guide/en/ecs-logging/python/current" + ecs-logging-ruby-ref: "https://www.elastic.co/guide/en/ecs-logging/ruby/current" + ml-docs: "https://www.elastic.co/guide/en/machine-learning/current" + eland-docs: "https://www.elastic.co/guide/en/elasticsearch/client/eland/current" + eql-ref: "https://eql.readthedocs.io/en/latest/query-guide" + extendtrial: "https://www.elastic.co/trialextension" + wikipedia: "https://en.wikipedia.org/wiki" + forum: "https://discuss.elastic.co/" + xpack-forum: "https://discuss.elastic.co/c/50-x-pack" + security-forum: "https://discuss.elastic.co/c/x-pack/shield" + watcher-forum: "https://discuss.elastic.co/c/x-pack/watcher" + monitoring-forum: "https://discuss.elastic.co/c/x-pack/marvel" + graph-forum: "https://discuss.elastic.co/c/x-pack/graph" + apm-forum: "https://discuss.elastic.co/c/apm" + enterprise-search-ref: "https://www.elastic.co/guide/en/enterprise-search/current" + app-search-ref: "https://www.elastic.co/guide/en/app-search/current" + workplace-search-ref: "https://www.elastic.co/guide/en/workplace-search/current" + enterprise-search-node-ref: "https://www.elastic.co/guide/en/enterprise-search-clients/enterprise-search-node/current" + enterprise-search-php-ref: "https://www.elastic.co/guide/en/enterprise-search-clients/php/current" + enterprise-search-python-ref: "https://www.elastic.co/guide/en/enterprise-search-clients/python/current" + enterprise-search-ruby-ref: "https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current" + elastic-maps-service: "https://maps.elastic.co" + integrations-docs: "https://docs.elastic.co/en/integrations" + integrations-devguide: "https://www.elastic.co/guide/en/integrations-developer/current" + time-units: "https://www.elastic.co/guide/en/elasticsearch/reference/current/api-conventions.html#time-units" + byte-units: "https://www.elastic.co/guide/en/elasticsearch/reference/current/api-conventions.html#byte-units" + apm-py-ref-v: "https://www.elastic.co/guide/en/apm/agent/python/current" + apm-node-ref-v: "https://www.elastic.co/guide/en/apm/agent/nodejs/current" + apm-rum-ref-v: "https://www.elastic.co/guide/en/apm/agent/rum-js/current" + apm-ruby-ref-v: "https://www.elastic.co/guide/en/apm/agent/ruby/current" + apm-java-ref-v: "https://www.elastic.co/guide/en/apm/agent/java/current" + apm-go-ref-v: "https://www.elastic.co/guide/en/apm/agent/go/current" + apm-ios-ref-v: "https://www.elastic.co/guide/en/apm/agent/swift/current" + apm-dotnet-ref-v: "https://www.elastic.co/guide/en/apm/agent/dotnet/current" + apm-php-ref-v: "https://www.elastic.co/guide/en/apm/agent/php/current" + ecloud: "Elastic Cloud" + esf: "Elastic Serverless Forwarder" + ess: "Elasticsearch Service" + ece: "Elastic Cloud Enterprise" + eck: "Elastic Cloud on Kubernetes" + serverless-full: "Elastic Cloud Serverless" + serverless-short: "Serverless" + es-serverless: "Elasticsearch Serverless" + es3: "Elasticsearch Serverless" + obs-serverless: "Elastic Observability Serverless" + sec-serverless: "Elastic Security Serverless" + serverless-docs: "https://docs.elastic.co/serverless" + cloud: "https://www.elastic.co/guide/en/cloud/current" + ess-utm-params: "?page=docs&placement=docs-body" + ess-baymax: "?page=docs&placement=docs-body" + ess-trial: "https://cloud.elastic.co/registration?page=docs&placement=docs-body" + ess-product: "https://www.elastic.co/cloud/elasticsearch-service?page=docs&placement=docs-body" + ess-console: "https://cloud.elastic.co?page=docs&placement=docs-body" + ess-console-name: "Elasticsearch Service Console" + ess-deployments: "https://cloud.elastic.co/deployments?page=docs&placement=docs-body" + ece-ref: "https://www.elastic.co/guide/en/cloud-enterprise/current" + eck-ref: "https://www.elastic.co/guide/en/cloud-on-k8s/current" + ess-leadin: "You can run Elasticsearch on your own hardware or use our hosted Elasticsearch Service that is available on AWS, GCP, and Azure. https://cloud.elastic.co/registration{ess-utm-params}[Try the Elasticsearch Service for free]." + ess-leadin-short: "Our hosted Elasticsearch Service is available on AWS, GCP, and Azure, and you can https://cloud.elastic.co/registration{ess-utm-params}[try it for free]." + ess-icon: "image:https://doc-icons.s3.us-east-2.amazonaws.com/logo_cloud.svg[link=\"https://cloud.elastic.co/registration{ess-utm-params}\", title=\"Supported on Elasticsearch Service\"]" + ece-icon: "image:https://doc-icons.s3.us-east-2.amazonaws.com/logo_cloud_ece.svg[link=\"https://cloud.elastic.co/registration{ess-utm-params}\", title=\"Supported on Elastic Cloud Enterprise\"]" + cloud-only: "This feature is designed for indirect use by https://cloud.elastic.co/registration{ess-utm-params}[Elasticsearch Service], https://www.elastic.co/guide/en/cloud-enterprise/{ece-version-link}[Elastic Cloud Enterprise], and https://www.elastic.co/guide/en/cloud-on-k8s/current[Elastic Cloud on Kubernetes]. Direct use is not supported." + ess-setting-change: "image:https://doc-icons.s3.us-east-2.amazonaws.com/logo_cloud.svg[link=\"{ess-trial}\", title=\"Supported on {ess}\"] indicates a change to a supported https://www.elastic.co/guide/en/cloud/current/ec-add-user-settings.html[user setting] for Elasticsearch Service." + ess-skip-section: "If you use Elasticsearch Service, skip this section. Elasticsearch Service handles these changes for you." + api-cloud: "https://www.elastic.co/docs/api/doc/cloud" + api-ece: "https://www.elastic.co/docs/api/doc/cloud-enterprise" + api-kibana-serverless: "https://www.elastic.co/docs/api/doc/serverless" + es-feature-flag: "This feature is in development and not yet available for use. This documentation is provided for informational purposes only." + es-ref-dir: "'{{elasticsearch-root}}/docs/reference'" + apm-app: "APM app" + uptime-app: "Uptime app" + synthetics-app: "Synthetics app" + logs-app: "Logs app" + metrics-app: "Metrics app" + infrastructure-app: "Infrastructure app" + siem-app: "SIEM app" + security-app: "Elastic Security app" + ml-app: "Machine Learning" + dev-tools-app: "Dev Tools" + ingest-manager-app: "Ingest Manager" + stack-manage-app: "Stack Management" + stack-monitor-app: "Stack Monitoring" + alerts-ui: "Alerts and Actions" + rules-ui: "Rules" + rac-ui: "Rules and Connectors" + connectors-ui: "Connectors" + connectors-feature: "Actions and Connectors" + stack-rules-feature: "Stack Rules" + user-experience: "User Experience" + ems: "Elastic Maps Service" + ems-init: "EMS" + hosted-ems: "Elastic Maps Server" + ipm-app: "Index Pattern Management" + ingest-pipelines: "ingest pipelines" + ingest-pipelines-app: "Ingest Pipelines" + ingest-pipelines-cap: "Ingest pipelines" + ls-pipelines: "Logstash pipelines" + ls-pipelines-app: "Logstash Pipelines" + maint-windows: "maintenance windows" + maint-windows-app: "Maintenance Windows" + maint-windows-cap: "Maintenance windows" + custom-roles-app: "Custom Roles" + data-source: "data view" + data-sources: "data views" + data-source-caps: "Data View" + data-sources-caps: "Data Views" + data-source-cap: "Data view" + data-sources-cap: "Data views" + project-settings: "Project settings" + manage-app: "Management" + index-manage-app: "Index Management" + data-views-app: "Data Views" + rules-app: "Rules" + saved-objects-app: "Saved Objects" + tags-app: "Tags" + api-keys-app: "API keys" + transforms-app: "Transforms" + connectors-app: "Connectors" + files-app: "Files" + reports-app: "Reports" + maps-app: "Maps" + alerts-app: "Alerts" + crawler: "Enterprise Search web crawler" + ents: "Enterprise Search" + app-search-crawler: "App Search web crawler" + agent: "Elastic Agent" + agents: "Elastic Agents" + fleet: "Fleet" + fleet-server: "Fleet Server" + integrations-server: "Integrations Server" + ingest-manager: "Ingest Manager" + ingest-management: "ingest management" + package-manager: "Elastic Package Manager" + integrations: "Integrations" + package-registry: "Elastic Package Registry" + artifact-registry: "Elastic Artifact Registry" + aws: "AWS" + stack: "Elastic Stack" + xpack: "X-Pack" + es: "Elasticsearch" + kib: "Kibana" + esms: "Elastic Stack Monitoring Service" + esms-init: "ESMS" + ls: "Logstash" + beats: "Beats" + auditbeat: "Auditbeat" + filebeat: "Filebeat" + heartbeat: "Heartbeat" + metricbeat: "Metricbeat" + packetbeat: "Packetbeat" + winlogbeat: "Winlogbeat" + functionbeat: "Functionbeat" + journalbeat: "Journalbeat" + es-sql: "Elasticsearch SQL" + esql: "ES|QL" + elastic-agent: "Elastic Agent" + k8s: "Kubernetes" + log-driver-long: "Elastic Logging Plugin for Docker" + security: "X-Pack security" + security-features: "security features" + operator-feature: "operator privileges feature" + es-security-features: "Elasticsearch security features" + stack-security-features: "Elastic Stack security features" + endpoint-sec: "Endpoint Security" + endpoint-cloud-sec: "Endpoint and Cloud Security" + elastic-defend: "Elastic Defend" + elastic-sec: "Elastic Security" + elastic-endpoint: "Elastic Endpoint" + swimlane: "Swimlane" + sn: "ServiceNow" + sn-itsm: "ServiceNow ITSM" + sn-itom: "ServiceNow ITOM" + sn-sir: "ServiceNow SecOps" + jira: "Jira" + ibm-r: "IBM Resilient" + webhook: "Webhook" + webhook-cm: "Webhook - Case Management" + opsgenie: "Opsgenie" + bedrock: "Amazon Bedrock" + gemini: "Google Gemini" + hive: "TheHive" + monitoring: "X-Pack monitoring" + monitor-features: "monitoring features" + stack-monitor-features: "Elastic Stack monitoring features" + watcher: "Watcher" + alert-features: "alerting features" + reporting: "X-Pack reporting" + report-features: "reporting features" + graph: "X-Pack graph" + graph-features: "graph analytics features" + searchprofiler: "Search Profiler" + xpackml: "X-Pack machine learning" + ml: "machine learning" + ml-cap: "Machine learning" + ml-init: "ML" + ml-features: "machine learning features" + stack-ml-features: "Elastic Stack machine learning features" + ccr: "cross-cluster replication" + ccr-cap: "Cross-cluster replication" + ccr-init: "CCR" + ccs: "cross-cluster search" + ccs-cap: "Cross-cluster search" + ccs-init: "CCS" + ilm: "index lifecycle management" + ilm-cap: "Index lifecycle management" + ilm-init: "ILM" + dlm: "data lifecycle management" + dlm-cap: "Data lifecycle management" + dlm-init: "DLM" + search-snap: "searchable snapshot" + search-snaps: "searchable snapshots" + search-snaps-cap: "Searchable snapshots" + slm: "snapshot lifecycle management" + slm-cap: "Snapshot lifecycle management" + slm-init: "SLM" + rollup-features: "data rollup features" + ipm: "index pattern management" + ipm-cap: "Index pattern" + rollup: "rollup" + rollup-cap: "Rollup" + rollups: "rollups" + rollups-cap: "Rollups" + rollup-job: "rollup job" + rollup-jobs: "rollup jobs" + rollup-jobs-cap: "Rollup jobs" + dfeed: "datafeed" + dfeeds: "datafeeds" + dfeed-cap: "Datafeed" + dfeeds-cap: "Datafeeds" + ml-jobs: "machine learning jobs" + ml-jobs-cap: "Machine learning jobs" + anomaly-detect: "anomaly detection" + anomaly-detect-cap: "Anomaly detection" + anomaly-job: "anomaly detection job" + anomaly-jobs: "anomaly detection jobs" + anomaly-jobs-cap: "Anomaly detection jobs" + dataframe: "data frame" + dataframes: "data frames" + dataframe-cap: "Data frame" + dataframes-cap: "Data frames" + watcher-transform: "payload transform" + watcher-transforms: "payload transforms" + watcher-transform-cap: "Payload transform" + watcher-transforms-cap: "Payload transforms" + transform: "transform" + transforms: "transforms" + transform-cap: "Transform" + transforms-cap: "Transforms" + dataframe-transform: "transform" + dataframe-transform-cap: "Transform" + dataframe-transforms: "transforms" + dataframe-transforms-cap: "Transforms" + dfanalytics-cap: "Data frame analytics" + dfanalytics: "data frame analytics" + dataframe-analytics-config: "'{dataframe} analytics config'" + dfanalytics-job: "'{dataframe} analytics job'" + dfanalytics-jobs: "'{dataframe} analytics jobs'" + dfanalytics-jobs-cap: "'{dataframe-cap} analytics jobs'" + cdataframe: "continuous data frame" + cdataframes: "continuous data frames" + cdataframe-cap: "Continuous data frame" + cdataframes-cap: "Continuous data frames" + cdataframe-transform: "continuous transform" + cdataframe-transforms: "continuous transforms" + cdataframe-transforms-cap: "Continuous transforms" + ctransform: "continuous transform" + ctransform-cap: "Continuous transform" + ctransforms: "continuous transforms" + ctransforms-cap: "Continuous transforms" + oldetection: "outlier detection" + oldetection-cap: "Outlier detection" + olscore: "outlier score" + olscores: "outlier scores" + fiscore: "feature influence score" + evaluatedf-api: "evaluate {dataframe} analytics API" + evaluatedf-api-cap: "Evaluate {dataframe} analytics API" + binarysc: "binary soft classification" + binarysc-cap: "Binary soft classification" + regression: "regression" + regression-cap: "Regression" + reganalysis: "regression analysis" + reganalysis-cap: "Regression analysis" + depvar: "dependent variable" + feature-var: "feature variable" + feature-vars: "feature variables" + feature-vars-cap: "Feature variables" + classification: "classification" + classification-cap: "Classification" + classanalysis: "classification analysis" + classanalysis-cap: "Classification analysis" + infer-cap: "Inference" + infer: "inference" + lang-ident-cap: "Language identification" + lang-ident: "language identification" + data-viz: "Data Visualizer" + file-data-viz: "File Data Visualizer" + feat-imp: "feature importance" + feat-imp-cap: "Feature importance" + nlp: "natural language processing" + nlp-cap: "Natural language processing" + apm-agent: "APM agent" + apm-go-agent: "Elastic APM Go agent" + apm-go-agents: "Elastic APM Go agents" + apm-ios-agent: "Elastic APM iOS agent" + apm-ios-agents: "Elastic APM iOS agents" + apm-java-agent: "Elastic APM Java agent" + apm-java-agents: "Elastic APM Java agents" + apm-dotnet-agent: "Elastic APM .NET agent" + apm-dotnet-agents: "Elastic APM .NET agents" + apm-node-agent: "Elastic APM Node.js agent" + apm-node-agents: "Elastic APM Node.js agents" + apm-php-agent: "Elastic APM PHP agent" + apm-php-agents: "Elastic APM PHP agents" + apm-py-agent: "Elastic APM Python agent" + apm-py-agents: "Elastic APM Python agents" + apm-ruby-agent: "Elastic APM Ruby agent" + apm-ruby-agents: "Elastic APM Ruby agents" + apm-rum-agent: "Elastic APM Real User Monitoring (RUM) JavaScript agent" + apm-rum-agents: "Elastic APM RUM JavaScript agents" + apm-lambda-ext: "Elastic APM AWS Lambda extension" + project-monitors: "project monitors" + project-monitors-cap: "Project monitors" + private-location: "Private Location" + private-locations: "Private Locations" + pwd: "YOUR_PASSWORD" + esh: "ES-Hadoop" + default-dist: "default distribution" + oss-dist: "OSS-only distribution" + observability: "Observability" + api-request-title: "Request" + api-prereq-title: "Prerequisites" + api-description-title: "Description" + api-path-parms-title: "Path parameters" + api-query-parms-title: "Query parameters" + api-request-body-title: "Request body" + api-response-codes-title: "Response codes" + api-response-body-title: "Response body" + api-example-title: "Example" + api-examples-title: "Examples" + api-definitions-title: "Properties" + multi-arg: "†footnoteref:[multi-arg,This parameter accepts multiple arguments.]" + multi-arg-ref: "†footnoteref:[multi-arg]" + yes-icon: "image:https://doc-icons.s3.us-east-2.amazonaws.com/icon-yes.png[Yes,20,15]" + no-icon: "image:https://doc-icons.s3.us-east-2.amazonaws.com/icon-no.png[No,20,15]" + es-repo: "https://github.com/elastic/elasticsearch/" + es-issue: "https://github.com/elastic/elasticsearch/issues/" + es-pull: "https://github.com/elastic/elasticsearch/pull/" + es-commit: "https://github.com/elastic/elasticsearch/commit/" + kib-repo: "https://github.com/elastic/kibana/" + kib-issue: "https://github.com/elastic/kibana/issues/" + kibana-issue: "'{kib-repo}issues/'" + kib-pull: "https://github.com/elastic/kibana/pull/" + kibana-pull: "'{kib-repo}pull/'" + kib-commit: "https://github.com/elastic/kibana/commit/" + ml-repo: "https://github.com/elastic/ml-cpp/" + ml-issue: "https://github.com/elastic/ml-cpp/issues/" + ml-pull: "https://github.com/elastic/ml-cpp/pull/" + ml-commit: "https://github.com/elastic/ml-cpp/commit/" + apm-repo: "https://github.com/elastic/apm-server/" + apm-issue: "https://github.com/elastic/apm-server/issues/" + apm-pull: "https://github.com/elastic/apm-server/pull/" + kibana-blob: "https://github.com/elastic/kibana/blob/current/" + apm-get-started-ref: "https://www.elastic.co/guide/en/apm/get-started/current" + apm-server-ref: "https://www.elastic.co/guide/en/apm/server/current" + apm-server-ref-v: "https://www.elastic.co/guide/en/apm/server/current" + apm-server-ref-m: "https://www.elastic.co/guide/en/apm/server/master" + apm-server-ref-62: "https://www.elastic.co/guide/en/apm/server/6.2" + apm-server-ref-64: "https://www.elastic.co/guide/en/apm/server/6.4" + apm-server-ref-70: "https://www.elastic.co/guide/en/apm/server/7.0" + apm-overview-ref-v: "https://www.elastic.co/guide/en/apm/get-started/current" + apm-overview-ref-70: "https://www.elastic.co/guide/en/apm/get-started/7.0" + apm-overview-ref-m: "https://www.elastic.co/guide/en/apm/get-started/master" + infra-guide: "https://www.elastic.co/guide/en/infrastructure/guide/current" + a-data-source: "a data view" + icon-bug: "pass:[]" + icon-checkInCircleFilled: "pass:[]" + icon-warningFilled: "pass:[]" diff --git a/docs/images/create-api-key.png b/docs/images/create-api-key.png new file mode 100644 index 0000000000000000000000000000000000000000..d75c230300b1509869c461e5f38ddcc3d9d3d690 GIT binary patch literal 80572 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

      yrzys%8TjQ)A>Fl2Fd^^<2l^4@6d5K{m(Bq)25Q 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

      1TiyQU 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

      O>Q{$B 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


      ;2+5 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 Fe*ra3AesOG literal 0 HcmV?d00001 diff --git a/docs/images/otel-waterfall-retry.png b/docs/images/otel-waterfall-retry.png new file mode 100644 index 0000000000000000000000000000000000000000..c4eb79473e2acfe2a7210e5c22356c1b7f7ef4be GIT binary patch literal 50707 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

      Iyd0u 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 HjD!CJ|3%M^ literal 0 HcmV?d00001 diff --git a/docs/images/otel-waterfall-with-http.png b/docs/images/otel-waterfall-with-http.png new file mode 100644 index 0000000000000000000000000000000000000000..2d11542a659b877962cde7b62488e9ef3697a6f2 GIT binary patch literal 44194 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 Y1#CGaW%<|$p{S&ACYHx5emZ;Q->{}h4FCWD literal 0 HcmV?d00001 diff --git a/docs/images/otel-waterfall-without-http.png b/docs/images/otel-waterfall-without-http.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3b8de5bb9f4096740d69b10b83bb72ec5c5f73 GIT binary patch literal 35709 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 BF9-kt literal 0 HcmV?d00001 diff --git a/docs/reference/_configuration.md b/docs/reference/_configuration.md new file mode 100644 index 000000000..ea89ddd68 --- /dev/null +++ b/docs/reference/_configuration.md @@ -0,0 +1,105 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/_configuration.html +--- + +# Configuration [_configuration] + +There are several ways to configure connections for the library. The easiest and most useful approach is to define one default connection that can be used every time an API call is made without explicitly passing in other connections. + +::::{note} +Unless you want to access multiple clusters from your application, it is highly recommended that you use the `create_connection` method and all operations will use that connection automatically. + +:::: + + +## Default connection [_default_connection] + +To define a default connection that can be used globally, use the `connections` module and the `create_connection` method like this: + +```python +from elasticsearch.dsl import connections + +connections.create_connection(hosts=['localhost'], timeout=20) +``` + +### Single connection with an alias [_single_connection_with_an_alias] + +You can define the `alias` or name of a connection so you can easily refer to it later. The default value for `alias` is `default`. + +```python +from elasticsearch.dsl import connections + +connections.create_connection(alias='my_new_connection', hosts=['localhost'], timeout=60) +``` + +Additional keyword arguments (`hosts` and `timeout` in our example) will be passed to the `Elasticsearch` class from `elasticsearch-py`. + +To see all possible configuration options refer to the [documentation](https://elasticsearch-py.readthedocs.io/en/latest/api/elasticsearch.html). + + + +## Multiple clusters [_multiple_clusters] + +You can define multiple connections to multiple clusters at the same time using the `configure` method: + +```python +from elasticsearch.dsl import connections + +connections.configure( + default={'hosts': 'localhost'}, + dev={ + 'hosts': ['esdev1.example.com:9200'], + 'sniff_on_start': True + } +) +``` + +Such connections will be constructed lazily when requested for the first time. + +You can alternatively define multiple connections by adding them one by one as shown in the following example: + +```python +# if you have configuration options to be passed to Elasticsearch.__init__ +# this also shows creating a connection with the alias 'qa' +connections.create_connection('qa', hosts=['esqa1.example.com'], sniff_on_start=True) + +# if you already have an Elasticsearch instance ready +connections.add_connection('another_qa', my_client) +``` + +### Using aliases [_using_aliases] + +When using multiple connections, you can refer to them using the string alias specified when you created the connection. + +This example shows how to use an alias to a connection: + +```python +s = Search(using='qa') +``` + +A `KeyError` will be raised if there is no connection registered with that alias. + + + +## Manual [_manual] + +If you don’t want to supply a global configuration, you can always pass in your own connection as an instance of `elasticsearch.Elasticsearch` with the parameter `using` wherever it is accepted like this: + +```python +s = Search(using=Elasticsearch('localhost')) +``` + +You can even use this approach to override any connection the object might be already associated with: + +```python +s = s.using(Elasticsearch('otherhost:9200')) +``` + +::::{note} +When using the `dsl` module, it is highly recommended that you use the built-in serializer (`elasticsearch.dsl.serializer.serializer`) to ensure your objects are correctly serialized into `JSON` every time. The `create_connection` method that is described here (and that the `configure` method uses under the hood) will do that automatically for you, unless you explicitly specify your own serializer. The built-in serializer also allows you to serialize your own objects - just define a `to_dict()` method on your objects and that method will be automatically called when serializing your custom objects to `JSON`. + +:::: + + + diff --git a/docs/reference/_examples.md b/docs/reference/_examples.md new file mode 100644 index 000000000..ba57b7854 --- /dev/null +++ b/docs/reference/_examples.md @@ -0,0 +1,9 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/_examples.html +--- + +# Examples [_examples] + +Please see the [DSL examples](https://github.com/elastic/elasticsearch-py/tree/master/examples/dsl) directory to see some complex examples using the DSL module. + diff --git a/docs/reference/_how_to_guides.md b/docs/reference/_how_to_guides.md new file mode 100644 index 000000000..7a238208f --- /dev/null +++ b/docs/reference/_how_to_guides.md @@ -0,0 +1,1492 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/_how_to_guides.html +--- + +# How-To Guides [_how_to_guides] + +## Search DSL [search_dsl] + +### The `Search` object [_the_search_object] + +The `Search` object represents the entire search request: + +* queries +* filters +* aggregations +* k-nearest neighbor searches +* sort +* pagination +* highlighting +* suggestions +* collapsing +* additional parameters +* associated client + +The API is designed to be chainable. With the exception of the aggregations functionality this means that the `Search` object is immutable -all changes to the object will result in a shallow copy being created which contains the changes. This means you can safely pass the `Search` object to foreign code without fear of it modifying your objects as long as it sticks to the `Search` object APIs. + +You can pass an instance of the [elasticsearch client](https://elasticsearch-py.readthedocs.io/) when instantiating the `Search` object: + +```python +from elasticsearch import Elasticsearch +from elasticsearch.dsl import Search + +client = Elasticsearch() + +s = Search(using=client) +``` + +You can also define the client at a later time (for more options see the `configuration` chapter): + +```python +s = s.using(client) +``` + +::::{note} +All methods return a *copy* of the object, making it safe to pass to outside code. + +:::: + + +The API is chainable, allowing you to combine multiple method calls in one statement: + +```python +s = Search().using(client).query("match", title="python") +``` + +To send the request to Elasticsearch: + +```python +response = s.execute() +``` + +If you just want to iterate over the hits returned by your search you can iterate over the `Search` object: + +```python +for hit in s: + print(hit.title) +``` + +Search results will be cached. Subsequent calls to `execute` or trying to iterate over an already executed `Search` object will not trigger additional requests being sent to Elasticsearch. To force a request specify `ignore_cache=True` when calling `execute`. + +For debugging purposes you can serialize the `Search` object to a `dict` explicitly: + +```python +print(s.to_dict()) +``` + +#### Delete By Query [_delete_by_query] + +You can delete the documents matching a search by calling `delete` on the `Search` object instead of `execute` like this: + +```python +s = Search(index='i').query("match", title="python") +response = s.delete() +``` + + +#### Queries [_queries] + +The library provides classes for all Elasticsearch query types. Pass all the parameters as keyword arguments. The classes accept any keyword arguments, the dsl then takes all arguments passed to the constructor and serializes them as top-level keys in the resulting dictionary (and thus the resulting json being sent to elasticsearch). This means that there is a clear one-to-one mapping between the raw query and its equivalent in the DSL: + +```python +from elasticsearch.dsl.query import MultiMatch, Match + +# {"multi_match": {"query": "python django", "fields": ["title", "body"]}} +MultiMatch(query='python django', fields=['title', 'body']) + +# {"match": {"title": {"query": "web framework", "type": "phrase"}}} +Match(title={"query": "web framework", "type": "phrase"}) +``` + +::::{note} +In some cases this approach is not possible due to python’s restriction on identifiers - for example if your field is called `@timestamp`. In that case you have to fall back to unpacking a dictionary: `Range(*+ {'@timestamp': {'lt': 'now'}})` + +:::: + + +You can use the `Q` shortcut to construct the instance using a name with parameters or the raw `dict`: + +```python +from elasticsearch.dsl import Q + +Q("multi_match", query='python django', fields=['title', 'body']) +Q({"multi_match": {"query": "python django", "fields": ["title", "body"]}}) +``` + +To add the query to the `Search` object, use the `.query()` method: + +```python +q = Q("multi_match", query='python django', fields=['title', 'body']) +s = s.query(q) +``` + +The method also accepts all the parameters as the `Q` shortcut: + +```python +s = s.query("multi_match", query='python django', fields=['title', 'body']) +``` + +If you already have a query object, or a `dict` representing one, you can just override the query used in the `Search` object: + +```python +s.query = Q('bool', must=[Q('match', title='python'), Q('match', body='best')]) +``` + + +#### Dotted fields [_dotted_fields] + +Sometimes you want to refer to a field within another field, either as a multi-field (`title.keyword`) or in a structured `json` document like `address.city`. To make it easier, the `Q` shortcut (as well as the `query`, `filter`, and `exclude` methods on `Search` class) allows you to use `_+` (double underscore) in place of a dot in a keyword argument: + +```python +s = Search() +s = s.filter('term', category__keyword='Python') +s = s.query('match', address__city='prague') +``` + +Alternatively you can always fall back to python’s kwarg unpacking if you prefer: + +```python +s = Search() +s = s.filter('term', **{'category.keyword': 'Python'}) +s = s.query('match', **{'address.city': 'prague'}) +``` + + +#### Query combination [_query_combination] + +Query objects can be combined using logical operators: + +```python +Q("match", title='python') | Q("match", title='django') +# {"bool": {"should": [...]}} + +Q("match", title='python') & Q("match", title='django') +# {"bool": {"must": [...]}} + +~Q("match", title="python") +# {"bool": {"must_not": [...]}} +``` + +When you call the `.query()` method multiple times, the `&` operator will be used internally: + +```python +s = s.query().query() +print(s.to_dict()) +# {"query": {"bool": {...}}} +``` + +If you want to have precise control over the query form, use the `Q` shortcut to directly construct the combined query: + +```python +q = Q('bool', + must=[Q('match', title='python')], + should=[Q(...), Q(...)], + minimum_should_match=1 +) +s = Search().query(q) +``` + + +#### Filters [_filters] + +If you want to add a query in a [filter context](docs-content://explore-analyze/query-filter/languages/querydsl.md) you can use the `filter()` method to make things easier: + +```python +s = Search() +s = s.filter('terms', tags=['search', 'python']) +``` + +Behind the scenes this will produce a `Bool` query and place the specified `terms` query into its `filter` branch, making it equivalent to: + +```python +s = Search() +s = s.query('bool', filter=[Q('terms', tags=['search', 'python'])]) +``` + +If you want to use the post_filter element for faceted navigation, use the `.post_filter()` method. + +You can also `exclude()` items from your query like this: + +```python +s = Search() +s = s.exclude('terms', tags=['search', 'python']) +``` + +which is shorthand for: `s = s.query('bool', filter=[~Q('terms', tags=['search', 'python'])])` + + +#### Aggregations [_aggregations] + +To define an aggregation, you can use the `A` shortcut: + +```python +from elasticsearch.dsl import A + +A('terms', field='tags') +# {"terms": {"field": "tags"}} +``` + +To nest aggregations, you can use the `.bucket()`, `.metric()` and `.pipeline()` methods: + +```python +a = A('terms', field='category') +# {'terms': {'field': 'category'}} + +a.metric('clicks_per_category', 'sum', field='clicks')\ + .bucket('tags_per_category', 'terms', field='tags') +# { +# 'terms': {'field': 'category'}, +# 'aggs': { +# 'clicks_per_category': {'sum': {'field': 'clicks'}}, +# 'tags_per_category': {'terms': {'field': 'tags'}} +# } +# } +``` + +To add aggregations to the `Search` object, use the `.aggs` property, which acts as a top-level aggregation: + +```python +s = Search() +a = A('terms', field='category') +s.aggs.bucket('category_terms', a) +# { +# 'aggs': { +# 'category_terms': { +# 'terms': { +# 'field': 'category' +# } +# } +# } +# } +``` + +or + +```python +s = Search() +s.aggs.bucket('articles_per_day', 'date_histogram', field='publish_date', interval='day')\ + .metric('clicks_per_day', 'sum', field='clicks')\ + .pipeline('moving_click_average', 'moving_avg', buckets_path='clicks_per_day')\ + .bucket('tags_per_day', 'terms', field='tags') + +s.to_dict() +# { +# "aggs": { +# "articles_per_day": { +# "date_histogram": { "interval": "day", "field": "publish_date" }, +# "aggs": { +# "clicks_per_day": { "sum": { "field": "clicks" } }, +# "moving_click_average": { "moving_avg": { "buckets_path": "clicks_per_day" } }, +# "tags_per_day": { "terms": { "field": "tags" } } +# } +# } +# } +# } +``` + +You can access an existing bucket by its name: + +```python +s = Search() + +s.aggs.bucket('per_category', 'terms', field='category') +s.aggs['per_category'].metric('clicks_per_category', 'sum', field='clicks') +s.aggs['per_category'].bucket('tags_per_category', 'terms', field='tags') +``` + +::::{note} +When chaining multiple aggregations, there is a difference between what `.bucket()` and `.metric()` methods return - `.bucket()` returns the newly defined bucket while `.metric()` returns its parent bucket to allow further chaining. + +:::: + + +As opposed to other methods on the `Search` objects, defining aggregations is done in-place (does not return a copy). + + +#### K-Nearest Neighbor Searches [_k_nearest_neighbor_searches] + +To issue a kNN search, use the `.knn()` method: + +```python +s = Search() +vector = get_embedding("search text") + +s = s.knn( + field="embedding", + k=5, + num_candidates=10, + query_vector=vector +) +``` + +The `field`, `k` and `num_candidates` arguments can be given as positional or keyword arguments and are required. In addition to these, `query_vector` or `query_vector_builder` must be given as well. + +The `.knn()` method can be invoked multiple times to include multiple kNN searches in the request. + + +#### Sorting [_sorting] + +To specify sorting order, use the `.sort()` method: + +```python +s = Search().sort( + 'category', + '-title', + {"lines" : {"order" : "asc", "mode" : "avg"}} +) +``` + +It accepts positional arguments which can be either strings or dictionaries. String value is a field name, optionally prefixed by the `-` sign to specify a descending order. + +To reset the sorting, just call the method with no arguments: + +```python +s = s.sort() +``` + + +#### Pagination [_pagination] + +To specify the from/size parameters, use the Python slicing API: + +```python +s = s[10:20] +# {"from": 10, "size": 10} + +s = s[:20] +# {"size": 20} + +s = s[10:] +# {"from": 10} + +s = s[10:20][2:] +# {"from": 12, "size": 8} +``` + +If you want to access all the documents matched by your query you can use the `scan` method which uses the scan/scroll elasticsearch API: + +```python +for hit in s.scan(): + print(hit.title) +``` + +Note that in this case the results won’t be sorted. + + +#### Highlighting [_highlighting] + +To set common attributes for highlighting use the `highlight_options` method: + +```python +s = s.highlight_options(order='score') +``` + +Enabling highlighting for individual fields is done using the `highlight` method: + +```python +s = s.highlight('title') +# or, including parameters: +s = s.highlight('title', fragment_size=50) +``` + +The fragments in the response will then be available on each `Result` object as `.meta.highlight.FIELD` which will contain the list of fragments: + +```python +response = s.execute() +for hit in response: + for fragment in hit.meta.highlight.title: + print(fragment) +``` + + +#### Suggestions [_suggestions] + +To specify a suggest request on your `Search` object use the `suggest` method: + +```python +# check for correct spelling +s = s.suggest('my_suggestion', 'pyhton', term={'field': 'title'}) +``` + +The first argument is the name of the suggestions (name under which it will be returned), second is the actual text you wish the suggester to work on and the keyword arguments will be added to the suggest’s json as-is which means that it should be one of `term`, `phrase` or `completion` to indicate which type of suggester should be used. + + +#### Collapsing [_collapsing] + +To collapse search results use the `collapse` method on your `Search` object: + +```python +s = Search().query("match", message="GET /search") +# collapse results by user_id +s = s.collapse("user_id") +``` + +The top hits will only include one result per `user_id`. You can also expand each collapsed top hit with the `inner_hits` parameter, `max_concurrent_group_searches` being the number of concurrent requests allowed to retrieve the inner hits per group: + +```python +inner_hits = {"name": "recent_search", "size": 5, "sort": [{"@timestamp": "desc"}]} +s = s.collapse("user_id", inner_hits=inner_hits, max_concurrent_group_searches=4) +``` + + +#### More Like This Query [_more_like_this_query] + +To use Elasticsearch’s `more_like_this` functionality, you can use the MoreLikeThis query type. + +A simple example is below + +```python +from elasticsearch.dsl.query import MoreLikeThis +from elasticsearch.dsl import Search + +my_text = 'I want to find something similar' + +s = Search() +# We're going to match based only on two fields, in this case text and title +s = s.query(MoreLikeThis(like=my_text, fields=['text', 'title'])) +# You can also exclude fields from the result to make the response quicker in the normal way +s = s.source(exclude=["text"]) +response = s.execute() + +for hit in response: + print(hit.title) +``` + + +#### Extra properties and parameters [_extra_properties_and_parameters] + +To set extra properties of the search request, use the `.extra()` method. This can be used to define keys in the body that cannot be defined via a specific API method like `explain` or `search_after`: + +```python +s = s.extra(explain=True) +``` + +To set query parameters, use the `.params()` method: + +```python +s = s.params(routing="42") +``` + +If you need to limit the fields being returned by elasticsearch, use the `source()` method: + +```python +# only return the selected fields +s = s.source(['title', 'body']) +# don't return any fields, just the metadata +s = s.source(False) +# explicitly include/exclude fields +s = s.source(includes=["title"], excludes=["user.*"]) +# reset the field selection +s = s.source(None) +``` + + +#### Serialization and Deserialization [_serialization_and_deserialization] + +The search object can be serialized into a dictionary by using the `.to_dict()` method. + +You can also create a `Search` object from a `dict` using the `from_dict` class method. This will create a new `Search` object and populate it using the data from the dict: + +```python +s = Search.from_dict({"query": {"match": {"title": "python"}}}) +``` + +If you wish to modify an existing `Search` object, overriding it’s properties, instead use the `update_from_dict` method that alters an instance **in-place**: + +```python +s = Search(index='i') +s.update_from_dict({"query": {"match": {"title": "python"}}, "size": 42}) +``` + + + +### Response [_response] + +You can execute your search by calling the `.execute()` method that will return a `Response` object. The `Response` object allows you access to any key from the response dictionary via attribute access. It also provides some convenient helpers: + +```python +response = s.execute() + +print(response.success()) +# True + +print(response.took) +# 12 + +print(response.hits.total.relation) +# eq +print(response.hits.total.value) +# 142 + +print(response.suggest.my_suggestions) +``` + +If you want to inspect the contents of the `response` objects, just use its `to_dict` method to get access to the raw data for pretty printing. + +#### Hits [_hits] + +To access to the hits returned by the search, access the `hits` property or just iterate over the `Response` object: + +```python +response = s.execute() +print('Total %d hits found.' % response.hits.total) +for h in response: + print(h.title, h.body) +``` + +::::{note} +If you are only seeing partial results (e.g. 10000 or even 10 results), consider using the option `s.extra(track_total_hits=True)` to get a full hit count. + +:::: + + + +#### Result [_result] + +The individual hits is wrapped in a convenience class that allows attribute access to the keys in the returned dictionary. All the metadata for the results are accessible via `meta` (without the leading `_`): + +```python +response = s.execute() +h = response.hits[0] +print('/%s/%s/%s returned with score %f' % ( + h.meta.index, h.meta.doc_type, h.meta.id, h.meta.score)) +``` + +::::{note} +If your document has a field called `meta` you have to access it using the get item syntax: `hit['meta']`. + +:::: + + + +#### Aggregations [_aggregations_2] + +Aggregations are available through the `aggregations` property: + +```python +for tag in response.aggregations.per_tag.buckets: + print(tag.key, tag.max_lines.value) +``` + + + +### `MultiSearch` [_multisearch] + +If you need to execute multiple searches at the same time you can use the `MultiSearch` class which will use the `_msearch` API: + +```python +from elasticsearch.dsl import MultiSearch, Search + +ms = MultiSearch(index='blogs') + +ms = ms.add(Search().filter('term', tags='python')) +ms = ms.add(Search().filter('term', tags='elasticsearch')) + +responses = ms.execute() + +for response in responses: + print("Results for query %r." % response._search.query) + for hit in response: + print(hit.title) +``` + + +### `EmptySearch` [_emptysearch] + +The `EmptySearch` class can be used as a fully compatible version of `Search` that will return no results, regardless of any queries configured. + + + +## Persistence [_persistence_2] + +You can use the DSL module to define your mappings and a basic persistent layer for your application. + +For more comprehensive examples have a look at the [DSL examples](https://github.com/elastic/elasticsearch-py/tree/main/examples/dsl) directory in the repository. + +### Document [doc_type] + +If you want to create a model-like wrapper around your documents, use the `Document` class. It can also be used to create all the necessary mappings and settings in elasticsearch (see `life-cycle` for details). + +```python +from datetime import datetime +from elasticsearch.dsl import Document, Date, Nested, Boolean, \ + analyzer, InnerDoc, Completion, Keyword, Text + +html_strip = analyzer('html_strip', + tokenizer="standard", + filter=["standard", "lowercase", "stop", "snowball"], + char_filter=["html_strip"] +) + +class Comment(InnerDoc): + author = Text(fields={'raw': Keyword()}) + content = Text(analyzer='snowball') + created_at = Date() + + def age(self): + return datetime.now() - self.created_at + +class Post(Document): + title = Text() + title_suggest = Completion() + created_at = Date() + published = Boolean() + category = Text( + analyzer=html_strip, + fields={'raw': Keyword()} + ) + + comments = Nested(Comment) + + class Index: + name = 'blog' + + def add_comment(self, author, content): + self.comments.append( + Comment(author=author, content=content, created_at=datetime.now())) + + def save(self, ** kwargs): + self.created_at = datetime.now() + return super().save(** kwargs) +``` + +#### Data types [_data_types] + +The `Document` instances use native python types like `str` and `datetime`. In case of `Object` or `Nested` fields an instance of the `InnerDoc` subclass is used, as in the `add_comment` method in the above example where we are creating an instance of the `Comment` class. + +There are some specific types that were created as part of this library to make working with some field types easier, for example the `Range` object used in any of the [range fields](elasticsearch://docs/reference/elasticsearch/mapping-reference/range.md): + +```python +from elasticsearch.dsl import Document, DateRange, Keyword, Range + +class RoomBooking(Document): + room = Keyword() + dates = DateRange() + + +rb = RoomBooking( + room='Conference Room II', + dates=Range( + gte=datetime(2018, 11, 17, 9, 0, 0), + lt=datetime(2018, 11, 17, 10, 0, 0) + ) +) + +# Range supports the in operator correctly: +datetime(2018, 11, 17, 9, 30, 0) in rb.dates # True + +# you can also get the limits and whether they are inclusive or exclusive: +rb.dates.lower # datetime(2018, 11, 17, 9, 0, 0), True +rb.dates.upper # datetime(2018, 11, 17, 10, 0, 0), False + +# empty range is unbounded +Range().lower # None, False +``` + + +#### Python Type Hints [_python_type_hints] + +Document fields can be defined using standard Python type hints if desired. Here are some simple examples: + +```python +from typing import Optional + +class Post(Document): + title: str # same as title = Text(required=True) + created_at: Optional[datetime] # same as created_at = Date(required=False) + published: bool # same as published = Boolean(required=True) +``` + +It is important to note that when using `Field` subclasses such as `Text`, `Date` and `Boolean`, they must be given in the right-side of an assignment, as shown in examples above. Using these classes as type hints will result in errors. + +Python types are mapped to their corresponding field type according to the following table: + +| Python type | DSL field | +| --- | --- | +| `str` | `Text(required=True)` | +| `bool` | `Boolean(required=True)` | +| `int` | `Integer(required=True)` | +| `float` | `Float(required=True)` | +| `bytes` | `Binary(required=True)` | +| `datetime` | `Date(required=True)` | +| `date` | `Date(format="yyyy-MM-dd", required=True)` | + +To type a field as optional, the standard `Optional` modifier from the Python `typing` package can be used. When using Python 3.10 or newer, "pipe" syntax can also be used, by adding `| None` to a type. The `List` modifier can be added to a field to convert it to an array, similar to using the `multi=True` argument on the field object. + +```python +from typing import Optional, List + +class MyDoc(Document): + pub_date: Optional[datetime] # same as pub_date = Date() + middle_name: str | None # same as middle_name = Text() + authors: List[str] # same as authors = Text(multi=True, required=True) + comments: Optional[List[str]] # same as comments = Text(multi=True) +``` + +A field can also be given a type hint of an `InnerDoc` subclass, in which case it becomes an `Object` field of that class. When the `InnerDoc` subclass is wrapped with `List`, a `Nested` field is created instead. + +```python +from typing import List + +class Address(InnerDoc): + ... + +class Comment(InnerDoc): + ... + +class Post(Document): + address: Address # same as address = Object(Address, required=True) + comments: List[Comment] # same as comments = Nested(Comment, required=True) +``` + +Unfortunately it is impossible to have Python type hints that uniquely identify every possible Elasticsearch field type. To choose a field type that is different than the ones in the table above, the field instance can be added explicitly as a right-side assignment in the field declaration. The next example creates a field that is typed as `Optional[str]`, but is mapped to `Keyword` instead of `Text`: + +```python +class MyDocument(Document): + category: Optional[str] = Keyword() +``` + +This form can also be used when additional options need to be given to initialize the field, such as when using custom analyzer settings or changing the `required` default: + +```python +class Comment(InnerDoc): + content: str = Text(analyzer='snowball', required=True) +``` + +When using type hints as above, subclasses of `Document` and `InnerDoc` inherit some of the behaviors associated with Python dataclasses, as defined by [PEP 681](https://peps.python.org/pep-0681/) and the [dataclass_transform decorator](https://typing.readthedocs.io/en/latest/spec/dataclasses.html#dataclass-transform). To add per-field dataclass options such as `default` or `default_factory`, the `mapped_field()` wrapper can be used on the right side of a typed field declaration: + +```python +class MyDocument(Document): + title: str = mapped_field(default="no title") + created_at: datetime = mapped_field(default_factory=datetime.now) + published: bool = mapped_field(default=False) + category: str = mapped_field(Keyword(required=True), default="general") +``` + +When using the `mapped_field()` wrapper function, an explicit field type instance can be passed as a first positional argument, as the `category` field does in the example above. + +Static type checkers such as [mypy](https://mypy-lang.org/) and [pyright](https://github.com/microsoft/pyright) can use the type hints and the dataclass-specific options added to the `mapped_field()` function to improve type inference and provide better real-time suggestions in IDEs. + +One situation in which type checkers can’t infer the correct type is when using fields as class attributes. Consider the following example: + +```python +class MyDocument(Document): + title: str + +doc = MyDocument() +# doc.title is typed as "str" (correct) +# MyDocument.title is also typed as "str" (incorrect) +``` + +To help type checkers correctly identify class attributes as such, the `M` generic must be used as a wrapper to the type hint, as shown in the next examples: + +```python +from elasticsearch.dsl import M + +class MyDocument(Document): + title: M[str] + created_at: M[datetime] = mapped_field(default_factory=datetime.now) + +doc = MyDocument() +# doc.title is typed as "str" +# doc.created_at is typed as "datetime" +# MyDocument.title is typed as "InstrumentedField" +# MyDocument.created_at is typed as "InstrumentedField" +``` + +Note that the `M` type hint does not provide any runtime behavior and its use is not required, but it can be useful to eliminate spurious type errors in IDEs or type checking builds. + +The `InstrumentedField` objects returned when fields are accessed as class attributes are proxies for the field instances that can be used anywhere a field needs to be referenced, such as when specifying sort options in a `Search` object: + +```python +# sort by creation date descending, and title ascending +s = MyDocument.search().sort(-MyDocument.created_at, MyDocument.title) +``` + +When specifying sorting order, the `{{plus}}` and `-` unary operators can be used on the class field attributes to indicate ascending and descending order. + +Finally, the `ClassVar` annotation can be used to define a regular class attribute that should not be mapped to the Elasticsearch index: + +```python +from typing import ClassVar + +class MyDoc(Document): + title: M[str] created_at: M[datetime] = + mapped_field(default_factory=datetime.now) my_var: + ClassVar[str] # regular class variable, ignored by Elasticsearch +``` + + +#### Note on dates [_note_on_dates] + +The DSL module will always respect the timezone information (or lack thereof) on the `datetime` objects passed in or stored in Elasticsearch. Elasticsearch itself interprets all datetimes with no timezone information as `UTC`. If you wish to reflect this in your python code, you can specify `default_timezone` when instantiating a `Date` field: + +```python +class Post(Document): + created_at = Date(default_timezone='UTC') +``` + +In that case any `datetime` object passed in (or parsed from elasticsearch) will be treated as if it were in `UTC` timezone. + + +#### Document life cycle [life-cycle] + +Before you first use the `Post` document type, you need to create the mappings in Elasticsearch. For that you can either use the `index` object or create the mappings directly by calling the `init` class method: + +```python +# create the mappings in Elasticsearch +Post.init() +``` + +This code will typically be run in the setup for your application during a code deploy, similar to running database migrations. + +To create a new `Post` document just instantiate the class and pass in any fields you wish to set, you can then use standard attribute setting to change/add more fields. Note that you are not limited to the fields defined explicitly: + +```python +# instantiate the document +first = Post(title='My First Blog Post, yay!', published=True) +# assign some field values, can be values or lists of values +first.category = ['everything', 'nothing'] +# every document has an id in meta +first.meta.id = 47 + + +# save the document into the cluster +first.save() +``` + +All the metadata fields (`id`, `routing`, `index` etc) can be accessed (and set) via a `meta` attribute or directly using the underscored variant: + +```python +post = Post(meta={'id': 42}) + +# prints 42 +print(post.meta.id) + +# override default index +post.meta.index = 'my-blog' +``` + +::::{note} +Having all metadata accessible through `meta` means that this name is reserved and you shouldn’t have a field called `meta` on your document. If you, however, need it you can still access the data using the get item (as opposed to attribute) syntax: `post['meta']`. + +:::: + + +To retrieve an existing document use the `get` class method: + +```python +# retrieve the document +first = Post.get(id=42) +# now we can call methods, change fields, ... +first.add_comment('me', 'This is nice!') +# and save the changes into the cluster again +first.save() +``` + +The [Update API](https://www.elastic.co/docs/api/doc/elasticsearch/v8/group/endpoint-document) can also be used via the `update` method. By default any keyword arguments, beyond the parameters of the API, will be considered fields with new values. Those fields will be updated on the local copy of the document and then sent over as partial document to be updated: + +```python +# retrieve the document +first = Post.get(id=42) +# you can update just individual fields which will call the update API +# and also update the document in place +first.update(published=True, published_by='me') +``` + +In case you wish to use a `painless` script to perform the update you can pass in the script string as `script` or the `id` of a [stored script](docs-content://explore-analyze/scripting/modules-scripting-using.md#script-stored-scripts) via `script_id`. All additional keyword arguments to the `update` method will then be passed in as parameters of the script. The document will not be updated in place. + +```python +# retrieve the document +first = Post.get(id=42) +# we execute a script in elasticsearch with additional kwargs being passed +# as params into the script +first.update(script='ctx._source.category.add(params.new_category)', + new_category='testing') +``` + +If the document is not found in elasticsearch an exception (`elasticsearch.NotFoundError`) will be raised. If you wish to return `None` instead just pass in `ignore=404` to suppress the exception: + +```python +p = Post.get(id='not-in-es', ignore=404) +p is None +``` + +When you wish to retrieve multiple documents at the same time by their `id` you can use the `mget` method: + +```python +posts = Post.mget([42, 47, 256]) +``` + +`mget` will, by default, raise a `NotFoundError` if any of the documents wasn’t found and `RequestError` if any of the document had resulted in error. You can control this behavior by setting parameters: + +* `raise_on_error`: If `True` (default) then any error will cause an exception to be raised. Otherwise all documents containing errors will be treated as missing. +* `missing`: Can have three possible values: `'none'` (default), `'raise'` and `'skip'`. If a document is missing or errored it will either be replaced with `None`, an exception will be raised or the document will be skipped in the output list entirely. + +The index associated with the `Document` is accessible via the `_index` class property which gives you access to the `index` class. + +The `_index` attribute is also home to the `load_mappings` method which will update the mapping on the `Index` from elasticsearch. This is very useful if you use dynamic mappings and want the class to be aware of those fields (for example if you wish the `Date` fields to be properly (de)serialized): + +```python +Post._index.load_mappings() +``` + +To delete a document just call its `delete` method: + +```python +first = Post.get(id=42) +first.delete() +``` + + +#### Analysis [_analysis] + +To specify `analyzer` values for `Text` fields you can just use the name of the analyzer (as a string) and either rely on the analyzer being defined (like built-in analyzers) or define the analyzer yourself manually. + +Alternatively you can create your own analyzer and have the persistence layer handle its creation, from our example earlier: + +```python +from elasticsearch.dsl import analyzer, tokenizer + +my_analyzer = analyzer('my_analyzer', + tokenizer=tokenizer('trigram', 'nGram', min_gram=3, max_gram=3), + filter=['lowercase'] +) +``` + +Each analysis object needs to have a name (`my_analyzer` and `trigram` in our example) and tokenizers, token filters and char filters also need to specify type (`nGram` in our example). + +Once you have an instance of a custom `analyzer` you can also call the [analyze API](https://www.elastic.co/docs/api/doc/elasticsearch/v8/group/endpoint-indices) on it by using the `simulate` method: + +```python +response = my_analyzer.simulate('Hello World!') + +# ['hel', 'ell', 'llo', 'lo ', 'o w', ' wo', 'wor', 'orl', 'rld', 'ld!'] +tokens = [t.token for t in response.tokens] +``` + +::::{note} +When creating a mapping which relies on a custom analyzer the index must either not exist or be closed. To create multiple `Document`-defined mappings you can use the `index` object. + +:::: + + + +#### Search [_search_2] + +To search for this document type, use the `search` class method: + +```python +# by calling .search we get back a standard Search object +s = Post.search() +# the search is already limited to the index and doc_type of our document +s = s.filter('term', published=True).query('match', title='first') + + +results = s.execute() + +# when you execute the search the results are wrapped in your document class (Post) +for post in results: + print(post.meta.score, post.title) +``` + +Alternatively you can just take a `Search` object and restrict it to return our document type, wrapped in correct class: + +```python +s = Search() +s = s.doc_type(Post) +``` + +You can also combine document classes with standard doc types (just strings), which will be treated as before. You can also pass in multiple `Document` subclasses and each document in the response will be wrapped in it’s class. + +If you want to run suggestions, just use the `suggest` method on the `Search` object: + +```python +s = Post.search() +s = s.suggest('title_suggestions', 'pyth', completion={'field': 'title_suggest'}) + +response = s.execute() + +for result in response.suggest.title_suggestions: + print('Suggestions for %s:' % result.text) + for option in result.options: + print(' %s (%r)' % (option.text, option.payload)) +``` + + +#### `class Meta` options [_class_meta_options] + +In the `Meta` class inside your document definition you can define various metadata for your document: + +* `mapping`: optional instance of `Mapping` class to use as base for the mappings created from the fields on the document class itself. + +Any attributes on the `Meta` class that are instance of `MetaField` will be used to control the mapping of the meta fields (`_all`, `dynamic` etc). Just name the parameter (without the leading underscore) as the field you wish to map and pass any parameters to the `MetaField` class: + +```python +class Post(Document): + title = Text() + + class Meta: + all = MetaField(enabled=False) + dynamic = MetaField('strict') +``` + + +#### `class Index` options [_class_index_options] + +This section of the `Document` definition can contain any information about the index, its name, settings and other attributes: + +* `name`: name of the index to use, if it contains a wildcard (`*`) then it cannot be used for any write operations and an `index` kwarg will have to be passed explicitly when calling methods like `.save()`. +* `using`: default connection alias to use, defaults to `'default'` +* `settings`: dictionary containing any settings for the `Index` object like `number_of_shards`. +* `analyzers`: additional list of analyzers that should be defined on an index (see `analysis` for details). +* `aliases`: dictionary with any aliases definitions + + +#### Document Inheritance [_document_inheritance] + +You can use standard Python inheritance to extend models, this can be useful in a few scenarios. For example if you want to have a `BaseDocument` defining some common fields that several different `Document` classes should share: + +```python +class User(InnerDoc): + username = Text(fields={'keyword': Keyword()}) + email = Text() + +class BaseDocument(Document): + created_by = Object(User) + created_date = Date() + last_updated = Date() + + def save(**kwargs): + if not self.created_date: + self.created_date = datetime.now() + self.last_updated = datetime.now() + return super(BaseDocument, self).save(**kwargs) + +class BlogPost(BaseDocument): + class Index: + name = 'blog' +``` + +Another use case would be using the [join type](elasticsearch://docs/reference/elasticsearch/mapping-reference/parent-join.md) to have multiple different entities in a single index. You can see an [example](https://github.com/elastic/elasticsearch-py/blob/master/examples/dsl/parent_child.py) of this approach. Note that in this case, if the subclasses don’t define their own Index classes, the mappings are merged and shared between all the subclasses. + + + +### Index [_index] + +In typical scenario using `class Index` on a `Document` class is sufficient to perform any action. In a few cases though it can be useful to manipulate an `Index` object directly. + +`Index` is a class responsible for holding all the metadata related to an index in elasticsearch - mappings and settings. It is most useful when defining your mappings since it allows for easy creation of multiple mappings at the same time. This is especially useful when setting up your elasticsearch objects in a migration: + +```python +from elasticsearch.dsl import Index, Document, Text, analyzer + +blogs = Index('blogs') + +# define custom settings +blogs.settings( + number_of_shards=1, + number_of_replicas=0 +) + +# define aliases +blogs.aliases( + old_blogs={} +) + +# register a document with the index +blogs.document(Post) + +# can also be used as class decorator when defining the Document +@blogs.document +class Post(Document): + title = Text() + +# You can attach custom analyzers to the index + +html_strip = analyzer('html_strip', + tokenizer="standard", + filter=["standard", "lowercase", "stop", "snowball"], + char_filter=["html_strip"] +) + +blogs.analyzer(html_strip) + +# delete the index, ignore if it doesn't exist +blogs.delete(ignore=404) + +# create the index in elasticsearch +blogs.create() +``` + +You can also set up a template for your indices and use the `clone` method to create specific copies: + +```python +blogs = Index('blogs', using='production') +blogs.settings(number_of_shards=2) +blogs.document(Post) + +# create a copy of the index with different name +company_blogs = blogs.clone('company-blogs') + +# create a different copy on different cluster +dev_blogs = blogs.clone('blogs', using='dev') +# and change its settings +dev_blogs.setting(number_of_shards=1) +``` + +#### IndexTemplate [index-template] + +The DSL module also exposes an option to manage [index templates](docs-content://manage-data/data-store/templates.md) in elasticsearch using the `IndexTemplate` class which has very similar API to `Index`. + +Once an index template is saved in elasticsearch it’s contents will be automatically applied to new indices (existing indices are completely unaffected by templates) that match the template pattern (any index starting with `blogs-` in our example), even if the index is created automatically upon indexing a document into that index. + +Potential workflow for a set of time based indices governed by a single template: + +```python +from datetime import datetime + +from elasticsearch.dsl import Document, Date, Text + + +class Log(Document): + content = Text() + timestamp = Date() + + class Index: + name = "logs-*" + settings = { + "number_of_shards": 2 + } + + def save(self, **kwargs): + # assign now if no timestamp given + if not self.timestamp: + self.timestamp = datetime.now() + + # override the index to go to the proper timeslot + kwargs['index'] = self.timestamp.strftime('logs-%Y%m%d') + return super().save(**kwargs) + +# once, as part of application setup, during deploy/migrations: +logs = Log._index.as_template('logs', order=0) +logs.save() + +# to perform search across all logs: +search = Log.search() +``` + + + + +## Faceted Search [faceted_search] + +The library comes with a simple abstraction aimed at helping you develop faceted navigation for your data. + +::::{note} +This API is experimental and will be subject to change. Any feedback is welcome. + +:::: + + +### Configuration [_configuration_2] + +You can provide several configuration options (as class attributes) when declaring a `FacetedSearch` subclass: + +* `index`: the name of the index (as string) to search through, defaults to `'_all'`. +* `doc_types`: list of `Document` subclasses or strings to be used, defaults to `['_all']`. +* `fields`: list of fields on the document type to search through. The list will be passes to `MultiMatch` query so can contain boost values (`'title^5'`), defaults to `['*']`. +* `facets`: dictionary of facets to display/filter on. The key is the name displayed and values should be instances of any `Facet` subclass, for example: `{'tags': TermsFacet(field='tags')}` + +#### Facets [_facets] + +There are several different facets available: + +* `TermsFacet`: provides an option to split documents into groups based on a value of a field, for example `TermsFacet(field='category')` +* `DateHistogramFacet`: split documents into time intervals, example: `DateHistogramFacet(field="published_date", calendar_interval="day")` +* `HistogramFacet`: similar to `DateHistogramFacet` but for numerical values: `HistogramFacet(field="rating", interval=2)` +* `RangeFacet`: allows you to define your own ranges for a numerical fields: `RangeFacet(field="comment_count", ranges=[("few", (None, 2)), ("lots", (2, None))])` +* `NestedFacet`: is just a simple facet that wraps another to provide access to nested documents: `NestedFacet('variants', TermsFacet(field='variants.color'))` + +By default facet results will only calculate document count, if you wish for a different metric you can pass in any single value metric aggregation as the `metric` kwarg (`TermsFacet(field='tags', metric=A('max', field=timestamp))`). When specifying `metric` the results will be, by default, sorted in descending order by that metric. To change it to ascending specify `metric_sort="asc"` and to just sort by document count use `metric_sort=False`. + + +#### Advanced [_advanced] + +If you require any custom behavior or modifications simply override one or more of the methods responsible for the class' functions: + +* `search(self)`: is responsible for constructing the `Search` object used. Override this if you want to customize the search object (for example by adding a global filter for published articles only). +* `query(self, search)`: adds the query position of the search (if search input specified), by default using `MultiField` query. Override this if you want to modify the query type used. +* `highlight(self, search)`: defines the highlighting on the `Search` object and returns a new one. Default behavior is to highlight on all fields specified for search. + + + +### Usage [_usage] + +The custom subclass can be instantiated empty to provide an empty search (matching everything) or with `query`, `filters` and `sort`. + +* `query`: is used to pass in the text of the query to be performed. If `None` is passed in (default) a `MatchAll` query will be used. For example `'python web'` +* `filters`: is a dictionary containing all the facet filters that you wish to apply. Use the name of the facet (from `.facets` attribute) as the key and one of the possible values as value. For example `{'tags': 'python'}`. +* `sort`: is a tuple or list of fields on which the results should be sorted. The format of the individual fields are to be the same as those passed to `~elasticsearch.dsl.Search.sort`. + +#### Response [_response_2] + +the response returned from the `FacetedSearch` object (by calling `.execute()`) is a subclass of the standard `Response` class that adds a property called `facets` which contains a dictionary with lists of buckets -each represented by a tuple of key, document count and a flag indicating whether this value has been filtered on. + + + +### Example [_example] + +```python +from datetime import date + +from elasticsearch.dsl import FacetedSearch, TermsFacet, DateHistogramFacet + +class BlogSearch(FacetedSearch): + doc_types = [Article, ] + # fields that should be searched + fields = ['tags', 'title', 'body'] + + facets = { + # use bucket aggregations to define facets + 'tags': TermsFacet(field='tags'), + 'publishing_frequency': DateHistogramFacet(field='published_from', interval='month') + } + + def search(self): + # override methods to add custom pieces + s = super().search() + return s.filter('range', publish_from={'lte': 'now/h'}) + +bs = BlogSearch('python web', {'publishing_frequency': date(2015, 6)}) +response = bs.execute() + +# access hits and other attributes as usual +total = response.hits.total +print('total hits', total.relation, total.value) +for hit in response: + print(hit.meta.score, hit.title) + +for (tag, count, selected) in response.facets.tags: + print(tag, ' (SELECTED):' if selected else ':', count) + +for (month, count, selected) in response.facets.publishing_frequency: + print(month.strftime('%B %Y'), ' (SELECTED):' if selected else ':', count) +``` + + + +## Update By Query [update_by_query] + +### The `Update By Query` object [_the_update_by_query_object] + +The `Update By Query` object enables the use of the [_update_by_query](https://www.elastic.co/docs/api/doc/elasticsearch/v8/operation/operation-update-by-query) endpoint to perform an update on documents that match a search query. + +The object is implemented as a modification of the `Search` object, containing a subset of its query methods, as well as a script method, which is used to make updates. + +The `Update By Query` object implements the following `Search` query types: + +* queries +* filters +* excludes + +For more information on queries, see the `search_dsl` chapter. + +Like the `Search` object, the API is designed to be chainable. This means that the `Update By Query` object is immutable: all changes to the object will result in a shallow copy being created which contains the changes. This means you can safely pass the `Update By Query` object to foreign code without fear of it modifying your objects as long as it sticks to the `Update By Query` object APIs. + +You can define your client in a number of ways, but the preferred method is to use a global configuration. For more information on defining a client, see the `configuration` chapter. + +Once your client is defined, you can instantiate a copy of the `Update By Query` object as seen below: + +```python +from elasticsearch.dsl import UpdateByQuery + +ubq = UpdateByQuery().using(client) +# or +ubq = UpdateByQuery(using=client) +``` + +::::{note} +All methods return a *copy* of the object, making it safe to pass to outside code. + +:::: + + +The API is chainable, allowing you to combine multiple method calls in one statement: + +```python +ubq = UpdateByQuery().using(client).query("match", title="python") +``` + +To send the request to Elasticsearch: + +```python +response = ubq.execute() +``` + +It should be noted, that there are limits to the chaining using the script method: calling script multiple times will overwrite the previous value. That is, only a single script can be sent with a call. An attempt to use two scripts will result in only the second script being stored. + +Given the below example: + +```python +ubq = UpdateByQuery() \ + .using(client) \ + .script(source="ctx._source.likes++") \ + .script(source="ctx._source.likes+=2") +``` + +This means that the stored script by this client will be `'source': 'ctx._source.likes{{plus}}=2'` and the previous call will not be stored. + +For debugging purposes you can serialize the `Update By Query` object to a `dict` explicitly: + +```python +print(ubq.to_dict()) +``` + +Also, to use variables in script see below example: + +```python +ubq.script( + source="ctx._source.messages.removeIf(x -> x.somefield == params.some_var)", + params={ + 'some_var': 'some_string_val' + } +) +``` + +#### Serialization and Deserialization [_serialization_and_deserialization_2] + +The search object can be serialized into a dictionary by using the `.to_dict()` method. + +You can also create a `Update By Query` object from a `dict` using the `from_dict` class method. This will create a new `Update By Query` object and populate it using the data from the dict: + +```python +ubq = UpdateByQuery.from_dict({"query": {"match": {"title": "python"}}}) +``` + +If you wish to modify an existing `Update By Query` object, overriding it’s properties, instead use the `update_from_dict` method that alters an instance **in-place**: + +```python +ubq = UpdateByQuery(index='i') +ubq.update_from_dict({"query": {"match": {"title": "python"}}, "size": 42}) +``` + + +#### Extra properties and parameters [_extra_properties_and_parameters_2] + +To set extra properties of the search request, use the `.extra()` method. This can be used to define keys in the body that cannot be defined via a specific API method like `explain`: + +```python +ubq = ubq.extra(explain=True) +``` + +To set query parameters, use the `.params()` method: + +```python +ubq = ubq.params(routing="42") +``` + + + +### Response [_response_3] + +You can execute your search by calling the `.execute()` method that will return a `Response` object. The `Response` object allows you access to any key from the response dictionary via attribute access. It also provides some convenient helpers: + +```python +response = ubq.execute() + +print(response.success()) +# True + +print(response.took) +# 12 +``` + +If you want to inspect the contents of the `response` objects, just use its `to_dict` method to get access to the raw data for pretty printing. + + + +## Using asyncio with Elasticsearch Python DSL [asyncio] + +The DSL module supports async/await with [asyncio](https://docs.python.org/3/library/asyncio.html). To ensure that you have all the required dependencies, install the `[async]` extra: + +```bash +$ python -m pip install "elasticsearch[async]" +``` + +### Connections [_connections] + +Use the `async_connections` module to manage your asynchronous connections. + +```python +from elasticsearch.dsl import async_connections + +async_connections.create_connection(hosts=['localhost'], timeout=20) +``` + +All the options available in the `connections` module can be used with `async_connections`. + +#### How to avoid *Unclosed client session / connector* warnings on exit [_how_to_avoid_unclosed_client_session_connector_warnings_on_exit] + +These warnings come from the `aiohttp` package, which is used internally by the `AsyncElasticsearch` client. They appear often when the application exits and are caused by HTTP connections that are open when they are garbage collected. To avoid these warnings, make sure that you close your connections. + +```python +es = async_connections.get_connection() +await es.close() +``` + + + +### Search DSL [_search_dsl] + +Use the `AsyncSearch` class to perform asynchronous searches. + +```python +from elasticsearch.dsl import AsyncSearch + +s = AsyncSearch().query("match", title="python") +async for hit in s: + print(hit.title) +``` + +Instead of using the `AsyncSearch` object as an asynchronous iterator, you can explicitly call the `execute()` method to get a `Response` object. + +```python +s = AsyncSearch().query("match", title="python") +response = await s.execute() +for hit in response: + print(hit.title) +``` + +An `AsyncMultiSearch` is available as well. + +```python +from elasticsearch.dsl import AsyncMultiSearch + +ms = AsyncMultiSearch(index='blogs') + +ms = ms.add(AsyncSearch().filter('term', tags='python')) +ms = ms.add(AsyncSearch().filter('term', tags='elasticsearch')) + +responses = await ms.execute() + +for response in responses: + print("Results for query %r." % response.search.query) + for hit in response: + print(hit.title) +``` + + +### Asynchronous Documents, Indexes, and more [_asynchronous_documents_indexes_and_more] + +The `Document`, `Index`, `IndexTemplate`, `Mapping`, `UpdateByQuery` and `FacetedSearch` classes all have asynchronous versions that use the same name with an `Async` prefix. These classes expose the same interfaces as the synchronous versions, but any methods that perform I/O are defined as coroutines. + +Auxiliary classes that do not perform I/O do not have asynchronous versions. The same classes can be used in synchronous and asynchronous applications. + +When using a custom analyzer in an asynchronous application, use the `async_simulate()` method to invoke the Analyze API on it. + +Consult the `api` section for details about each specific method. + + + diff --git a/docs/reference/_tutorials.md b/docs/reference/_tutorials.md new file mode 100644 index 000000000..7b72bc04e --- /dev/null +++ b/docs/reference/_tutorials.md @@ -0,0 +1,241 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/_tutorials.html +--- + +# Tutorials [_tutorials] + +## Search [_search] + +Let’s have a typical search request written directly as a `dict`: + +```python +from elasticsearch import Elasticsearch +client = Elasticsearch("https://localhost:9200") + +response = client.search( + index="my-index", + body={ + "query": { + "bool": { + "must": [{"match": {"title": "python"}}], + "must_not": [{"match": {"description": "beta"}}], + "filter": [{"term": {"category": "search"}}] + } + }, + "aggs" : { + "per_tag": { + "terms": {"field": "tags"}, + "aggs": { + "max_lines": {"max": {"field": "lines"}} + } + } + } + } +) + +for hit in response['hits']['hits']: + print(hit['_score'], hit['_source']['title']) + +for tag in response['aggregations']['per_tag']['buckets']: + print(tag['key'], tag['max_lines']['value']) +``` + +The problem with this approach is that it is very verbose, prone to syntax mistakes like incorrect nesting, hard to modify (eg. adding another filter) and definitely not fun to write. + +Let’s rewrite the example using the DSL module: + +```python +from elasticsearch import Elasticsearch +from elasticsearch.dsl import Search + +client = Elasticsearch("https://localhost:9200") + +s = Search(using=client, index="my-index") \ + .filter("term", category="search") \ + .query("match", title="python") \ + .exclude("match", description="beta") + +s.aggs.bucket('per_tag', 'terms', field='tags') \ + .metric('max_lines', 'max', field='lines') + +response = s.execute() + +for hit in response: + print(hit.meta.score, hit.title) + +for tag in response.aggregations.per_tag.buckets: + print(tag.key, tag.max_lines.value) +``` + +As you see, the library took care of: + +* creating appropriate `Query` objects by name (eq. "match") +* composing queries into a compound `bool` query +* putting the `term` query in a filter context of the `bool` query +* providing a convenient access to response data +* no curly or square brackets everywhere + + +## Persistence [_persistence] + +Let’s have a simple Python class representing an article in a blogging system: + +```python +from datetime import datetime +from elasticsearch.dsl import Document, Date, Integer, Keyword, Text, connections + +# Define a default Elasticsearch client +connections.create_connection(hosts="https://localhost:9200") + +class Article(Document): + title = Text(analyzer='snowball', fields={'raw': Keyword()}) + body = Text(analyzer='snowball') + tags = Keyword() + published_from = Date() + lines = Integer() + + class Index: + name = 'blog' + settings = { + "number_of_shards": 2, + } + + def save(self, ** kwargs): + self.lines = len(self.body.split()) + return super(Article, self).save(** kwargs) + + def is_published(self): + return datetime.now() > self.published_from + +# create the mappings in elasticsearch +Article.init() + +# create and save and article +article = Article(meta={'id': 42}, title='Hello world!', tags=['test']) +article.body = ''' looong text ''' +article.published_from = datetime.now() +article.save() + +article = Article.get(id=42) +print(article.is_published()) + +# Display cluster health +print(connections.get_connection().cluster.health()) +``` + +In this example you can see: + +* providing a default connection +* defining fields with mapping configuration +* setting index name +* defining custom methods +* overriding the built-in `.save()` method to hook into the persistence life cycle +* retrieving and saving the object into Elasticsearch +* accessing the underlying client for other APIs + +You can see more in the `persistence` chapter. + + +## Pre-built Faceted Search [_pre_built_faceted_search] + +If you have your `Document`s defined you can very easily create a faceted search class to simplify searching and filtering. + +::::{note} +This feature is experimental and may be subject to change. + +:::: + + +```python +from elasticsearch.dsl import FacetedSearch, TermsFacet, DateHistogramFacet + +class BlogSearch(FacetedSearch): + doc_types = [Article, ] + # fields that should be searched + fields = ['tags', 'title', 'body'] + + facets = { + # use bucket aggregations to define facets + 'tags': TermsFacet(field='tags'), + 'publishing_frequency': DateHistogramFacet(field='published_from', interval='month') + } + +# empty search +bs = BlogSearch() +response = bs.execute() + +for hit in response: + print(hit.meta.score, hit.title) + +for (tag, count, selected) in response.facets.tags: + print(tag, ' (SELECTED):' if selected else ':', count) + +for (month, count, selected) in response.facets.publishing_frequency: + print(month.strftime('%B %Y'), ' (SELECTED):' if selected else ':', count) +``` + +You can find more details in the `faceted_search` chapter. + + +## Update By Query [_update_by_query] + +Let’s resume the simple example of articles on a blog, and let’s assume that each article has a number of likes. For this example, imagine we want to increment the number of likes by 1 for all articles that match a certain tag and do not match a certain description. Writing this as a `dict`, we would have the following code: + +```python +from elasticsearch import Elasticsearch +client = Elasticsearch() + +response = client.update_by_query( + index="my-index", + body={ + "query": { + "bool": { + "must": [{"match": {"tag": "python"}}], + "must_not": [{"match": {"description": "beta"}}] + } + }, + "script"={ + "source": "ctx._source.likes++", + "lang": "painless" + } + }, + ) +``` + +Using the DSL, we can now express this query as such: + +```python +from elasticsearch import Elasticsearch +from elasticsearch.dsl import Search, UpdateByQuery + +client = Elasticsearch() +ubq = UpdateByQuery(using=client, index="my-index") \ + .query("match", title="python") \ + .exclude("match", description="beta") \ + .script(source="ctx._source.likes++", lang="painless") + +response = ubq.execute() +``` + +As you can see, the `Update By Query` object provides many of the savings offered by the `Search` object, and additionally allows one to update the results of the search based on a script assigned in the same manner. + + +## Migration from the standard client [_migration_from_the_standard_client] + +You don’t have to port your entire application to get the benefits of the DSL module, you can start gradually by creating a `Search` object from your existing `dict`, modifying it using the API and serializing it back to a `dict`: + +```python +body = {...} # insert complicated query here + +# Convert to Search object +s = Search.from_dict(body) + +# Add some filters, aggregations, queries, ... +s.filter("term", tags="python") + +# Convert back to dict to plug back into existing code +body = s.to_dict() +``` + + diff --git a/docs/reference/async.md b/docs/reference/async.md new file mode 100644 index 000000000..aa29a4464 --- /dev/null +++ b/docs/reference/async.md @@ -0,0 +1,108 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/async.html +--- + +# Using with asyncio [async] + +The `elasticsearch` package supports async/await with [asyncio](https://docs.python.org/3/library/asyncio.html) and [aiohttp](https://docs.aiohttp.org). You can either install `aiohttp` directly or use the `[async]` extra: + +```bash +$ python -m pip install elasticsearch aiohttp + +# - OR - + +$ python -m pip install elasticsearch[async] +``` + + +## Getting Started with Async [_getting_started_with_async] + +After installation all async API endpoints are available via `~elasticsearch.AsyncElasticsearch` and are used in the same way as other APIs, with an extra `await`: + +```python +import asyncio +from elasticsearch import AsyncElasticsearch + +client = AsyncElasticsearch() + +async def main(): + resp = await client.search( + index="documents", + body={"query": {"match_all": {}}}, + size=20, + ) + print(resp) + +loop = asyncio.get_event_loop() +loop.run_until_complete(main()) +``` + +All APIs that are available under the sync client are also available under the async client. + +[Reference documentation](https://elasticsearch-py.readthedocs.io/en/latest/async.html#api-reference) + + +## ASGI Applications and Elastic APM [_asgi_applications_and_elastic_apm] + +[ASGI](https://asgi.readthedocs.io) (Asynchronous Server Gateway Interface) is a way to serve Python web applications making use of async I/O to achieve better performance. Some examples of ASGI frameworks include FastAPI, Django 3.0+, and Starlette. If you’re using one of these frameworks along with Elasticsearch then you should be using `~elasticsearch.AsyncElasticsearch` to avoid blocking the event loop with synchronous network calls for optimal performance. + +[Elastic APM](apm-agent-php://docs/reference/index.md) also supports tracing of async Elasticsearch queries just the same as synchronous queries. For an example on how to configure `AsyncElasticsearch` with a popular ASGI framework [FastAPI](https://fastapi.tiangolo.com/) and APM tracing there is a [pre-built example](https://github.com/elastic/elasticsearch-py/tree/master/examples/fastapi-apm) in the `examples/fastapi-apm` directory. + +See also the [Using OpenTelemetry](/reference/opentelemetry.md) page. + + +## Frequently Asked Questions [_frequently_asked_questions] + + +### ValueError when initializing `AsyncElasticsearch`? [_valueerror_when_initializing_asyncelasticsearch] + +If when trying to use `AsyncElasticsearch` you receive `ValueError: You must have 'aiohttp' installed to use AiohttpHttpNode` you should ensure that you have `aiohttp` installed in your environment (check with `$ python -m pip freeze | grep aiohttp`). Otherwise, async support won’t be available. + + +### What about the `elasticsearch-async` package? [_what_about_the_elasticsearch_async_package] + +Previously asyncio was supported separately via the [elasticsearch-async](https://github.com/elastic/elasticsearch-py-async) package. The `elasticsearch-async` package has been deprecated in favor of `AsyncElasticsearch` provided by the `elasticsearch` package in v7.8 and onwards. + + +### Receiving *Unclosed client session / connector* warning? [_receiving_unclosed_client_session_connector_warning] + +This warning is created by `aiohttp` when an open HTTP connection is garbage collected. You’ll typically run into this when closing your application. To resolve the issue ensure that `~elasticsearch.AsyncElasticsearch.close` is called before the `~elasticsearch.AsyncElasticsearch` instance is garbage collected. + +For example if using FastAPI that might look like this: + +```python +import os +from contextlib import asynccontextmanager + +from fastapi import FastAPI +from elasticsearch import AsyncElasticsearch + +ELASTICSEARCH_URL = os.environ["ELASTICSEARCH_URL"] +client = None + +@asynccontextmanager +async def lifespan(app: FastAPI): + global client + client = AsyncElasticsearch(ELASTICSEARCH_URL) + yield + await client.close() + +app = FastAPI(lifespan=lifespan) + +@app.get("/") +async def main(): + return await client.info() +``` + +You can run this example by saving it to `main.py` and executing `ELASTICSEARCH_URL=http://localhost:9200 uvicorn main:app`. + + +## Async Helpers [_async_helpers] + +Async variants of all helpers are available in `elasticsearch.helpers` and are all prefixed with `async_*`. You’ll notice that these APIs are identical to the ones in the sync [*Client helpers*](/reference/client-helpers.md) documentation. + +All async helpers that accept an iterator or generator also accept async iterators and async generators. + +[Reference documentation](https://elasticsearch-py.readthedocs.io/en/latest/async.html#api-reference) + diff --git a/docs/reference/client-helpers.md b/docs/reference/client-helpers.md new file mode 100644 index 000000000..02ab4e026 --- /dev/null +++ b/docs/reference/client-helpers.md @@ -0,0 +1,72 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/client-helpers.html +--- + +# Client helpers [client-helpers] + +You can find here a collection of simple helper functions that abstract some specifics of the raw API. For detailed examples, refer to [this page](https://elasticsearch-py.readthedocs.io/en/stable/helpers.md). + + +## Bulk helpers [bulk-helpers] + +There are several helpers for the bulk API since its requirement for specific formatting and other considerations can make it cumbersome if used directly. + +All bulk helpers accept an instance of `{{es}}` class and an iterable `action` (any iterable, can also be a generator, which is ideal in most cases since it allows you to index large datasets without the need of loading them into memory). + +The items in the iterable `action` should be the documents we wish to index in several formats. The most common one is the same as returned by `search()`, for example: + +```yaml +{ + '_index': 'index-name', + '_id': 42, + '_routing': 5, + 'pipeline': 'my-ingest-pipeline', + '_source': { + "title": "Hello World!", + "body": "..." + } +} +``` + +Alternatively, if `_source` is not present, it pops all metadata fields from the doc and use the rest as the document data: + +```yaml +{ + "_id": 42, + "_routing": 5, + "title": "Hello World!", + "body": "..." +} +``` + +The `bulk()` api accepts `index`, `create`, `delete`, and `update` actions. Use the `_op_type` field to specify an action (`_op_type` defaults to `index`): + +```yaml +{ + '_op_type': 'delete', + '_index': 'index-name', + '_id': 42, +} +{ + '_op_type': 'update', + '_index': 'index-name', + '_id': 42, + 'doc': {'question': 'The life, universe and everything.'} +} +``` + + +## Scan [scan] + +Simple abstraction on top of the `scroll()` API - a simple iterator that yields all hits as returned by underlining scroll requests. + +By default scan does not return results in any pre-determined order. To have a standard order in the returned documents (either by score or explicit sort definition) when scrolling, use `preserve_order=True`. This may be an expensive operation and will negate the performance benefits of using `scan`. + +```py +scan(es, + query={"query": {"match": {"title": "python"}}}, + index="orders-*" +) +``` + diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md new file mode 100644 index 000000000..7d500a970 --- /dev/null +++ b/docs/reference/configuration.md @@ -0,0 +1,415 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/config.html +--- + +# Configuration [config] + +This page contains information about the most important configuration options of the Python {{es}} client. + + +## TLS/SSL [tls-and-ssl] + +The options in this section can only be used when the node is configured for HTTPS. An error will be raised if using these options with an HTTP node. + + +### Verifying server certificates [_verifying_server_certificates] + +The typical route to verify a cluster certificate is via a "CA bundle" which can be specified via the `ca_certs` parameter. If no options are given and the [certifi package](https://github.com/certifi/python-certifi) is installed then certifi’s CA bundle is used by default. + +If you have your own CA bundle to use you can configure via the `ca_certs` parameter: + +```python +client = Elasticsearch( + "https://...", + ca_certs="/path/to/certs.pem" +) +``` + +If using a generated certificate or certificate with a known fingerprint you can use the `ssl_assert_fingerprint` to specify the fingerprint which tries to match the server’s leaf certificate during the TLS handshake. If there is any matching certificate the connection is verified, otherwise a `TlsError` is raised. + +In Python 3.9 and earlier only the leaf certificate will be verified but in Python 3.10+ private APIs are used to verify any certificate in the certificate chain. This helps when using certificates that are generated on a multi-node cluster. + +```python +client = Elasticsearch( + "https://...", + ssl_assert_fingerprint=( + "315f5bdb76d078c43b8ac0064e4a0164612b1fce77c869345bfc94c75894edd3" + ) +) +``` + +To disable certificate verification use the `verify_certs=False` parameter. This option should be avoided in production, instead use the other options to verify the clusters' certificate. + +```python +client = Elasticsearch( + "https://...", + verify_certs=False +) +``` + + +### TLS versions [_tls_versions] + +Configuring the minimum TLS version to connect to is done via the `ssl_version` parameter. By default this is set to a minimum value of TLSv1.2. Use the `ssl.TLSVersion` enumeration to specify versions. + +```python +import ssl + +client = Elasticsearch( + ..., + ssl_version=ssl.TLSVersion.TLSv1_2 +) +``` + + +### Client TLS certificate authentication [_client_tls_certificate_authentication] + +Elasticsearch can be configured to authenticate clients via TLS client certificates. Client certificate and keys can be configured via the `client_cert` and `client_key` parameters: + +```python +client = Elasticsearch( + ..., + client_cert="/path/to/cert.pem", + client_key="/path/to/key.pem", +) +``` + + +### Using an SSLContext [_using_an_sslcontext] + +For advanced users an `ssl.SSLContext` object can be used for configuring TLS via the `ssl_context` parameter. The `ssl_context` parameter can’t be combined with any other TLS options except for the `ssl_assert_fingerprint` parameter. + +```python +import ssl + +# Create and configure an SSLContext +ctx = ssl.create_default_context() +ctx.load_verify_locations(...) + +client = Elasticsearch( + ..., + ssl_context=ctx +) +``` + + +## HTTP compression [compression] + +Compression of HTTP request and response bodies can be enabled with the `http_compress` parameter. If enabled then HTTP request bodies will be compressed with `gzip` and HTTP responses will include the `Accept-Encoding: gzip` HTTP header. By default compression is disabled. + +```python +client = Elasticsearch( + ..., + http_compress=True # Enable compression! +) +``` + +HTTP compression is recommended to be enabled when requests are traversing the network. Compression is automatically enabled when connecting to Elastic Cloud. + + +## Request timeouts [timeouts] + +Requests can be configured to timeout if taking too long to be serviced. The `request_timeout` parameter can be passed via the client constructor or the client `.options()` method. When the request times out the node will raise a `ConnectionTimeout` exception which can trigger retries. + +Setting `request_timeout` to `None` will disable timeouts. + +```python +client = Elasticsearch( + ..., + request_timeout=10 # 10 second timeout +) + +# Search request will timeout in 5 seconds +client.options(request_timeout=5).search(...) +``` + + +### API and server timeouts [_api_and_server_timeouts] + +There are API-level timeouts to take into consideration when making requests which can cause the request to timeout on server-side rather than client-side. You may need to configure both a transport and API level timeout for long running operations. + +In the example below there are three different configurable timeouts for the `cluster.health` API all with different meanings for the request: + +```python +client.options( + # Amount of time to wait for an HTTP response to start. + request_timeout=30 +).cluster.health( + # Amount of time to wait to collect info on all nodes. + timeout=30, + # Amount of time to wait for info from the master node. + master_timeout=10, +) +``` + + +## Retries [retries] + +Requests can be retried if they don’t return with a successful response. This provides a way for requests to be resilient against transient failures or overloaded nodes. + +The maximum number of retries per request can be configured via the `max_retries` parameter. Setting this parameter to 0 disables retries. This parameter can be set in the client constructor or per-request via the client `.options()` method: + +```python +client = Elasticsearch( + ..., + max_retries=5 +) + +# For this API request we disable retries with 'max_retries=0' +client.options(max_retries=0).index( + index="blogs", + document={ + "title": "..." + } +) +``` + + +### Retrying on connection errors and timeouts [_retrying_on_connection_errors_and_timeouts] + +Connection errors are automatically retried if retries are enabled. Retrying requests on connection timeouts can be enabled or disabled via the `retry_on_timeout` parameter. This parameter can be set on the client constructor or via the client `.options()` method: + +```python +client = Elasticsearch( + ..., + retry_on_timeout=True +) +client.options(retry_on_timeout=False).info() +``` + + +### Retrying status codes [_retrying_status_codes] + +By default if retries are enabled `retry_on_status` is set to `(429, 502, 503, 504)`. This parameter can be set on the client constructor or via the client `.options()` method. Setting this value to `()` will disable the default behavior. + +```python +client = Elasticsearch( + ..., + retry_on_status=() +) + +# Retry this API on '500 Internal Error' statuses +client.options(retry_on_status=[500]).index( + index="blogs", + document={ + "title": "..." + } +) +``` + + +### Ignoring status codes [_ignoring_status_codes] + +By default an `ApiError` exception will be raised for any non-2XX HTTP requests that exhaust retries, if any. If you’re expecting an HTTP error from the API but aren’t interested in raising an exception you can use the `ignore_status` parameter via the client `.options()` method. + +A good example where this is useful is setting up or cleaning up resources in a cluster in a robust way: + +```python +client = Elasticsearch(...) + +# API request is robust against the index not existing: +resp = client.options(ignore_status=404).indices.delete(index="delete-this") +resp.meta.status # Can be either '2XX' or '404' + +# API request is robust against the index already existing: +resp = client.options(ignore_status=[400]).indices.create( + index="create-this", + mapping={ + "properties": {"field": {"type": "integer"}} + } +) +resp.meta.status # Can be either '2XX' or '400' +``` + +When using the `ignore_status` parameter the error response will be returned serialized just like a non-error response. In these cases it can be useful to inspect the HTTP status of the response. To do this you can inspect the `resp.meta.status`. + + +## Sniffing for new nodes [sniffing] + +Additional nodes can be discovered by a process called "sniffing" where the client will query the cluster for more nodes that can handle requests. + +Sniffing can happen at three different times: on client instantiation, before requests, and on a node failure. These three behaviors can be enabled and disabled with the `sniff_on_start`, `sniff_before_requests`, and `sniff_on_node_failure` parameters. + +::::{important} +When using an HTTP load balancer or proxy you cannot use sniffing functionality as the cluster would supply the client with IP addresses to directly connect to the cluster, circumventing the load balancer. Depending on your configuration this might be something you don’t want or break completely. +:::: + + + +### Waiting between sniffing attempts [_waiting_between_sniffing_attempts] + +To avoid needlessly sniffing too often there is a delay between attempts to discover new nodes. This value can be controlled via the `min_delay_between_sniffing` parameter. + + +### Filtering nodes which are sniffed [_filtering_nodes_which_are_sniffed] + +By default nodes which are marked with only a `master` role will not be used. To change the behavior the parameter `sniffed_node_callback` can be used. To mark a sniffed node not to be added to the node pool return `None` from the `sniffed_node_callback`, otherwise return a `NodeConfig` instance. + +```python +from typing import Optional, Dict, Any +from elastic_transport import NodeConfig +from elasticsearch import Elasticsearch + +def filter_master_eligible_nodes( + node_info: Dict[str, Any], + node_config: NodeConfig +) -> Optional[NodeConfig]: + # This callback ignores all nodes that are master eligible + # instead of master-only nodes (default behavior) + if "master" in node_info.get("roles", ()): + return None + return node_config + +client = Elasticsearch( + "https://localhost:9200", + sniffed_node_callback=filter_master_eligible_nodes +) +``` + +The `node_info` parameter is part of the response from the `nodes.info()` API, below is an example of what that object looks like: + +```json +{ + "name": "SRZpKFZ", + "transport_address": "127.0.0.1:9300", + "host": "127.0.0.1", + "ip": "127.0.0.1", + "version": "5.0.0", + "build_hash": "253032b", + "roles": ["master", "data", "ingest"], + "http": { + "bound_address": ["[fe80::1]:9200", "[::1]:9200", "127.0.0.1:9200"], + "publish_address": "1.1.1.1:123", + "max_content_length_in_bytes": 104857600 + } +} +``` + + +## Node Pool [node-pool] + + +### Selecting a node from the pool [_selecting_a_node_from_the_pool] + +You can specify a node selector pattern via the `node_selector_class` parameter. The supported values are `round_robin` and `random`. Default is `round_robin`. + +```python +client = Elasticsearch( + ..., + node_selector_class="round_robin" +) +``` + +Custom selectors are also supported: + +```python +from elastic_transport import NodeSelector + +class CustomSelector(NodeSelector): + def select(nodes): ... + +client = Elasticsearch( + ..., + node_selector_class=CustomSelector +) +``` + + +### Marking nodes dead and alive [_marking_nodes_dead_and_alive] + +Individual nodes of Elasticsearch may have transient connectivity or load issues which may make them unable to service requests. To combat this the pool of nodes will detect when a node isn’t able to service requests due to transport or API errors. + +After a node has been timed out it will be moved back to the set of "alive" nodes but only after the node returns a successful response will the node be marked as "alive" in terms of consecutive errors. + +The `dead_node_backoff_factor` and `max_dead_node_backoff` parameters can be used to configure how long the node pool will put the node into timeout with each consecutive failure. Both parameters use a unit of seconds. + +The calculation is equal to `min(dead_node_backoff_factor * (2 ** (consecutive_failures - 1)), max_dead_node_backoff)`. + + +## Serializers [serializer] + +Serializers transform bytes on the wire into native Python objects and vice-versa. By default the client ships with serializers for `application/json`, `application/x-ndjson`, `text/*`, `application/vnd.apache.arrow.stream` and `application/mapbox-vector-tile`. + +You can define custom serializers via the `serializers` parameter: + +```python +from elasticsearch import Elasticsearch, JsonSerializer + +class JsonSetSerializer(JsonSerializer): + """Custom JSON serializer that handles Python sets""" + def default(self, data: Any) -> Any: + if isinstance(data, set): + return list(data) + return super().default(data) + +client = Elasticsearch( + ..., + # Serializers are a mapping of 'mimetype' to Serializer class. + serializers={"application/json": JsonSetSerializer()} +) +``` + +If the `orjson` package is installed, you can use the faster ``OrjsonSerializer`` for the default mimetype (``application/json``): + +```python +from elasticsearch import Elasticsearch, OrjsonSerializer + +es = Elasticsearch( + ..., + serializer=OrjsonSerializer() +) +``` + +orjson is particularly fast when serializing vectors as it has native numpy support. This will be the default in a future release. Note that you can install orjson with the `orjson` extra: + +```sh +$ python -m pip install elasticsearch[orjson] +``` + + +## Nodes [nodes] + + +### Node implementations [_node_implementations] + +The default node class for synchronous I/O is `urllib3` and the default node class for asynchronous I/O is `aiohttp`. + +For all of the built-in HTTP node implementations like `urllib3`, `requests`, and `aiohttp` you can specify with a simple string to the `node_class` parameter: + +```python +from elasticsearch import Elasticsearch + +client = Elasticsearch( + ..., + node_class="requests" +) +``` + +You can also specify a custom node implementation via the `node_class` parameter: + +```python +from elasticsearch import Elasticsearch +from elastic_transport import Urllib3HttpNode + +class CustomHttpNode(Urllib3HttpNode): + ... + +client = Elasticsearch( + ... + node_class=CustomHttpNode +) +``` + + +### HTTP connections per node [_http_connections_per_node] + +Each node contains its own pool of HTTP connections to allow for concurrent requests. This value is configurable via the `connections_per_node` parameter: + +```python +client = Elasticsearch( + ..., + connections_per_node=5 +) +``` + diff --git a/docs/reference/connecting.md b/docs/reference/connecting.md new file mode 100644 index 000000000..133323028 --- /dev/null +++ b/docs/reference/connecting.md @@ -0,0 +1,357 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/connecting.html +--- + +# Connecting [connecting] + +This page contains the information you need to connect the Client with {{es}}. + + +## Connecting to Elastic Cloud [connect-ec] + +[Elastic Cloud](docs-content://deploy-manage/deploy/elastic-cloud/cloud-hosted.md) is the easiest way to get started with {{es}}. When connecting to Elastic Cloud with the Python {{es}} client you should always use the `cloud_id` parameter to connect. You can find this value within the "Manage Deployment" page after you’ve created a cluster (look in the top-left if you’re in Kibana). + +We recommend using a Cloud ID whenever possible because your client will be automatically configured for optimal use with Elastic Cloud including HTTPS and HTTP compression. + +```python +from elasticsearch import Elasticsearch + +# Password for the 'elastic' user generated by Elasticsearch +ELASTIC_PASSWORD = "" + +# Found in the 'Manage Deployment' page +CLOUD_ID = "deployment-name:dXMtZWFzdDQuZ2Nw..." + +# Create the client instance +client = Elasticsearch( + cloud_id=CLOUD_ID, + basic_auth=("elastic", ELASTIC_PASSWORD) +) + +# Successful response! +client.info() +# {'name': 'instance-0000000000', 'cluster_name': ...} +``` + + +## Connecting to a self-managed cluster [connect-self-managed-new] + +By default {{es}} will start with security features like authentication and TLS enabled. To connect to the {{es}} cluster you’ll need to configure the Python {{es}} client to use HTTPS with the generated CA certificate in order to make requests successfully. + +If you’re just getting started with {{es}} we recommend reading the documentation on [configuring](docs-content://deploy-manage/deploy/self-managed/configure-elasticsearch.md) and [starting {{es}}](docs-content://deploy-manage/maintenance/start-stop-services/start-stop-elasticsearch.md) to ensure your cluster is running as expected. + +When you start {{es}} for the first time you’ll see a distinct block like the one below in the output from {{es}} (you may have to scroll up if it’s been a while): + +```sh +---------------------------------------------------------------- +-> Elasticsearch security features have been automatically configured! +-> Authentication is enabled and cluster connections are encrypted. + +-> Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`): + lhQpLELkjkrawaBoaz0Q + +-> HTTP CA certificate SHA-256 fingerprint: + a52dd93511e8c6045e21f16654b77c9ee0f34aea26d9f40320b531c474676228 +... +---------------------------------------------------------------- +``` + +Note down the `elastic` user password and HTTP CA fingerprint for the next sections. In the examples below they will be stored in the variables `ELASTIC_PASSWORD` and `CERT_FINGERPRINT` respectively. + +Depending on the circumstances there are two options for verifying the HTTPS connection, either verifying with the CA certificate itself or via the HTTP CA certificate fingerprint. + + +### Verifying HTTPS with CA certificates [_verifying_https_with_ca_certificates] + +Using the `ca_certs` option is the default way the Python {{es}} client verifies an HTTPS connection. + +The generated root CA certificate can be found in the `certs` directory in your {{es}} config location (`$ES_CONF_PATH/certs/http_ca.crt`). If you’re running {{es}} in Docker there is [additional documentation for retrieving the CA certificate](docs-content://deploy-manage/deploy/self-managed/install-elasticsearch-with-docker.md). + +Once you have the `http_ca.crt` file somewhere accessible pass the path to the client via `ca_certs`: + +```python +from elasticsearch import Elasticsearch + +# Password for the 'elastic' user generated by Elasticsearch +ELASTIC_PASSWORD = "" + +# Create the client instance +client = Elasticsearch( + "https://localhost:9200", + ca_certs="/path/to/http_ca.crt", + basic_auth=("elastic", ELASTIC_PASSWORD) +) + +# Successful response! +client.info() +# {'name': 'instance-0000000000', 'cluster_name': ...} +``` + +::::{note} +If you don’t specify `ca_certs` or `ssl_assert_fingerprint` then the [certifi package](https://certifiio.readthedocs.io) will be used for `ca_certs` by default if available. +:::: + + + +### Verifying HTTPS with certificate fingerprints (Python 3.10 or later) [_verifying_https_with_certificate_fingerprints_python_3_10_or_later] + +::::{note} +Using this method **requires using Python 3.10 or later** and isn’t available when using the `aiohttp` HTTP client library so can’t be used with `AsyncElasticsearch`. +:::: + + +This method of verifying the HTTPS connection takes advantage of the certificate fingerprint value noted down earlier. Take this SHA256 fingerprint value and pass it to the Python {{es}} client via `ssl_assert_fingerprint`: + +```python +from elasticsearch import Elasticsearch + +# Fingerprint either from Elasticsearch startup or above script. +# Colons and uppercase/lowercase don't matter when using +# the 'ssl_assert_fingerprint' parameter +CERT_FINGERPRINT = "A5:2D:D9:35:11:E8:C6:04:5E:21:F1:66:54:B7:7C:9E:E0:F3:4A:EA:26:D9:F4:03:20:B5:31:C4:74:67:62:28" + +# Password for the 'elastic' user generated by Elasticsearch +ELASTIC_PASSWORD = "" + +client = Elasticsearch( + "https://localhost:9200", + ssl_assert_fingerprint=CERT_FINGERPRINT, + basic_auth=("elastic", ELASTIC_PASSWORD) +) + +# Successful response! +client.info() +# {'name': 'instance-0000000000', 'cluster_name': ...} +``` + +The certificate fingerprint can be calculated using `openssl x509` with the certificate file: + +```sh +openssl x509 -fingerprint -sha256 -noout -in /path/to/http_ca.crt +``` + +If you don’t have access to the generated CA file from {{es}} you can use the following script to output the root CA fingerprint of the {{es}} instance with `openssl s_client`: + +```sh +# Replace the values of 'localhost' and '9200' to the +# corresponding host and port values for the cluster. +openssl s_client -connect localhost:9200 -servername localhost -showcerts /dev/null \ + | openssl x509 -fingerprint -sha256 -noout -in /dev/stdin +``` + +The output of `openssl x509` will look something like this: + +```sh +SHA256 Fingerprint=A5:2D:D9:35:11:E8:C6:04:5E:21:F1:66:54:B7:7C:9E:E0:F3:4A:EA:26:D9:F4:03:20:B5:31:C4:74:67:62:28 +``` + + +## Connecting without security enabled [connect-no-security] + +::::{warning} +Running {{es}} without security enabled is not recommended. +:::: + + +If your cluster is configured with [security explicitly disabled](elasticsearch://docs/reference/elasticsearch/configuration-reference/security-settings.md) then you can connect via HTTP: + +```python +from elasticsearch import Elasticsearch + +# Create the client instance +client = Elasticsearch("http://localhost:9200") + +# Successful response! +client.info() +# {'name': 'instance-0000000000', 'cluster_name': ...} +``` + + +## Connecting to multiple nodes [connect-url] + +The Python {{es}} client supports sending API requests to multiple nodes in the cluster. This means that work will be more evenly spread across the cluster instead of hammering the same node over and over with requests. To configure the client with multiple nodes you can pass a list of URLs, each URL will be used as a separate node in the pool. + +```python +from elasticsearch import Elasticsearch + +# List of nodes to connect use with different hosts and ports. +NODES = [ + "https://localhost:9200", + "https://localhost:9201", + "https://localhost:9202", +] + +# Password for the 'elastic' user generated by Elasticsearch +ELASTIC_PASSWORD = "" + +client = Elasticsearch( + NODES, + ca_certs="/path/to/http_ca.crt", + basic_auth=("elastic", ELASTIC_PASSWORD) +) +``` + +By default nodes are selected using round-robin, but alternate node selection strategies can be configured with `node_selector_class` parameter. + +::::{note} +If your {{es}} cluster is behind a load balancer like when using Elastic Cloud you won’t need to configure multiple nodes. Instead use the load balancer host and port. +:::: + + + +## Authentication [authentication] + +This section contains code snippets to show you how to connect to various {{es}} providers. All authentication methods are supported on the client constructor or via the per-request `.options()` method: + +```python +from elasticsearch import Elasticsearch + +# Authenticate from the constructor +client = Elasticsearch( + "https://localhost:9200", + ca_certs="/path/to/http_ca.crt", + basic_auth=("username", "password") +) + +# Authenticate via the .options() method: +client.options( + basic_auth=("username", "password") +).indices.get(index="*") + +# You can persist the authenticated client to use +# later or use for multiple API calls: +auth_client = client.options(api_key="api_key") +for i in range(10): + auth_client.index( + index="example-index", + document={"field": i} + ) +``` + + +### HTTP Basic authentication (Username and Password) [auth-basic] + +HTTP Basic authentication uses the `basic_auth` parameter by passing in a username and password within a tuple: + +```python +from elasticsearch import Elasticsearch + +# Adds the HTTP header 'Authorization: Basic ' +client = Elasticsearch( + "https://localhost:9200", + ca_certs="/path/to/http_ca.crt", + basic_auth=("username", "password") +) +``` + + +### HTTP Bearer authentication [auth-bearer] + +HTTP Bearer authentication uses the `bearer_auth` parameter by passing the token as a string. This authentication method is used by [Service Account Tokens](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-security-create-service-token) and [Bearer Tokens](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-security-get-token). + +```python +from elasticsearch import Elasticsearch + +# Adds the HTTP header 'Authorization: Bearer token-value' +client = Elasticsearch( + "https://localhost:9200", + bearer_auth="token-value" +) +``` + + +### API Key authentication [auth-apikey] + +You can configure the client to use {{es}}'s API Key for connecting to your cluster. These can be generated through the [Elasticsearch Create API key API](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-security-create-api-key) or [Kibana Stack Management](docs-content://deploy-manage/api-keys/elasticsearch-api-keys.md#create-api-key). + +```python +from elasticsearch import Elasticsearch + +# Adds the HTTP header 'Authorization: ApiKey ' +client = Elasticsearch( + "https://localhost:9200", + ca_certs="/path/to/http_ca.crt", + api_key="api_key", +) +``` + + +## Enabling the Compatibility Mode [compatibility-mode] + +The {{es}} server version 8.0 is introducing a new compatibility mode that allows you a smoother upgrade experience from 7 to 8. In a nutshell, you can use the latest 7.x Python {{es}} {{es}} client with an 8.x {{es}} server, giving more room to coordinate the upgrade of your codebase to the next major version. + +If you want to leverage this functionality, please make sure that you are using the latest 7.x Python {{es}} client and set the environment variable `ELASTIC_CLIENT_APIVERSIONING` to `true`. The client is handling the rest internally. For every 8.0 and beyond Python {{es}} client, you’re all set! The compatibility mode is enabled by default. + + +## Using the Client in a Function-as-a-Service Environment [connecting-faas] + +This section illustrates the best practices for leveraging the {{es}} client in a Function-as-a-Service (FaaS) environment. + +The most influential optimization is to initialize the client outside of the function, the global scope. + +This practice does not only improve performance but also enables background functionality as – for example – [sniffing](https://www.elastic.co/blog/elasticsearch-sniffing-best-practices-what-when-why-how). The following examples provide a skeleton for the best practices. + +::::{important} +The async client shouldn’t be used within Function-as-a-Service as a new event loop must be started for each invocation. Instead the synchronous `Elasticsearch` client is recommended. +:::: + + + +### GCP Cloud Functions [connecting-faas-gcp] + +```python +from elasticsearch import Elasticsearch + +# Client initialization +client = Elasticsearch( + cloud_id="deployment-name:ABCD...", + api_key=... +) + +def main(request): + # Use the client + client.search(index=..., query={"match_all": {}}) +``` + + +### AWS Lambda [connecting-faas-aws] + +```python +from elasticsearch import Elasticsearch + +# Client initialization +client = Elasticsearch( + cloud_id="deployment-name:ABCD...", + api_key=... +) + +def main(event, context): + # Use the client + client.search(index=..., query={"match_all": {}}) +``` + + +### Azure Functions [connecting-faas-azure] + +```python +import azure.functions as func +from elasticsearch import Elasticsearch + +# Client initialization +client = Elasticsearch( + cloud_id="deployment-name:ABCD...", + api_key=... +) + +def main(request: func.HttpRequest) -> func.HttpResponse: + # Use the client + client.search(index=..., query={"match_all": {}}) +``` + +Resources used to assess these recommendations: + +* [GCP Cloud Functions: Tips & Tricks](https://cloud.google.com/functions/docs/bestpractices/tips#use_global_variables_to_reuse_objects_in_future_invocations) +* [Best practices for working with AWS Lambda functions](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.md) +* [Azure Functions Python developer guide](https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-python?tabs=azurecli-linux%2Capplication-level#global-variables) +* [AWS Lambda: Comparing the effect of global scope](https://docs.aws.amazon.com/lambda/latest/operatorguide/global-scope.md) diff --git a/docs/reference/elasticsearch-dsl.md b/docs/reference/elasticsearch-dsl.md new file mode 100644 index 000000000..4030e232d --- /dev/null +++ b/docs/reference/elasticsearch-dsl.md @@ -0,0 +1,42 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/elasticsearch-dsl.html +--- + +# Elasticsearch Python DSL [elasticsearch-dsl] + +Elasticsearch DSL is a module of the official Python client that aims to help with writing and running queries against Elasticsearch in a more convenient and idiomatic way. It stays close to the Elasticsearch JSON DSL, mirroring its terminology and structure. It exposes the whole range of the DSL from Python either directly using defined classes or a queryset-like expressions. Here is an example: + +```python +from elasticsearch.dsl import Search + +s = Search(index="my-index") \ + .filter("term", category="search") \ + .query("match", title="python") \ + .exclude("match", description="beta") +for hit in s: + print(hit.title) +``` + +Or with asynchronous Python: + +```python +from elasticsearch.dsl import AsyncSearch + +async def run_query(): + s = AsyncSearch(index="my-index") \ + .filter("term", category="search") \ + .query("match", title="python") \ + .exclude("match", description="beta") + async for hit in s: + print(hit.title) +``` + +It also provides an optional wrapper for working with documents as Python objects: defining mappings, retrieving and saving documents, wrapping the document data in user-defined classes. + +To use the other Elasticsearch APIs (eg. cluster health) just use the regular client. + + + + + diff --git a/docs/reference/esql-pandas.md b/docs/reference/esql-pandas.md new file mode 100644 index 000000000..47c0297fb --- /dev/null +++ b/docs/reference/esql-pandas.md @@ -0,0 +1,422 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/esql-pandas.html +--- + +# ES|QL and Pandas [esql-pandas] + +The [Elasticsearch Query Language (ES|QL)](docs-content://explore-analyze/query-filter/languages/esql.md) provides a powerful way to filter, transform, and analyze data stored in {{es}}. Designed to be easy to learn and use, it is a perfect fit for data scientists familiar with Pandas and other dataframe-based libraries. ES|QL queries produce tables with named columns, which is the definition of dataframes. + +This page shows you an example of using ES|QL and Pandas together to work with dataframes. + + +## Import data [import-data] + +Use the [`employees` sample data](https://github.com/elastic/elasticsearch/blob/main/x-pack/plugin/esql/qa/testFixtures/src/main/resources/employees.csv) and [mapping](https://github.com/elastic/elasticsearch/blob/main/x-pack/plugin/esql/qa/testFixtures/src/main/resources/mapping-default.json). The easiest way to load this dataset is to run [two Elasticsearch API requests](https://gist.github.com/pquentin/7cf29a5932cf52b293699dd994b1a276) in the Kibana Console. + +::::{dropdown} Index mapping request +```console +PUT employees +{ + "mappings": { + "properties": { + "avg_worked_seconds": { + "type": "long" + }, + "birth_date": { + "type": "date" + }, + "emp_no": { + "type": "integer" + }, + "first_name": { + "type": "keyword" + }, + "gender": { + "type": "keyword" + }, + "height": { + "type": "double", + "fields": { + "float": { + "type": "float" + }, + "half_float": { + "type": "half_float" + }, + "scaled_float": { + "type": "scaled_float", + "scaling_factor": 100 + } + } + }, + "hire_date": { + "type": "date" + }, + "is_rehired": { + "type": "boolean" + }, + "job_positions": { + "type": "keyword" + }, + "languages": { + "type": "integer", + "fields": { + "byte": { + "type": "byte" + }, + "long": { + "type": "long" + }, + "short": { + "type": "short" + } + } + }, + "last_name": { + "type": "keyword" + }, + "salary": { + "type": "integer" + }, + "salary_change": { + "type": "double", + "fields": { + "int": { + "type": "integer" + }, + "keyword": { + "type": "keyword" + }, + "long": { + "type": "long" + } + } + }, + "still_hired": { + "type": "boolean" + } + } + } +} +``` + +:::: + + +::::{dropdown} Bulk request to ingest data +```console +PUT employees/_bulk +{ "index": {}} +{"birth_date":"1953-09-02T00:00:00Z","emp_no":"10001","first_name":"Georgi","gender":"M","hire_date":"1986-06-26T00:00:00Z","languages":"2","last_name":"Facello","salary":"57305","height":"2.03","still_hired":"true","avg_worked_seconds":"268728049","job_positions":["Senior Python Developer","Accountant"],"is_rehired":["false","true"],"salary_change":"1.19"} +{ "index": {}} +{"birth_date":"1964-06-02T00:00:00Z","emp_no":"10002","first_name":"Bezalel","gender":"F","hire_date":"1985-11-21T00:00:00Z","languages":"5","last_name":"Simmel","salary":"56371","height":"2.08","still_hired":"true","avg_worked_seconds":"328922887","job_positions":"Senior Team Lead","is_rehired":["false","false"],"salary_change":["-7.23","11.17"]} +{ "index": {}} +{"birth_date":"1959-12-03T00:00:00Z","emp_no":"10003","first_name":"Parto","gender":"M","hire_date":"1986-08-28T00:00:00Z","languages":"4","last_name":"Bamford","salary":"61805","height":"1.83","still_hired":"false","avg_worked_seconds":"200296405","salary_change":["14.68","12.82"]} +{ "index": {}} +{"birth_date":"1954-05-01T00:00:00Z","emp_no":"10004","first_name":"Chirstian","gender":"M","hire_date":"1986-12-01T00:00:00Z","languages":"5","last_name":"Koblick","salary":"36174","height":"1.78","still_hired":"true","avg_worked_seconds":"311267831","job_positions":["Reporting Analyst","Tech Lead","Head Human Resources","Support Engineer"],"is_rehired":"true","salary_change":["3.65","-0.35","1.13","13.48"]} +{ "index": {}} +{"birth_date":"1955-01-21T00:00:00Z","emp_no":"10005","first_name":"Kyoichi","gender":"M","hire_date":"1989-09-12T00:00:00Z","languages":"1","last_name":"Maliniak","salary":"63528","height":"2.05","still_hired":"true","avg_worked_seconds":"244294991","is_rehired":["false","false","false","true"],"salary_change":["-2.14","13.07"]} +{ "index": {}} +{"birth_date":"1953-04-20T00:00:00Z","emp_no":"10006","first_name":"Anneke","gender":"F","hire_date":"1989-06-02T00:00:00Z","languages":"3","last_name":"Preusig","salary":"60335","height":"1.56","still_hired":"false","avg_worked_seconds":"372957040","job_positions":["Tech Lead","Principal Support Engineer","Senior Team Lead"],"salary_change":"-3.90"} +{ "index": {}} +{"birth_date":"1957-05-23T00:00:00Z","emp_no":"10007","first_name":"Tzvetan","gender":"F","hire_date":"1989-02-10T00:00:00Z","languages":"4","last_name":"Zielinski","salary":"74572","height":"1.70","still_hired":"true","avg_worked_seconds":"393084805","is_rehired":["true","false","true","false"],"salary_change":["-7.06","1.99","0.57"]} +{ "index": {}} +{"birth_date":"1958-02-19T00:00:00Z","emp_no":"10008","first_name":"Saniya","gender":"M","hire_date":"1994-09-15T00:00:00Z","languages":"2","last_name":"Kalloufi","salary":"43906","height":"2.10","still_hired":"true","avg_worked_seconds":"283074758","job_positions":["Senior Python Developer","Junior Developer","Purchase Manager","Internship"],"is_rehired":["true","false"],"salary_change":["12.68","3.54","0.75","-2.92"]} +{ "index": {}} +{"birth_date":"1952-04-19T00:00:00Z","emp_no":"10009","first_name":"Sumant","gender":"F","hire_date":"1985-02-18T00:00:00Z","languages":"1","last_name":"Peac","salary":"66174","height":"1.85","still_hired":"false","avg_worked_seconds":"236805489","job_positions":["Senior Python Developer","Internship"]} +{ "index": {}} +{"birth_date":"1963-06-01T00:00:00Z","emp_no":"10010","first_name":"Duangkaew","hire_date":"1989-08-24T00:00:00Z","languages":"4","last_name":"Piveteau","salary":"45797","height":"1.70","still_hired":"false","avg_worked_seconds":"315236372","job_positions":["Architect","Reporting Analyst","Tech Lead","Purchase Manager"],"is_rehired":["true","true","false","false"],"salary_change":["5.05","-6.77","4.69","12.15"]} +{ "index": {}} +{"birth_date":"1953-11-07T00:00:00Z","emp_no":"10011","first_name":"Mary","hire_date":"1990-01-22T00:00:00Z","languages":"5","last_name":"Sluis","salary":"31120","height":"1.50","still_hired":"true","avg_worked_seconds":"239615525","job_positions":["Architect","Reporting Analyst","Tech Lead","Senior Team Lead"],"is_rehired":["true","true"],"salary_change":["10.35","-7.82","8.73","3.48"]} +{ "index": {}} +{"birth_date":"1960-10-04T00:00:00Z","emp_no":"10012","first_name":"Patricio","hire_date":"1992-12-18T00:00:00Z","languages":"5","last_name":"Bridgland","salary":"48942","height":"1.97","still_hired":"false","avg_worked_seconds":"365510850","job_positions":["Head Human Resources","Accountant"],"is_rehired":["false","true","true","false"],"salary_change":"0.04"} +{ "index": {}} +{"birth_date":"1963-06-07T00:00:00Z","emp_no":"10013","first_name":"Eberhardt","hire_date":"1985-10-20T00:00:00Z","languages":"1","last_name":"Terkki","salary":"48735","height":"1.94","still_hired":"true","avg_worked_seconds":"253864340","job_positions":"Reporting Analyst","is_rehired":["true","true"]} +{ "index": {}} +{"birth_date":"1956-02-12T00:00:00Z","emp_no":"10014","first_name":"Berni","hire_date":"1987-03-11T00:00:00Z","languages":"5","last_name":"Genin","salary":"37137","height":"1.99","still_hired":"false","avg_worked_seconds":"225049139","job_positions":["Reporting Analyst","Data Scientist","Head Human Resources"],"salary_change":["-1.89","9.07"]} +{ "index": {}} +{"birth_date":"1959-08-19T00:00:00Z","emp_no":"10015","first_name":"Guoxiang","hire_date":"1987-07-02T00:00:00Z","languages":"5","last_name":"Nooteboom","salary":"25324","height":"1.66","still_hired":"true","avg_worked_seconds":"390266432","job_positions":["Principal Support Engineer","Junior Developer","Head Human Resources","Support Engineer"],"is_rehired":["true","false","false","false"],"salary_change":["14.25","12.40"]} +{ "index": {}} +{"birth_date":"1961-05-02T00:00:00Z","emp_no":"10016","first_name":"Kazuhito","hire_date":"1995-01-27T00:00:00Z","languages":"2","last_name":"Cappelletti","salary":"61358","height":"1.54","still_hired":"false","avg_worked_seconds":"253029411","job_positions":["Reporting Analyst","Python Developer","Accountant","Purchase Manager"],"is_rehired":["false","false"],"salary_change":["-5.18","7.69"]} +{ "index": {}} +{"birth_date":"1958-07-06T00:00:00Z","emp_no":"10017","first_name":"Cristinel","hire_date":"1993-08-03T00:00:00Z","languages":"2","last_name":"Bouloucos","salary":"58715","height":"1.74","still_hired":"false","avg_worked_seconds":"236703986","job_positions":["Data Scientist","Head Human Resources","Purchase Manager"],"is_rehired":["true","false","true","true"],"salary_change":"-6.33"} +{ "index": {}} +{"birth_date":"1954-06-19T00:00:00Z","emp_no":"10018","first_name":"Kazuhide","hire_date":"1987-04-03T00:00:00Z","languages":"2","last_name":"Peha","salary":"56760","height":"1.97","still_hired":"false","avg_worked_seconds":"309604079","job_positions":"Junior Developer","is_rehired":["false","false","true","true"],"salary_change":["-1.64","11.51","-5.32"]} +{ "index": {}} +{"birth_date":"1953-01-23T00:00:00Z","emp_no":"10019","first_name":"Lillian","hire_date":"1999-04-30T00:00:00Z","languages":"1","last_name":"Haddadi","salary":"73717","height":"2.06","still_hired":"false","avg_worked_seconds":"342855721","job_positions":"Purchase Manager","is_rehired":["false","false"],"salary_change":["-6.84","8.42","-7.26"]} +{ "index": {}} +{"birth_date":"1952-12-24T00:00:00Z","emp_no":"10020","first_name":"Mayuko","gender":"M","hire_date":"1991-01-26T00:00:00Z","last_name":"Warwick","salary":"40031","height":"1.41","still_hired":"false","avg_worked_seconds":"373309605","job_positions":"Tech Lead","is_rehired":["true","true","false"],"salary_change":"-5.81"} +{ "index": {}} +{"birth_date":"1960-02-20T00:00:00Z","emp_no":"10021","first_name":"Ramzi","gender":"M","hire_date":"1988-02-10T00:00:00Z","last_name":"Erde","salary":"60408","height":"1.47","still_hired":"false","avg_worked_seconds":"287654610","job_positions":"Support Engineer","is_rehired":"true"} +{ "index": {}} +{"birth_date":"1952-07-08T00:00:00Z","emp_no":"10022","first_name":"Shahaf","gender":"M","hire_date":"1995-08-22T00:00:00Z","last_name":"Famili","salary":"48233","height":"1.82","still_hired":"false","avg_worked_seconds":"233521306","job_positions":["Reporting Analyst","Data Scientist","Python Developer","Internship"],"is_rehired":["true","false"],"salary_change":["12.09","2.85"]} +{ "index": {}} +{"birth_date":"1953-09-29T00:00:00Z","emp_no":"10023","first_name":"Bojan","gender":"F","hire_date":"1989-12-17T00:00:00Z","last_name":"Montemayor","salary":"47896","height":"1.75","still_hired":"true","avg_worked_seconds":"330870342","job_positions":["Accountant","Support Engineer","Purchase Manager"],"is_rehired":["true","true","false"],"salary_change":["14.63","0.80"]} +{ "index": {}} +{"birth_date":"1958-09-05T00:00:00Z","emp_no":"10024","first_name":"Suzette","gender":"F","hire_date":"1997-05-19T00:00:00Z","last_name":"Pettey","salary":"64675","height":"2.08","still_hired":"true","avg_worked_seconds":"367717671","job_positions":"Junior Developer","is_rehired":["true","true","true","true"]} +{ "index": {}} +{"birth_date":"1958-10-31T00:00:00Z","emp_no":"10025","first_name":"Prasadram","gender":"M","hire_date":"1987-08-17T00:00:00Z","last_name":"Heyers","salary":"47411","height":"1.87","still_hired":"false","avg_worked_seconds":"371270797","job_positions":"Accountant","is_rehired":["true","false"],"salary_change":["-4.33","-2.90","12.06","-3.46"]} +{ "index": {}} +{"birth_date":"1953-04-03T00:00:00Z","emp_no":"10026","first_name":"Yongqiao","gender":"M","hire_date":"1995-03-20T00:00:00Z","last_name":"Berztiss","salary":"28336","height":"2.10","still_hired":"true","avg_worked_seconds":"359208133","job_positions":"Reporting Analyst","is_rehired":["false","true"],"salary_change":["-7.37","10.62","11.20"]} +{ "index": {}} +{"birth_date":"1962-07-10T00:00:00Z","emp_no":"10027","first_name":"Divier","gender":"F","hire_date":"1989-07-07T00:00:00Z","last_name":"Reistad","salary":"73851","height":"1.53","still_hired":"false","avg_worked_seconds":"374037782","job_positions":"Senior Python Developer","is_rehired":"false"} +{ "index": {}} +{"birth_date":"1963-11-26T00:00:00Z","emp_no":"10028","first_name":"Domenick","gender":"M","hire_date":"1991-10-22T00:00:00Z","last_name":"Tempesti","salary":"39356","height":"2.07","still_hired":"true","avg_worked_seconds":"226435054","job_positions":["Tech Lead","Python Developer","Accountant","Internship"],"is_rehired":["true","false","false","true"]} +{ "index": {}} +{"birth_date":"1956-12-13T00:00:00Z","emp_no":"10029","first_name":"Otmar","gender":"M","hire_date":"1985-11-20T00:00:00Z","last_name":"Herbst","salary":"74999","height":"1.99","still_hired":"false","avg_worked_seconds":"257694181","job_positions":["Senior Python Developer","Data Scientist","Principal Support Engineer"],"is_rehired":"true","salary_change":["-0.32","-1.90","-8.19"]} +{ "index": {}} +{"birth_date":"1958-07-14T00:00:00Z","emp_no":"10030","gender":"M","hire_date":"1994-02-17T00:00:00Z","languages":"3","last_name":"Demeyer","salary":"67492","height":"1.92","still_hired":"false","avg_worked_seconds":"394597613","job_positions":["Tech Lead","Data Scientist","Senior Team Lead"],"is_rehired":["true","false","false"],"salary_change":"-0.40"} +{ "index": {}} +{"birth_date":"1959-01-27T00:00:00Z","emp_no":"10031","gender":"M","hire_date":"1991-09-01T00:00:00Z","languages":"4","last_name":"Joslin","salary":"37716","height":"1.68","still_hired":"false","avg_worked_seconds":"348545109","job_positions":["Architect","Senior Python Developer","Purchase Manager","Senior Team Lead"],"is_rehired":"false"} +{ "index": {}} +{"birth_date":"1960-08-09T00:00:00Z","emp_no":"10032","gender":"F","hire_date":"1990-06-20T00:00:00Z","languages":"3","last_name":"Reistad","salary":"62233","height":"2.10","still_hired":"false","avg_worked_seconds":"277622619","job_positions":["Architect","Senior Python Developer","Junior Developer","Purchase Manager"],"is_rehired":["false","false"],"salary_change":["9.32","-4.92"]} +{ "index": {}} +{"birth_date":"1956-11-14T00:00:00Z","emp_no":"10033","gender":"M","hire_date":"1987-03-18T00:00:00Z","languages":"1","last_name":"Merlo","salary":"70011","height":"1.63","still_hired":"false","avg_worked_seconds":"208374744","is_rehired":"true"} +{ "index": {}} +{"birth_date":"1962-12-29T00:00:00Z","emp_no":"10034","gender":"M","hire_date":"1988-09-21T00:00:00Z","languages":"1","last_name":"Swan","salary":"39878","height":"1.46","still_hired":"false","avg_worked_seconds":"214393176","job_positions":["Business Analyst","Data Scientist","Python Developer","Accountant"],"is_rehired":"false","salary_change":"-8.46"} +{ "index": {}} +{"birth_date":"1953-02-08T00:00:00Z","emp_no":"10035","gender":"M","hire_date":"1988-09-05T00:00:00Z","languages":"5","last_name":"Chappelet","salary":"25945","height":"1.81","still_hired":"false","avg_worked_seconds":"203838153","job_positions":["Senior Python Developer","Data Scientist"],"is_rehired":"false","salary_change":["-2.54","-6.58"]} +{ "index": {}} +{"birth_date":"1959-08-10T00:00:00Z","emp_no":"10036","gender":"M","hire_date":"1992-01-03T00:00:00Z","languages":"4","last_name":"Portugali","salary":"60781","height":"1.61","still_hired":"false","avg_worked_seconds":"305493131","job_positions":"Senior Python Developer","is_rehired":["true","false","false"]} +{ "index": {}} +{"birth_date":"1963-07-22T00:00:00Z","emp_no":"10037","gender":"M","hire_date":"1990-12-05T00:00:00Z","languages":"2","last_name":"Makrucki","salary":"37691","height":"2.00","still_hired":"true","avg_worked_seconds":"359217000","job_positions":["Senior Python Developer","Tech Lead","Accountant"],"is_rehired":"false","salary_change":"-7.08"} +{ "index": {}} +{"birth_date":"1960-07-20T00:00:00Z","emp_no":"10038","gender":"M","hire_date":"1989-09-20T00:00:00Z","languages":"4","last_name":"Lortz","salary":"35222","height":"1.53","still_hired":"true","avg_worked_seconds":"314036411","job_positions":["Senior Python Developer","Python Developer","Support Engineer"]} +{ "index": {}} +{"birth_date":"1959-10-01T00:00:00Z","emp_no":"10039","gender":"M","hire_date":"1988-01-19T00:00:00Z","languages":"2","last_name":"Brender","salary":"36051","height":"1.55","still_hired":"false","avg_worked_seconds":"243221262","job_positions":["Business Analyst","Python Developer","Principal Support Engineer"],"is_rehired":["true","true"],"salary_change":"-6.90"} +{ "index": {}} +{"emp_no":"10040","first_name":"Weiyi","gender":"F","hire_date":"1993-02-14T00:00:00Z","languages":"4","last_name":"Meriste","salary":"37112","height":"1.90","still_hired":"false","avg_worked_seconds":"244478622","job_positions":"Principal Support Engineer","is_rehired":["true","false","true","true"],"salary_change":["6.97","14.74","-8.94","1.92"]} +{ "index": {}} +{"emp_no":"10041","first_name":"Uri","gender":"F","hire_date":"1989-11-12T00:00:00Z","languages":"1","last_name":"Lenart","salary":"56415","height":"1.75","still_hired":"false","avg_worked_seconds":"287789442","job_positions":["Data Scientist","Head Human Resources","Internship","Senior Team Lead"],"salary_change":["9.21","0.05","7.29","-2.94"]} +{ "index": {}} +{"emp_no":"10042","first_name":"Magy","gender":"F","hire_date":"1993-03-21T00:00:00Z","languages":"3","last_name":"Stamatiou","salary":"30404","height":"1.44","still_hired":"true","avg_worked_seconds":"246355863","job_positions":["Architect","Business Analyst","Junior Developer","Internship"],"salary_change":["-9.28","9.42"]} +{ "index": {}} +{"emp_no":"10043","first_name":"Yishay","gender":"M","hire_date":"1990-10-20T00:00:00Z","languages":"1","last_name":"Tzvieli","salary":"34341","height":"1.52","still_hired":"true","avg_worked_seconds":"287222180","job_positions":["Data Scientist","Python Developer","Support Engineer"],"is_rehired":["false","true","true"],"salary_change":["-5.17","4.62","7.42"]} +{ "index": {}} +{"emp_no":"10044","first_name":"Mingsen","gender":"F","hire_date":"1994-05-21T00:00:00Z","languages":"1","last_name":"Casley","salary":"39728","height":"2.06","still_hired":"false","avg_worked_seconds":"387408356","job_positions":["Tech Lead","Principal Support Engineer","Accountant","Support Engineer"],"is_rehired":["true","true"],"salary_change":"8.09"} +{ "index": {}} +{"emp_no":"10045","first_name":"Moss","gender":"M","hire_date":"1989-09-02T00:00:00Z","languages":"3","last_name":"Shanbhogue","salary":"74970","height":"1.70","still_hired":"false","avg_worked_seconds":"371418933","job_positions":["Principal Support Engineer","Junior Developer","Accountant","Purchase Manager"],"is_rehired":["true","false"]} +{ "index": {}} +{"emp_no":"10046","first_name":"Lucien","gender":"M","hire_date":"1992-06-20T00:00:00Z","languages":"4","last_name":"Rosenbaum","salary":"50064","height":"1.52","still_hired":"true","avg_worked_seconds":"302353405","job_positions":["Principal Support Engineer","Junior Developer","Head Human Resources","Internship"],"is_rehired":["true","true","false","true"],"salary_change":"2.39"} +{ "index": {}} +{"emp_no":"10047","first_name":"Zvonko","gender":"M","hire_date":"1989-03-31T00:00:00Z","languages":"4","last_name":"Nyanchama","salary":"42716","height":"1.52","still_hired":"true","avg_worked_seconds":"306369346","job_positions":["Architect","Data Scientist","Principal Support Engineer","Senior Team Lead"],"is_rehired":"true","salary_change":["-6.36","12.12"]} +{ "index": {}} +{"emp_no":"10048","first_name":"Florian","gender":"M","hire_date":"1985-02-24T00:00:00Z","languages":"3","last_name":"Syrotiuk","salary":"26436","height":"2.00","still_hired":"false","avg_worked_seconds":"248451647","job_positions":"Internship","is_rehired":["true","true"]} +{ "index": {}} +{"emp_no":"10049","first_name":"Basil","gender":"F","hire_date":"1992-05-04T00:00:00Z","languages":"5","last_name":"Tramer","salary":"37853","height":"1.52","still_hired":"true","avg_worked_seconds":"320725709","job_positions":["Senior Python Developer","Business Analyst"],"salary_change":"-1.05"} +{ "index": {}} +{"birth_date":"1958-05-21T00:00:00Z","emp_no":"10050","first_name":"Yinghua","gender":"M","hire_date":"1990-12-25T00:00:00Z","languages":"2","last_name":"Dredge","salary":"43026","height":"1.96","still_hired":"true","avg_worked_seconds":"242731798","job_positions":["Reporting Analyst","Junior Developer","Accountant","Support Engineer"],"is_rehired":"true","salary_change":["8.70","10.94"]} +{ "index": {}} +{"birth_date":"1953-07-28T00:00:00Z","emp_no":"10051","first_name":"Hidefumi","gender":"M","hire_date":"1992-10-15T00:00:00Z","languages":"3","last_name":"Caine","salary":"58121","height":"1.89","still_hired":"true","avg_worked_seconds":"374753122","job_positions":["Business Analyst","Accountant","Purchase Manager"]} +{ "index": {}} +{"birth_date":"1961-02-26T00:00:00Z","emp_no":"10052","first_name":"Heping","gender":"M","hire_date":"1988-05-21T00:00:00Z","languages":"1","last_name":"Nitsch","salary":"55360","height":"1.79","still_hired":"true","avg_worked_seconds":"299654717","is_rehired":["true","true","false"],"salary_change":["-0.55","-1.89","-4.22","-6.03"]} +{ "index": {}} +{"birth_date":"1954-09-13T00:00:00Z","emp_no":"10053","first_name":"Sanjiv","gender":"F","hire_date":"1986-02-04T00:00:00Z","languages":"3","last_name":"Zschoche","salary":"54462","height":"1.58","still_hired":"false","avg_worked_seconds":"368103911","job_positions":"Support Engineer","is_rehired":["true","false","true","false"],"salary_change":["-7.67","-3.25"]} +{ "index": {}} +{"birth_date":"1957-04-04T00:00:00Z","emp_no":"10054","first_name":"Mayumi","gender":"M","hire_date":"1995-03-13T00:00:00Z","languages":"4","last_name":"Schueller","salary":"65367","height":"1.82","still_hired":"false","avg_worked_seconds":"297441693","job_positions":"Principal Support Engineer","is_rehired":["false","false"]} +{ "index": {}} +{"birth_date":"1956-06-06T00:00:00Z","emp_no":"10055","first_name":"Georgy","gender":"M","hire_date":"1992-04-27T00:00:00Z","languages":"5","last_name":"Dredge","salary":"49281","height":"2.04","still_hired":"false","avg_worked_seconds":"283157844","job_positions":["Senior Python Developer","Head Human Resources","Internship","Support Engineer"],"is_rehired":["false","false","true"],"salary_change":["7.34","12.99","3.17"]} +{ "index": {}} +{"birth_date":"1961-09-01T00:00:00Z","emp_no":"10056","first_name":"Brendon","gender":"F","hire_date":"1990-02-01T00:00:00Z","languages":"2","last_name":"Bernini","salary":"33370","height":"1.57","still_hired":"true","avg_worked_seconds":"349086555","job_positions":"Senior Team Lead","is_rehired":["true","false","false"],"salary_change":["10.99","-5.17"]} +{ "index": {}} +{"birth_date":"1954-05-30T00:00:00Z","emp_no":"10057","first_name":"Ebbe","gender":"F","hire_date":"1992-01-15T00:00:00Z","languages":"4","last_name":"Callaway","salary":"27215","height":"1.59","still_hired":"true","avg_worked_seconds":"324356269","job_positions":["Python Developer","Head Human Resources"],"salary_change":["-6.73","-2.43","-5.27","1.03"]} +{ "index": {}} +{"birth_date":"1954-10-01T00:00:00Z","emp_no":"10058","first_name":"Berhard","gender":"M","hire_date":"1987-04-13T00:00:00Z","languages":"3","last_name":"McFarlin","salary":"38376","height":"1.83","still_hired":"false","avg_worked_seconds":"268378108","job_positions":"Principal Support Engineer","salary_change":"-4.89"} +{ "index": {}} +{"birth_date":"1953-09-19T00:00:00Z","emp_no":"10059","first_name":"Alejandro","gender":"F","hire_date":"1991-06-26T00:00:00Z","languages":"2","last_name":"McAlpine","salary":"44307","height":"1.48","still_hired":"false","avg_worked_seconds":"237368465","job_positions":["Architect","Principal Support Engineer","Purchase Manager","Senior Team Lead"],"is_rehired":"false","salary_change":["5.53","13.38","-4.69","6.27"]} +{ "index": {}} +{"birth_date":"1961-10-15T00:00:00Z","emp_no":"10060","first_name":"Breannda","gender":"M","hire_date":"1987-11-02T00:00:00Z","languages":"2","last_name":"Billingsley","salary":"29175","height":"1.42","still_hired":"true","avg_worked_seconds":"341158890","job_positions":["Business Analyst","Data Scientist","Senior Team Lead"],"is_rehired":["false","false","true","false"],"salary_change":["-1.76","-0.85"]} +{ "index": {}} +{"birth_date":"1962-10-19T00:00:00Z","emp_no":"10061","first_name":"Tse","gender":"M","hire_date":"1985-09-17T00:00:00Z","languages":"1","last_name":"Herber","salary":"49095","height":"1.45","still_hired":"false","avg_worked_seconds":"327550310","job_positions":["Purchase Manager","Senior Team Lead"],"is_rehired":["false","true"],"salary_change":["14.39","-2.58","-0.95"]} +{ "index": {}} +{"birth_date":"1961-11-02T00:00:00Z","emp_no":"10062","first_name":"Anoosh","gender":"M","hire_date":"1991-08-30T00:00:00Z","languages":"3","last_name":"Peyn","salary":"65030","height":"1.70","still_hired":"false","avg_worked_seconds":"203989706","job_positions":["Python Developer","Senior Team Lead"],"is_rehired":["false","true","true"],"salary_change":"-1.17"} +{ "index": {}} +{"birth_date":"1952-08-06T00:00:00Z","emp_no":"10063","first_name":"Gino","gender":"F","hire_date":"1989-04-08T00:00:00Z","languages":"3","last_name":"Leonhardt","salary":"52121","height":"1.78","still_hired":"true","avg_worked_seconds":"214068302","is_rehired":"true"} +{ "index": {}} +{"birth_date":"1959-04-07T00:00:00Z","emp_no":"10064","first_name":"Udi","gender":"M","hire_date":"1985-11-20T00:00:00Z","languages":"5","last_name":"Jansch","salary":"33956","height":"1.93","still_hired":"false","avg_worked_seconds":"307364077","job_positions":"Purchase Manager","is_rehired":["false","false","true","false"],"salary_change":["-8.66","-2.52"]} +{ "index": {}} +{"birth_date":"1963-04-14T00:00:00Z","emp_no":"10065","first_name":"Satosi","gender":"M","hire_date":"1988-05-18T00:00:00Z","languages":"2","last_name":"Awdeh","salary":"50249","height":"1.59","still_hired":"false","avg_worked_seconds":"372660279","job_positions":["Business Analyst","Data Scientist","Principal Support Engineer"],"is_rehired":["false","true"],"salary_change":["-1.47","14.44","-9.81"]} +{ "index": {}} +{"birth_date":"1952-11-13T00:00:00Z","emp_no":"10066","first_name":"Kwee","gender":"M","hire_date":"1986-02-26T00:00:00Z","languages":"5","last_name":"Schusler","salary":"31897","height":"2.10","still_hired":"true","avg_worked_seconds":"360906451","job_positions":["Senior Python Developer","Data Scientist","Accountant","Internship"],"is_rehired":["true","true","true"],"salary_change":"5.94"} +{ "index": {}} +{"birth_date":"1953-01-07T00:00:00Z","emp_no":"10067","first_name":"Claudi","gender":"M","hire_date":"1987-03-04T00:00:00Z","languages":"2","last_name":"Stavenow","salary":"52044","height":"1.77","still_hired":"true","avg_worked_seconds":"347664141","job_positions":["Tech Lead","Principal Support Engineer"],"is_rehired":["false","false"],"salary_change":["8.72","4.44"]} +{ "index": {}} +{"birth_date":"1962-11-26T00:00:00Z","emp_no":"10068","first_name":"Charlene","gender":"M","hire_date":"1987-08-07T00:00:00Z","languages":"3","last_name":"Brattka","salary":"28941","height":"1.58","still_hired":"true","avg_worked_seconds":"233999584","job_positions":"Architect","is_rehired":"true","salary_change":["3.43","-5.61","-5.29"]} +{ "index": {}} +{"birth_date":"1960-09-06T00:00:00Z","emp_no":"10069","first_name":"Margareta","gender":"F","hire_date":"1989-11-05T00:00:00Z","languages":"5","last_name":"Bierman","salary":"41933","height":"1.77","still_hired":"true","avg_worked_seconds":"366512352","job_positions":["Business Analyst","Junior Developer","Purchase Manager","Support Engineer"],"is_rehired":"false","salary_change":["-3.34","-6.33","6.23","-0.31"]} +{ "index": {}} +{"birth_date":"1955-08-20T00:00:00Z","emp_no":"10070","first_name":"Reuven","gender":"M","hire_date":"1985-10-14T00:00:00Z","languages":"3","last_name":"Garigliano","salary":"54329","height":"1.77","still_hired":"true","avg_worked_seconds":"347188604","is_rehired":["true","true","true"],"salary_change":"-5.90"} +{ "index": {}} +{"birth_date":"1958-01-21T00:00:00Z","emp_no":"10071","first_name":"Hisao","gender":"M","hire_date":"1987-10-01T00:00:00Z","languages":"2","last_name":"Lipner","salary":"40612","height":"2.07","still_hired":"false","avg_worked_seconds":"306671693","job_positions":["Business Analyst","Reporting Analyst","Senior Team Lead"],"is_rehired":["false","false","false"],"salary_change":"-2.69"} +{ "index": {}} +{"birth_date":"1952-05-15T00:00:00Z","emp_no":"10072","first_name":"Hironoby","gender":"F","hire_date":"1988-07-21T00:00:00Z","languages":"5","last_name":"Sidou","salary":"54518","height":"1.82","still_hired":"true","avg_worked_seconds":"209506065","job_positions":["Architect","Tech Lead","Python Developer","Senior Team Lead"],"is_rehired":["false","false","true","false"],"salary_change":["11.21","-2.30","2.22","-5.44"]} +{ "index": {}} +{"birth_date":"1954-02-23T00:00:00Z","emp_no":"10073","first_name":"Shir","gender":"M","hire_date":"1991-12-01T00:00:00Z","languages":"4","last_name":"McClurg","salary":"32568","height":"1.66","still_hired":"false","avg_worked_seconds":"314930367","job_positions":["Principal Support Engineer","Python Developer","Junior Developer","Purchase Manager"],"is_rehired":["true","false"],"salary_change":"-5.67"} +{ "index": {}} +{"birth_date":"1955-08-28T00:00:00Z","emp_no":"10074","first_name":"Mokhtar","gender":"F","hire_date":"1990-08-13T00:00:00Z","languages":"5","last_name":"Bernatsky","salary":"38992","height":"1.64","still_hired":"true","avg_worked_seconds":"382397583","job_positions":["Senior Python Developer","Python Developer"],"is_rehired":["true","false","false","true"],"salary_change":["6.70","1.98","-5.64","2.96"]} +{ "index": {}} +{"birth_date":"1960-03-09T00:00:00Z","emp_no":"10075","first_name":"Gao","gender":"F","hire_date":"1987-03-19T00:00:00Z","languages":"5","last_name":"Dolinsky","salary":"51956","height":"1.94","still_hired":"false","avg_worked_seconds":"370238919","job_positions":"Purchase Manager","is_rehired":"true","salary_change":["9.63","-3.29","8.42"]} +{ "index": {}} +{"birth_date":"1952-06-13T00:00:00Z","emp_no":"10076","first_name":"Erez","gender":"F","hire_date":"1985-07-09T00:00:00Z","languages":"3","last_name":"Ritzmann","salary":"62405","height":"1.83","still_hired":"false","avg_worked_seconds":"376240317","job_positions":["Architect","Senior Python Developer"],"is_rehired":"false","salary_change":["-6.90","-1.30","8.75"]} +{ "index": {}} +{"birth_date":"1964-04-18T00:00:00Z","emp_no":"10077","first_name":"Mona","gender":"M","hire_date":"1990-03-02T00:00:00Z","languages":"5","last_name":"Azuma","salary":"46595","height":"1.68","still_hired":"false","avg_worked_seconds":"351960222","job_positions":"Internship","salary_change":"-0.01"} +{ "index": {}} +{"birth_date":"1959-12-25T00:00:00Z","emp_no":"10078","first_name":"Danel","gender":"F","hire_date":"1987-05-26T00:00:00Z","languages":"2","last_name":"Mondadori","salary":"69904","height":"1.81","still_hired":"true","avg_worked_seconds":"377116038","job_positions":["Architect","Principal Support Engineer","Internship"],"is_rehired":"true","salary_change":["-7.88","9.98","12.52"]} +{ "index": {}} +{"birth_date":"1961-10-05T00:00:00Z","emp_no":"10079","first_name":"Kshitij","gender":"F","hire_date":"1986-03-27T00:00:00Z","languages":"2","last_name":"Gils","salary":"32263","height":"1.59","still_hired":"false","avg_worked_seconds":"320953330","is_rehired":"false","salary_change":"7.58"} +{ "index": {}} +{"birth_date":"1957-12-03T00:00:00Z","emp_no":"10080","first_name":"Premal","gender":"M","hire_date":"1985-11-19T00:00:00Z","languages":"5","last_name":"Baek","salary":"52833","height":"1.80","still_hired":"false","avg_worked_seconds":"239266137","job_positions":"Senior Python Developer","salary_change":["-4.35","7.36","5.56"]} +{ "index": {}} +{"birth_date":"1960-12-17T00:00:00Z","emp_no":"10081","first_name":"Zhongwei","gender":"M","hire_date":"1986-10-30T00:00:00Z","languages":"2","last_name":"Rosen","salary":"50128","height":"1.44","still_hired":"true","avg_worked_seconds":"321375511","job_positions":["Accountant","Internship"],"is_rehired":["false","false","false"]} +{ "index": {}} +{"birth_date":"1963-09-09T00:00:00Z","emp_no":"10082","first_name":"Parviz","gender":"M","hire_date":"1990-01-03T00:00:00Z","languages":"4","last_name":"Lortz","salary":"49818","height":"1.61","still_hired":"false","avg_worked_seconds":"232522994","job_positions":"Principal Support Engineer","is_rehired":"false","salary_change":["1.19","-3.39"]} +{ "index": {}} +{"birth_date":"1959-07-23T00:00:00Z","emp_no":"10083","first_name":"Vishv","gender":"M","hire_date":"1987-03-31T00:00:00Z","languages":"1","last_name":"Zockler","salary":"39110","height":"1.42","still_hired":"false","avg_worked_seconds":"331236443","job_positions":"Head Human Resources"} +{ "index": {}} +{"birth_date":"1960-05-25T00:00:00Z","emp_no":"10084","first_name":"Tuval","gender":"M","hire_date":"1995-12-15T00:00:00Z","languages":"1","last_name":"Kalloufi","salary":"28035","height":"1.51","still_hired":"true","avg_worked_seconds":"359067056","job_positions":"Principal Support Engineer","is_rehired":"false"} +{ "index": {}} +{"birth_date":"1962-11-07T00:00:00Z","emp_no":"10085","first_name":"Kenroku","gender":"M","hire_date":"1994-04-09T00:00:00Z","languages":"5","last_name":"Malabarba","salary":"35742","height":"2.01","still_hired":"true","avg_worked_seconds":"353404008","job_positions":["Senior Python Developer","Business Analyst","Tech Lead","Accountant"],"salary_change":["11.67","6.75","8.40"]} +{ "index": {}} +{"birth_date":"1962-11-19T00:00:00Z","emp_no":"10086","first_name":"Somnath","gender":"M","hire_date":"1990-02-16T00:00:00Z","languages":"1","last_name":"Foote","salary":"68547","height":"1.74","still_hired":"true","avg_worked_seconds":"328580163","job_positions":"Senior Python Developer","is_rehired":["false","true"],"salary_change":"13.61"} +{ "index": {}} +{"birth_date":"1959-07-23T00:00:00Z","emp_no":"10087","first_name":"Xinglin","gender":"F","hire_date":"1986-09-08T00:00:00Z","languages":"5","last_name":"Eugenio","salary":"32272","height":"1.74","still_hired":"true","avg_worked_seconds":"305782871","job_positions":["Junior Developer","Internship"],"is_rehired":["false","false"],"salary_change":"-2.05"} +{ "index": {}} +{"birth_date":"1954-02-25T00:00:00Z","emp_no":"10088","first_name":"Jungsoon","gender":"F","hire_date":"1988-09-02T00:00:00Z","languages":"5","last_name":"Syrzycki","salary":"39638","height":"1.91","still_hired":"false","avg_worked_seconds":"330714423","job_positions":["Reporting Analyst","Business Analyst","Tech Lead"],"is_rehired":"true"} +{ "index": {}} +{"birth_date":"1963-03-21T00:00:00Z","emp_no":"10089","first_name":"Sudharsan","gender":"F","hire_date":"1986-08-12T00:00:00Z","languages":"4","last_name":"Flasterstein","salary":"43602","height":"1.57","still_hired":"true","avg_worked_seconds":"232951673","job_positions":["Junior Developer","Accountant"],"is_rehired":["true","false","false","false"]} +{ "index": {}} +{"birth_date":"1961-05-30T00:00:00Z","emp_no":"10090","first_name":"Kendra","gender":"M","hire_date":"1986-03-14T00:00:00Z","languages":"2","last_name":"Hofting","salary":"44956","height":"2.03","still_hired":"true","avg_worked_seconds":"212460105","is_rehired":["false","false","false","true"],"salary_change":["7.15","-1.85","3.60"]} +{ "index": {}} +{"birth_date":"1955-10-04T00:00:00Z","emp_no":"10091","first_name":"Amabile","gender":"M","hire_date":"1992-11-18T00:00:00Z","languages":"3","last_name":"Gomatam","salary":"38645","height":"2.09","still_hired":"true","avg_worked_seconds":"242582807","job_positions":["Reporting Analyst","Python Developer"],"is_rehired":["true","true","false","false"],"salary_change":["-9.23","7.50","5.85","5.19"]} +{ "index": {}} +{"birth_date":"1964-10-18T00:00:00Z","emp_no":"10092","first_name":"Valdiodio","gender":"F","hire_date":"1989-09-22T00:00:00Z","languages":"1","last_name":"Niizuma","salary":"25976","height":"1.75","still_hired":"false","avg_worked_seconds":"313407352","job_positions":["Junior Developer","Accountant"],"is_rehired":["false","false","true","true"],"salary_change":["8.78","0.39","-6.77","8.30"]} +{ "index": {}} +{"birth_date":"1964-06-11T00:00:00Z","emp_no":"10093","first_name":"Sailaja","gender":"M","hire_date":"1996-11-05T00:00:00Z","languages":"3","last_name":"Desikan","salary":"45656","height":"1.69","still_hired":"false","avg_worked_seconds":"315904921","job_positions":["Reporting Analyst","Tech Lead","Principal Support Engineer","Purchase Manager"],"salary_change":"-0.88"} +{ "index": {}} +{"birth_date":"1957-05-25T00:00:00Z","emp_no":"10094","first_name":"Arumugam","gender":"F","hire_date":"1987-04-18T00:00:00Z","languages":"5","last_name":"Ossenbruggen","salary":"66817","height":"2.10","still_hired":"false","avg_worked_seconds":"332920135","job_positions":["Senior Python Developer","Principal Support Engineer","Accountant"],"is_rehired":["true","false","true"],"salary_change":["2.22","7.92"]} +{ "index": {}} +{"birth_date":"1965-01-03T00:00:00Z","emp_no":"10095","first_name":"Hilari","gender":"M","hire_date":"1986-07-15T00:00:00Z","languages":"4","last_name":"Morton","salary":"37702","height":"1.55","still_hired":"false","avg_worked_seconds":"321850475","is_rehired":["true","true","false","false"],"salary_change":["-3.93","-6.66"]} +{ "index": {}} +{"birth_date":"1954-09-16T00:00:00Z","emp_no":"10096","first_name":"Jayson","gender":"M","hire_date":"1990-01-14T00:00:00Z","languages":"4","last_name":"Mandell","salary":"43889","height":"1.94","still_hired":"false","avg_worked_seconds":"204381503","job_positions":["Architect","Reporting Analyst"],"is_rehired":["false","false","false"]} +{ "index": {}} +{"birth_date":"1952-02-27T00:00:00Z","emp_no":"10097","first_name":"Remzi","gender":"M","hire_date":"1990-09-15T00:00:00Z","languages":"3","last_name":"Waschkowski","salary":"71165","height":"1.53","still_hired":"false","avg_worked_seconds":"206258084","job_positions":["Reporting Analyst","Tech Lead"],"is_rehired":["true","false"],"salary_change":"-1.12"} +{ "index": {}} +{"birth_date":"1961-09-23T00:00:00Z","emp_no":"10098","first_name":"Sreekrishna","gender":"F","hire_date":"1985-05-13T00:00:00Z","languages":"4","last_name":"Servieres","salary":"44817","height":"2.00","still_hired":"false","avg_worked_seconds":"272392146","job_positions":["Architect","Internship","Senior Team Lead"],"is_rehired":"false","salary_change":["-2.83","8.31","4.38"]} +{ "index": {}} +{"birth_date":"1956-05-25T00:00:00Z","emp_no":"10099","first_name":"Valter","gender":"F","hire_date":"1988-10-18T00:00:00Z","languages":"2","last_name":"Sullins","salary":"73578","height":"1.81","still_hired":"true","avg_worked_seconds":"377713748","is_rehired":["true","true"],"salary_change":["10.71","14.26","-8.78","-3.98"]} +{ "index": {}} +{"birth_date":"1953-04-21T00:00:00Z","emp_no":"10100","first_name":"Hironobu","gender":"F","hire_date":"1987-09-21T00:00:00Z","languages":"4","last_name":"Haraldson","salary":"68431","height":"1.77","still_hired":"true","avg_worked_seconds":"223910853","job_positions":"Purchase Manager","is_rehired":["false","true","true","false"],"salary_change":["13.97","-7.49"]} +``` + +:::: + + + +## Convert the dataset [convert-dataset-pandas-dataframe] + +Use the ES|QL CSV import to convert the `employees` dataset to a Pandas dataframe object. + +```python +from io import StringIO +from elasticsearch import Elasticsearch +import pandas as pd +client = Elasticsearch( + "https://[host].elastic-cloud.com", + api_key="...", +) +response = client.esql.query( + query="FROM employees | LIMIT 500", + format="csv", +) +df = pd.read_csv(StringIO(response.body)) +print(df) +``` + +Even though the dataset contains only 100 records, a LIMIT of 500 is specified to suppress ES|QL warnings about potentially missing records. This prints the following dataframe: + +```python + avg_worked_seconds ... salary_change.long still_hired +0 268728049 ... 1 True +1 328922887 ... [-7, 11] True +2 200296405 ... [12, 14] False +3 311267831 ... [0, 1, 3, 13] True +4 244294991 ... [-2, 13] True +.. ... ... ... ... +95 204381503 ... NaN False +96 206258084 ... -1 False +97 272392146 ... [-2, 4, 8] False +98 377713748 ... [-8, -3, 10, 14] True +99 223910853 ... [-7, 13] True +``` + +You can now analyze the data with Pandas or you can also continue transforming the data using ES|QL. + + +## Analyze the data with Pandas [analyze-data] + +In the next example, the [STATS …​ BY](elasticsearch://docs/reference/query-languages/esql/esql-commands.md#esql-stats-by) command is utilized to count how many employees are speaking a given language. The results are sorted with the `languages` column using [SORT](elasticsearch://docs/reference/query-languages/esql/esql-commands.md#esql-sort): + +```python +response = client.esql.query( + query=""" + FROM employees + | STATS count = COUNT(emp_no) BY languages + | SORT languages + | LIMIT 500 + """, + format="csv", +) +df = pd.read_csv( + StringIO(response.body), + dtype={"count": "Int64", "languages": "Int64"}, +) +print(df) +``` + +Note that the `dtype` parameter of `pd.read_csv()` is useful when the type inferred by Pandas is not enough. The code prints the following response: + +```python + count languages +0 15 1 +1 19 2 +2 17 3 +3 18 4 +4 21 5 +``` + + +## Pass parameters to a query with ES|QL [passing-params] + +Use the [built-in parameters support of the ES|QL REST API](docs-content://explore-analyze/query-filter/languages/esql-rest.md#esql-rest-params) to pass parameters to a query: + +```python +response = client.esql.query( + query=""" + FROM employees + | STATS count = COUNT(emp_no) BY languages + | WHERE languages >= (?) + | SORT languages + | LIMIT 500 + """, + format="csv", + params=[3], +) +df = pd.read_csv( + StringIO(response.body), + dtype={"count": "Int64", "languages": "Int64"}, +) +print(df) +``` + +The code above outputs the following: + +```python + count languages +0 17 3 +1 18 4 +2 21 5 +``` + +If you want to learn more about ES|QL, refer to the [ES|QL documentation](docs-content://explore-analyze/query-filter/languages/esql.md). You can also check out this other [Python example using Boston Celtics data](https://github.com/elastic/elasticsearch-labs/blob/main/supporting-blog-content/Boston-Celtics-Demo/celtics-esql-demo.ipynb). + diff --git a/docs/reference/examples.md b/docs/reference/examples.md new file mode 100644 index 000000000..632e3a103 --- /dev/null +++ b/docs/reference/examples.md @@ -0,0 +1,199 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/examples.html +--- + +# Examples [examples] + +Below you can find examples of how to use the most frequently called APIs with the Python client. + +* [Indexing a document](#ex-index) +* [Getting a document](#ex-get) +* [Refreshing an index](#ex-refresh) +* [Searching for a document](#ex-search) +* [Updating a document](#ex-update) +* [Deleting a document](#ex-delete) + + +## Indexing a document [ex-index] + +To index a document, you need to specify three pieces of information: `index`, `id`, and a `document`: + +```py +from datetime import datetime +from elasticsearch import Elasticsearch +client = Elasticsearch('https://localhost:9200') + +doc = { + 'author': 'author_name', + 'text': 'Interesting content...', + 'timestamp': datetime.now(), +} +resp = client.index(index="test-index", id=1, document=doc) +print(resp['result']) +``` + + +## Getting a document [ex-get] + +To get a document, you need to specify its `index` and `id`: + +```py +resp = client.get(index="test-index", id=1) +print(resp['_source']) +``` + + +## Refreshing an index [ex-refresh] + +You can perform the refresh operation on an index: + +```py +client.indices.refresh(index="test-index") +``` + + +## Searching for a document [ex-search] + +The `search()` method returns results that are matching a query: + +```py +resp = client.search(index="test-index", query={"match_all": {}}) +print("Got %d Hits:" % resp['hits']['total']['value']) +for hit in resp['hits']['hits']: + print("%(timestamp)s %(author)s: %(text)s" % hit["_source"]) +``` + + +## Updating a document [ex-update] + +To update a document, you need to specify three pieces of information: `index`, `id`, and a `doc`: + +```py +from datetime import datetime +from elasticsearch import Elasticsearch + +client = Elasticsearch('https://localhost:9200') + +doc = { + 'author': 'author_name', + 'text': 'Interesting modified content...', + 'timestamp': datetime.now(), +} +resp = client.update(index="test-index", id=1, doc=doc) +print(resp['result']) +``` + + +## Deleting a document [ex-delete] + +You can delete a document by specifying its `index`, and `id` in the `delete()` method: + +```py +client.delete(index="test-index", id=1) +``` + + +## Interactive examples [ex-interactive] + +The [elasticsearch-labs](https://github.com/elastic/elasticsearch-labs) repo contains interactive and executable [Python notebooks](https://github.com/elastic/elasticsearch-labs/tree/main/notebooks), sample apps, and resources for testing out Elasticsearch, using the Python client. These examples are mainly focused on vector search, hybrid search and generative AI use cases, but you’ll also find examples of basic operations like creating index mappings and performing lexical search. + + +### Search notebooks [_search_notebooks] + +The [Search](https://github.com/elastic/elasticsearch-labs/tree/main/notebooks/search) folder is a good place to start if you’re new to Elasticsearch. This folder contains a number of notebooks that demonstrate the fundamentals of Elasticsearch, like indexing vectors, running lexical, semantic and *hybrid* searches, and more. + +The following notebooks are available: + +* [Quick start](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/00-quick-start.ipynb) +* [Keyword, querying, filtering](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/01-keyword-querying-filtering.ipynb) +* [Hybrid search](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/02-hybrid-search.ipynb) +* [Semantic search with ELSER](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/03-ELSER.ipynb) +* [Multilingual semantic search](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/04-multilingual.ipynb) +* [Query rules](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/05-query-rules.ipynb) +* [Synonyms API quick start](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/06-synonyms-api.ipynb) + +Here’s a brief overview of what you’ll learn in each notebook. + + +#### Quick start [_quick_start] + +In the [00-quick-start.ipynb](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/00-quick-start.ipynb) notebook you’ll learn how to: + +* Use the Elasticsearch Python client for various operations. +* Create and define an index for a sample dataset with `dense_vector` fields. +* Transform book titles into embeddings using [Sentence Transformers](https://www.sbert.net) and index them into Elasticsearch. +* Perform k-nearest neighbors (knn) semantic searches. +* Integrate traditional text-based search with semantic search, for a hybrid search system. +* Use reciprocal rank fusion (RRF) to intelligently combine search results from different retrieval systems. + + +#### Keyword, querying, filtering [_keyword_querying_filtering] + +In the [01-keyword-querying-filtering.ipynb](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/01-keyword-querying-filtering.ipynb) notebook, you’ll learn how to: + +* Use [query and filter contexts](docs-content://explore-analyze/query-filter/languages/querydsl.md) to search and filter documents in Elasticsearch. +* Execute full-text searches with `match` and `multi-match` queries. +* Query and filter documents based on `text`, `number`, `date`, or `boolean` values. +* Run multi-field searches using the `multi-match` query. +* Prioritize specific fields in the `multi-match` query for tailored results. + + +#### Hybrid search [_hybrid_search] + +In the [02-hybrid-search.ipynb](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/02-hybrid-search.ipynb) notebook, you’ll learn how to: + +* Combine results of traditional text-based search with semantic search, for a hybrid search system. +* Transform fields in the sample dataset into embeddings using the Sentence Transformer model and index them into Elasticsearch. +* Use the [RRF API](elasticsearch://docs/reference/elasticsearch/rest-apis/reciprocal-rank-fusion.md#rrf-api) to combine the results of a `match` query and a `kNN` semantic search. +* Walk through a super simple toy example that demonstrates, step by step, how RRF ranking works. + + +#### Semantic search with ELSER [_semantic_search_with_elser] + +In the [03-ELSER.ipynb](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/03-ELSER.ipynb) notebook, you’ll learn how to: + +* Use the Elastic Learned Sparse Encoder (ELSER) for text expansion-powered semantic search, out of the box — without training, fine-tuning, or embeddings generation. +* Download and deploy the ELSER model in your Elastic environment. +* Create an Elasticsearch index named search-movies with specific mappings and index a dataset of movie descriptions. +* Create an ingest pipeline containing an inference processor for ELSER model execution. +* Reindex the data from search-movies into another index, elser-movies, using the ELSER pipeline for text expansion. +* Observe the results of running the documents through the model by inspecting the additional terms it adds to documents, which enhance searchability. +* Perform simple keyword searches on the elser-movies index to assess the impact of ELSER’s text expansion. +* Execute ELSER-powered semantic searches using the `text_expansion` query. + + +#### Multilingual semantic search [_multilingual_semantic_search] + +In the [04-multilingual.ipynb](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/04-multilingual.ipynb) notebook, you’ll learn how to: + +* Use a multilingual embedding model for semantic search across languages. +* Transform fields in the sample dataset into embeddings using the Sentence Transformer model and index them into Elasticsearch. +* Use filtering with a `kNN` semantic search. +* Walk through a super simple toy example that demonstrates, step by step, how multilingual search works across languages, and within non-English languages. + + +#### Query rules [_query_rules] + +In the [05-query-rules.ipynb](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/05-query-rules.ipynb) notebook, you’ll learn how to: + +* Use the query rules management APIs to create and edit promotional rules based on contextual queries. +* Apply these query rules by using the `rule_query` in Query DSL. + + +#### Synonyms API quick start [_synonyms_api_quick_start] + +In the [06-synonyms-api.ipynb](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/search/06-synonyms-api.ipynb) notebook, you’ll learn how to: + +* Use the synonyms management API to create a synonyms set to enhance your search recall. +* Configure an index to use search-time synonyms. +* Update synonyms in real time. +* Run queries that are enhanced by synonyms. + + +### Other notebooks [_other_notebooks] + +* [Generative AI](https://github.com/elastic/elasticsearch-labs/tree/main/notebooks/generative-ai). Notebooks that demonstrate various use cases for Elasticsearch as the retrieval engine and vector store for LLM-powered applications. +* [Integrations](https://github.com/elastic/elasticsearch-labs/blob/main/notebooks/integrations). Notebooks that demonstrate how to integrate popular services and projects with Elasticsearch, including OpenAI, Hugging Face, and LlamaIndex +* [Langchain](https://github.com/elastic/elasticsearch-labs/tree/main/notebooks/langchain). Notebooks that demonstrate how to integrate Elastic with LangChain, a framework for developing applications powered by language models. + diff --git a/docs/reference/getting-started.md b/docs/reference/getting-started.md new file mode 100644 index 000000000..df413e836 --- /dev/null +++ b/docs/reference/getting-started.md @@ -0,0 +1,180 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/getting-started-python.html + - https://www.elastic.co/guide/en/serverless/current/elasticsearch-python-client-getting-started.html +--- + +# Getting started [getting-started-python] + +This page guides you through the installation process of the Python client, shows you how to instantiate the client, and how to perform basic Elasticsearch operations with it. + + +### Requirements [_requirements] + +* [Python](https://www.python.org/) 3.8 or newer +* [`pip`](https://pip.pypa.io/en/stable/), installed by default alongside Python + + +### Installation [_installation] + +To install the latest version of the client, run the following command: + +```shell +python -m pip install elasticsearch +``` + +Refer to the [*Installation*](/reference/installation.md) page to learn more. + + +### Connecting [_connecting] + +You can connect to the Elastic Cloud using an API key and the Elasticsearch endpoint. + +```py +from elasticsearch import Elasticsearch + +client = Elasticsearch( + "https://...", # Elasticsearch endpoint + api_key="api_key", +) +``` + +Your Elasticsearch endpoint can be found on the **My deployment** page of your deployment: + +:::{image} ../images/es-endpoint.jpg +:alt: Finding Elasticsearch endpoint +::: + +You can generate an API key on the **Management** page under Security. + +:::{image} ../images/create-api-key.png +:alt: Create API key +::: + +For other connection options, refer to the [*Connecting*](/reference/connecting.md) section. + + +### Operations [_operations] + +Time to use Elasticsearch! This section walks you through the basic, and most important, operations of Elasticsearch. For more operations and more advanced examples, refer to the [*Examples*](/reference/examples.md) page. + + +#### Creating an index [_creating_an_index] + +This is how you create the `my_index` index: + +```py +client.indices.create(index="my_index") +``` + +Optionally, you can first define the expected types of your features with a custom mapping. + +```py +mappings = { + "properties": { + "foo": {"type": "text"}, + "bar": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256, + } + }, + }, + } +} + +client.indices.create(index="my_index", mappings=mappings) +``` + + +#### Indexing documents [_indexing_documents] + +This indexes a document with the index API: + +```py +client.index( + index="my_index", + id="my_document_id", + document={ + "foo": "foo", + "bar": "bar", + } +) +``` + +You can also index multiple documents at once with the bulk helper function: + +```py +from elasticsearch import helpers + +def generate_docs(): + for i in range(10): + yield { + "_index": "my_index", + "foo": f"foo {i}", + "bar": "bar", + } + +helpers.bulk(client, generate_docs()) +``` + +These helpers are the recommended way to perform bulk ingestion. While it is also possible to perform bulk ingestion using `client.bulk` directly, the helpers handle retries, ingesting chunk by chunk and more. See the [*Client helpers*](/reference/client-helpers.md) page for more details. + + +#### Getting documents [_getting_documents] + +You can get documents by using the following code: + +```py +client.get(index="my_index", id="my_document_id") +``` + + +#### Searching documents [_searching_documents] + +This is how you can create a single match query with the Python client: + +```py +client.search(index="my_index", query={ + "match": { + "foo": "foo" + } +}) +``` + + +#### Updating documents [_updating_documents] + +This is how you can update a document, for example to add a new field: + +```py +client.update( + index="my_index", + id="my_document_id", + doc={ + "foo": "bar", + "new_field": "new value", + } +) +``` + + +#### Deleting documents [_deleting_documents] + +```py +client.delete(index="my_index", id="my_document_id") +``` + + +#### Deleting an index [_deleting_an_index] + +```py +client.indices.delete(index="my_index") +``` + + +## Further reading [_further_reading] + +* Use [*Client helpers*](/reference/client-helpers.md) for a more comfortable experience with the APIs. diff --git a/docs/reference/index.md b/docs/reference/index.md new file mode 100644 index 000000000..774e7d112 --- /dev/null +++ b/docs/reference/index.md @@ -0,0 +1,69 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/index.html + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/overview.html +--- + +# Python [overview] + +This is the official low-level Python client for {{es}}. Its goal is to provide common ground for all {{es}}-related code in Python. For this reason, the client is designed to be unopinionated and extendable. An API reference is available on [Read the Docs](https://elasticsearch-py.readthedocs.io). + + +## Compatibility [_compatibility] + +Language clients are forward compatible; meaning that the clients support communicating with greater or equal minor versions of {{es}} without breaking. It does not mean that the clients automatically support new features of newer {{es}} versions; it is only possible after a release of a new client version. For example, a 8.12 client version won’t automatically support the new features of the 8.13 version of {{es}}, the 8.13 client version is required for that. {{es}} language clients are only backwards compatible with default distributions and without guarantees made. + +| Elasticsearch version | elasticsearch-py branch | Supported | +| --- | --- | --- | +| main | main | | +| 8.x | 8.x | 8.x | +| 7.x | 7.x | 7.17 | + +If you have a need to have multiple versions installed at the same time older versions are also released as `elasticsearch7` and `elasticsearch8`. + + +## Example use [_example_use] + +Simple use-case: + +```python +>>> from datetime import datetime +>>> from elasticsearch import Elasticsearch + +# Connect to 'http://localhost:9200' +>>> client = Elasticsearch("http://localhost:9200") + +# Datetimes will be serialized: +>>> client.index(index="my-index-000001", id=42, document={"any": "data", "timestamp": datetime.now()}) +{'_id': '42', '_index': 'my-index-000001', '_type': 'test-type', '_version': 1, 'ok': True} + +# ...but not deserialized +>>> client.get(index="my-index-000001", id=42)['_source'] +{'any': 'data', 'timestamp': '2013-05-12T19:45:31.804229'} +``` + +::::{tip} +For an elaborate example of how to ingest data into Elastic Cloud, refer to [this page](docs-content://manage-data/ingest/ingesting-data-from-applications/ingest-data-with-python-on-elasticsearch-service.md). +:::: + + + +## Features [_features] + +The client’s features include: + +* Translating basic Python data types to and from JSON +* Configurable automatic discovery of cluster nodes +* Persistent connections +* Load balancing (with pluggable selection strategy) across all available nodes +* Node timeouts on transient errors +* Thread safety +* Pluggable architecture + +The client also contains a convenient set of [helpers](https://elasticsearch-py.readthedocs.org/en/master/helpers.md) for some of the more engaging tasks like bulk indexing and reindexing. + + +## Elasticsearch Python DSL [_elasticsearch_python_dsl] + +For a higher level access with more limited scope, have a look at the DSL module, which provides a more convenient and idiomatic way to write and manipulate queries. + diff --git a/docs/reference/installation.md b/docs/reference/installation.md new file mode 100644 index 000000000..20975821a --- /dev/null +++ b/docs/reference/installation.md @@ -0,0 +1,22 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/installation.html +--- + +# Installation [installation] + +[Download the latest version of Elasticsearch](https://www.elastic.co/downloads/elasticsearch) or [sign-up](https://cloud.elastic.co/registration?elektra=en-ess-sign-up-page) for a free trial of Elastic Cloud. + +The Python client for {{es}} can be installed with pip: + +```sh +$ python -m pip install elasticsearch +``` + +If your application uses async/await in Python you can install with the `async` extra: + +```sh +$ python -m pip install elasticsearch[async] +``` + +Read more about [how to use asyncio with this project](https://elasticsearch-py.readthedocs.io/en/master/async.md). diff --git a/docs/reference/integrations.md b/docs/reference/integrations.md new file mode 100644 index 000000000..627f36aae --- /dev/null +++ b/docs/reference/integrations.md @@ -0,0 +1,62 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/integrations.html +--- + +# Integrations [integrations] + +You can find integration options and information on this page. + + +## OpenTelemetry instrumentation [opentelemetry-intro] + +The Python Elasticsearch client supports native OpenTelemetry instrumentation following the [OpenTelemetry Semantic Conventions for Elasticsearch](https://opentelemetry.io/docs/specs/semconv/database/elasticsearch/). Refer to the [Using OpenTelemetry](/reference/opentelemetry.md) page for details. + + +## ES|QL [esql-intro] + +[ES|QL](docs-content://explore-analyze/query-filter/languages/esql.md) is available through the Python Elasticsearch client. Refer to the [ES|QL and Pandas](/reference/esql-pandas.md) page to learn more about using ES|QL and Pandas together with dataframes. + + +## Transport [transport] + +The handling of connections, retries, and pooling is handled by the [Elastic Transport Python](https://github.com/elastic/elastic-transport-python) library. Documentation on the low-level classes is available on [Read the Docs](https://elastic-transport-python.readthedocs.io). + + +## Tracking requests with Opaque ID [opaque-id] + +You can enrich your requests against Elasticsearch with an identifier string, that allows you to discover this identifier in [deprecation logs](docs-content://deploy-manage/monitor/logging-configuration/update-elasticsearch-logging-levels.md#deprecation-logging), to support you with [identifying search slow log origin](elasticsearch://docs/reference/elasticsearch/index-settings/slow-log.md) or to help with [identifying running tasks](https://www.elastic.co/docs/api/doc/elasticsearch/group/endpoint-tasks). + +The opaque ID can be set via the `opaque_id` parameter via the client `.options()` method: + +```python +client = Elasticsearch(...) +client.options(opaque_id="request-id-...").search(...) +``` + + +## Type Hints [type-hints] + +Starting in `elasticsearch-py` v7.10.0 the library now ships with [type hints](https://www.python.org/dev/peps/pep-0484) and supports basic static type analysis with tools like [Mypy](http://mypy-lang.org) and [Pyright](https://github.com/microsoft/pyright). + +If we write a script that has a type error like using `request_timeout` with a `str` argument instead of `float` and then run Mypy on the script: + +```python +# script.py +from elasticsearch import Elasticsearch + +client = Elasticsearch(...) +client.options( + request_timeout="5" # type error! +).search(...) + +# $ mypy script.py +# script.py:5: error: Argument "request_timeout" to "search" of "Elasticsearch" has +# incompatible type "str"; expected "Union[int, float, None]" +# Found 1 error in 1 file (checked 1 source file) +``` + +Type hints also allow tools like your IDE to check types and provide better auto-complete functionality. + + + diff --git a/docs/reference/opentelemetry.md b/docs/reference/opentelemetry.md new file mode 100644 index 000000000..fb117d505 --- /dev/null +++ b/docs/reference/opentelemetry.md @@ -0,0 +1,80 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/opentelemetry.html +--- + +# Using OpenTelemetry [opentelemetry] + +You can use [OpenTelemetry](https://opentelemetry.io/) to monitor the performance and behavior of your {{es}} requests through the Elasticsearch Python client. The Python client comes with built-in OpenTelemetry instrumentation that emits [distributed tracing spans](docs-content://solutions/observability/apps/traces-2.md) by default. With that, applications using [manual OpenTelemetry instrumentation](https://www.elastic.co/blog/manual-instrumentation-of-python-applications-opentelemetry) or [automatic OpenTelemetry instrumentation](https://www.elastic.co/blog/auto-instrumentation-of-python-applications-opentelemetry) are enriched with additional spans that contain insightful information about the execution of the {{es}} requests. + +The native instrumentation in the Python client follows the [OpenTelemetry Semantic Conventions for {{es}}](https://opentelemetry.io/docs/specs/semconv/database/elasticsearch/). In particular, the instrumentation in the client covers the logical layer of {{es}} requests. A single span per request is created that is processed by the service through the Python client. The following image shows a trace that records the handling of two different {{es}} requests: an `info` request and a `search` request. + +:::{image} ../images/otel-waterfall-without-http.png +:alt: Distributed trace with Elasticsearch spans +:class: screenshot +::: + +Usually, OpenTelemetry auto-instrumentation modules come with instrumentation support for HTTP-level communication. In this case, in addition to the logical {{es}} client requests, spans will be captured for the physical HTTP requests emitted by the client. The following image shows a trace with both, {{es}} spans (in blue) and the corresponding HTTP-level spans (in red) after having installed the ``opentelemetry-instrumentation-urllib3`` package: + +:::{image} ../images/otel-waterfall-with-http.png +:alt: Distributed trace with Elasticsearch spans +:class: screenshot +::: + +Advanced Python client behavior such as nodes round-robin and request retries are revealed through the combination of logical {{es}} spans and the physical HTTP spans. The following example shows a `search` request in a scenario with two nodes: + +:::{image} ../images/otel-waterfall-retry.png +:alt: Distributed trace with Elasticsearch spans +:class: screenshot +::: + +The first node is unavailable and results in an HTTP error, while the retry to the second node succeeds. Both HTTP requests are subsumed by the logical {{es}} request span (in blue). + + +### Setup the OpenTelemetry instrumentation [_setup_the_opentelemetry_instrumentation] + +When using the [manual Python OpenTelemetry instrumentation](https://opentelemetry.io/docs/languages/python/instrumentation/) or the [OpenTelemetry Python agent](https://opentelemetry.io/docs/languages/python/automatic/), the Python client’s OpenTelemetry instrumentation is enabled by default and uses the global OpenTelemetry SDK with the global tracer provider. If you’re getting started with OpenTelemetry instrumentation, the following blog posts have step-by-step instructions to ingest and explore tracing data with the Elastic stack: + +* [Manual instrumentation with OpenTelemetry for Python applications](https://www.elastic.co/blog/manual-instrumentation-of-python-applications-opentelemetry) +* [Automatic instrumentation with OpenTelemetry for Python applications](https://www.elastic.co/blog/auto-instrumentation-of-python-applications-opentelemetry) + + +## Comparison with community instrumentation [_comparison_with_community_instrumentation] + +The [commmunity OpenTelemetry Elasticsearch instrumentation](https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/elasticsearch/elasticsearch.md) also instruments the client and sends OpenTelemetry traces, but was developed before the OpenTelemetry Semantic Conventions for {{es}}, so the traces attributes are inconsistent with other OpenTelemetry Elasticsearch client instrumentations. To avoid tracing the same requests twice, make sure to use only one instrumentation, either by uninstalling the opentelemetry-instrumentation-elasticsearch Python package or by [disabling the native instrumentation](#opentelemetry-config-enable). + + +### Configuring the OpenTelemetry instrumentation [_configuring_the_opentelemetry_instrumentation] + +You can configure this OpenTelemetry instrumentation through environment variables. The following configuration options are available. + + +#### Enable / Disable the OpenTelemetry instrumentation [opentelemetry-config-enable] + +With this configuration option you can enable (default) or disable the built-in OpenTelemetry instrumentation. + +**Default:** `true` + +| | | +| --- | --- | +| Environment Variable | `OTEL_PYTHON_INSTRUMENTATION_ELASTICSEARCH_ENABLED` | + + +#### Capture search request bodies [_capture_search_request_bodies] + +Per default, the built-in OpenTelemetry instrumentation does not capture request bodies due to data privacy considerations. You can use this option to enable capturing of search queries from the request bodies of {{es}} search requests in case you wish to gather this information regardless. The options are to capture the raw search query or not capture it at all. + +**Default:** `omit` + +**Valid Options:** `omit`, `raw` + +| | | +| --- | --- | +| Environment Variable | `OTEL_PYTHON_INSTRUMENTATION_ELASTICSEARCH_CAPTURE_SEARCH_QUERY` | + + +### Overhead [_overhead] + +The OpenTelemetry instrumentation (as any other monitoring approach) may come with a slight overhead on CPU, memory, and/or latency. The overhead may only occur when the instrumentation is enabled (default) and an OpenTelemetry SDK is active in the target application. When the instrumentation is disabled or no OpenTelemetry SDK is active within the target application, monitoring overhead is not expected when using the client. + +Even in cases where the instrumentation is enabled and is actively used (by an OpenTelemetry SDK), the overhead is minimal and negligible in the vast majority of cases. In edge cases where there is a noticeable overhead, the [instrumentation can be explicitly disabled](#opentelemetry-config-enable) to eliminate any potential impact on performance. diff --git a/docs/reference/toc.yml b/docs/reference/toc.yml new file mode 100644 index 000000000..8de284050 --- /dev/null +++ b/docs/reference/toc.yml @@ -0,0 +1,19 @@ +toc: + - file: index.md + - file: getting-started.md + - file: installation.md + - file: connecting.md + - file: configuration.md + - file: async.md + - file: integrations.md + children: + - file: opentelemetry.md + - file: esql-pandas.md + - file: examples.md + - file: elasticsearch-dsl.md + children: + - file: _configuration.md + - file: _tutorials.md + - file: _how_to_guides.md + - file: _examples.md + - file: client-helpers.md \ No newline at end of file diff --git a/docs/release-notes/breaking-changes.md b/docs/release-notes/breaking-changes.md new file mode 100644 index 000000000..b79d3cb96 --- /dev/null +++ b/docs/release-notes/breaking-changes.md @@ -0,0 +1,28 @@ +--- +navigation_title: "Elasticsearch Python Client" +--- + +# Elasticsearch Python Client breaking changes [elasticsearch-python-client-breaking-changes] +Before you upgrade, carefully review the Elasticsearch Python Client breaking changes and take the necessary steps to mitigate any issues. + +To learn how to upgrade, check out . + +% ## Next version [elasticsearch-python-client-nextversion-breaking-changes] +% **Release date:** Month day, year + +% ::::{dropdown} Title of breaking change +% Description of the breaking change. +% For more information, check [PR #](PR link). +% **Impact**
      Impact of the breaking change. +% **Action**
      Steps for mitigating deprecation impact. +% :::: + +% ## 9.0.0 [elasticsearch-python-client-900-breaking-changes] +% **Release date:** March 25, 2025 + +% ::::{dropdown} Title of breaking change +% Description of the breaking change. +% For more information, check [PR #](PR link). +% **Impact**
      Impact of the breaking change. +% **Action**
      Steps for mitigating deprecation impact. +% :::: \ No newline at end of file diff --git a/docs/release-notes/deprecations.md b/docs/release-notes/deprecations.md new file mode 100644 index 000000000..1b9bfbb74 --- /dev/null +++ b/docs/release-notes/deprecations.md @@ -0,0 +1,28 @@ +--- +navigation_title: "Elasticsearch Python Client" +--- + +# Elasticsearch Python Client deprecations [elasticsearch-python-client-deprecations] +Review the deprecated functionality for your Elasticsearch Python Client version. While deprecations have no immediate impact, we strongly encourage you update your implementation after you upgrade. + +To learn how to upgrade, check out . + +% ## Next version [elasticsearch-python-client-versionnext-deprecations] +% **Release date:** Month day, year + +% ::::{dropdown} Deprecation title +% Description of the deprecation. +% For more information, check [PR #](PR link). +% **Impact**
      Impact of deprecation. +% **Action**
      Steps for mitigating deprecation impact. +% :::: + +% ## 9.0.0 [elasticsearch-python-client-900-deprecations] +% **Release date:** March 25, 2025 + +% ::::{dropdown} Deprecation title +% Description of the deprecation. +% For more information, check [PR #](PR link). +% **Impact**
      Impact of deprecation. +% **Action**
      Steps for mitigating deprecation impact. +% :::: \ No newline at end of file diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md new file mode 100644 index 000000000..156625560 --- /dev/null +++ b/docs/release-notes/index.md @@ -0,0 +1,27 @@ +--- +navigation_title: "Elasticsearch Python Client" +--- + +# Elasticsearch Python Client release notes [elasticsearch-python-client-release-notes] + +Review the changes, fixes, and more in each version of Elasticsearch Python Client. + +To check for security updates, go to [Security announcements for the Elastic stack](https://discuss.elastic.co/c/announcements/security-announcements/31). + +% Release notes include only features, enhancements, and fixes. Add breaking changes, deprecations, and known issues to the applicable release notes sections. + +% ## version.next [felasticsearch-python-client-next-release-notes] +% **Release date:** Month day, year + +% ### Features and enhancements [elasticsearch-python-client-next-features-enhancements] +% * + +% ### Fixes [elasticsearch-python-client-next-fixes] +% * + +## 9.0.0 [elasticsearch-python-client-900-release-notes] +**Release date:** March 25, 2025 + +### Features and enhancements [elasticsearch-python-client-900-features-enhancements] + +### Fixes [elasticsearch-python-client-900-fixes] \ No newline at end of file diff --git a/docs/release-notes/known-issues.md b/docs/release-notes/known-issues.md new file mode 100644 index 000000000..da93abb27 --- /dev/null +++ b/docs/release-notes/known-issues.md @@ -0,0 +1,20 @@ +--- +navigation_title: "Elasticsearch Python Client" + +--- + +# Elasticsearch Python Client known issues [elasticsearch-python-client-known-issues] + +% Use the following template to add entries to this page. + +% :::{dropdown} Title of known issue +% **Details** +% On [Month/Day/Year], a known issue was discovered that [description of known issue]. + +% **Workaround** +% Workaround description. + +% **Resolved** +% On [Month/Day/Year], this issue was resolved. + +::: \ No newline at end of file diff --git a/docs/release-notes/toc.yml b/docs/release-notes/toc.yml new file mode 100644 index 000000000..a41006794 --- /dev/null +++ b/docs/release-notes/toc.yml @@ -0,0 +1,5 @@ +toc: + - file: index.md + - file: known-issues.md + - file: breaking-changes.md + - file: deprecations.md \ No newline at end of file From fc0cc82e95ff04212647116314c39a596553df10 Mon Sep 17 00:00:00 2001 From: Quentin Pradet Date: Wed, 26 Feb 2025 16:44:48 +0400 Subject: [PATCH 3/5] Fix Read the Docs build --- docs/sphinx/_static/images/create-api-key.png | Bin 0 -> 80572 bytes docs/sphinx/quickstart.rst | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/sphinx/_static/images/create-api-key.png diff --git a/docs/sphinx/_static/images/create-api-key.png b/docs/sphinx/_static/images/create-api-key.png new file mode 100644 index 0000000000000000000000000000000000000000..d75c230300b1509869c461e5f38ddcc3d9d3d690 GIT binary patch literal 80572 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

        yrzys%8TjQ)A>Fl2Fd^^<2l^4@6d5K{m(Bq)25Q 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

        * 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 Date: Wed, 26 Feb 2025 08:20:12 -0600 Subject: [PATCH 4/5] fix links --- docs/docset.yml | 3 ++- docs/reference/async.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/docset.yml b/docs/docset.yml index ce873e602..882aea405 100644 --- a/docs/docset.yml +++ b/docs/docset.yml @@ -1,6 +1,7 @@ project: 'Python client' cross_links: - - apm-agent-php + - apm-agent-python + - docs-content - elasticsearch toc: - toc: reference diff --git a/docs/reference/async.md b/docs/reference/async.md index aa29a4464..91f5bc589 100644 --- a/docs/reference/async.md +++ b/docs/reference/async.md @@ -47,7 +47,7 @@ All APIs that are available under the sync client are also available under the a [ASGI](https://asgi.readthedocs.io) (Asynchronous Server Gateway Interface) is a way to serve Python web applications making use of async I/O to achieve better performance. Some examples of ASGI frameworks include FastAPI, Django 3.0+, and Starlette. If you’re using one of these frameworks along with Elasticsearch then you should be using `~elasticsearch.AsyncElasticsearch` to avoid blocking the event loop with synchronous network calls for optimal performance. -[Elastic APM](apm-agent-php://docs/reference/index.md) also supports tracing of async Elasticsearch queries just the same as synchronous queries. For an example on how to configure `AsyncElasticsearch` with a popular ASGI framework [FastAPI](https://fastapi.tiangolo.com/) and APM tracing there is a [pre-built example](https://github.com/elastic/elasticsearch-py/tree/master/examples/fastapi-apm) in the `examples/fastapi-apm` directory. +[Elastic APM](apm-agent-python://docs/reference/index.md) also supports tracing of async Elasticsearch queries just the same as synchronous queries. For an example on how to configure `AsyncElasticsearch` with a popular ASGI framework [FastAPI](https://fastapi.tiangolo.com/) and APM tracing there is a [pre-built example](https://github.com/elastic/elasticsearch-py/tree/master/examples/fastapi-apm) in the `examples/fastapi-apm` directory. See also the [Using OpenTelemetry](/reference/opentelemetry.md) page. From ad57e42e3ff34949aa624e0bc14a2ec52deba48e Mon Sep 17 00:00:00 2001 From: Colleen McGinnis Date: Fri, 28 Feb 2025 10:55:37 -0600 Subject: [PATCH 5/5] clean up cross-repo links --- docs/reference/_how_to_guides.md | 4 ++-- docs/reference/async.md | 2 +- docs/reference/connecting.md | 2 +- docs/reference/esql-pandas.md | 2 +- docs/reference/examples.md | 2 +- docs/reference/integrations.md | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/reference/_how_to_guides.md b/docs/reference/_how_to_guides.md index 7a238208f..08e16b28c 100644 --- a/docs/reference/_how_to_guides.md +++ b/docs/reference/_how_to_guides.md @@ -655,7 +655,7 @@ class Post(Document): The `Document` instances use native python types like `str` and `datetime`. In case of `Object` or `Nested` fields an instance of the `InnerDoc` subclass is used, as in the `add_comment` method in the above example where we are creating an instance of the `Comment` class. -There are some specific types that were created as part of this library to make working with some field types easier, for example the `Range` object used in any of the [range fields](elasticsearch://docs/reference/elasticsearch/mapping-reference/range.md): +There are some specific types that were created as part of this library to make working with some field types easier, for example the `Range` object used in any of the [range fields](elasticsearch://reference/elasticsearch/mapping-reference/range.md): ```python from elasticsearch.dsl import Document, DateRange, Keyword, Range @@ -1069,7 +1069,7 @@ class BlogPost(BaseDocument): name = 'blog' ``` -Another use case would be using the [join type](elasticsearch://docs/reference/elasticsearch/mapping-reference/parent-join.md) to have multiple different entities in a single index. You can see an [example](https://github.com/elastic/elasticsearch-py/blob/master/examples/dsl/parent_child.py) of this approach. Note that in this case, if the subclasses don’t define their own Index classes, the mappings are merged and shared between all the subclasses. +Another use case would be using the [join type](elasticsearch://reference/elasticsearch/mapping-reference/parent-join.md) to have multiple different entities in a single index. You can see an [example](https://github.com/elastic/elasticsearch-py/blob/master/examples/dsl/parent_child.py) of this approach. Note that in this case, if the subclasses don’t define their own Index classes, the mappings are merged and shared between all the subclasses. diff --git a/docs/reference/async.md b/docs/reference/async.md index 91f5bc589..f205d3807 100644 --- a/docs/reference/async.md +++ b/docs/reference/async.md @@ -47,7 +47,7 @@ All APIs that are available under the sync client are also available under the a [ASGI](https://asgi.readthedocs.io) (Asynchronous Server Gateway Interface) is a way to serve Python web applications making use of async I/O to achieve better performance. Some examples of ASGI frameworks include FastAPI, Django 3.0+, and Starlette. If you’re using one of these frameworks along with Elasticsearch then you should be using `~elasticsearch.AsyncElasticsearch` to avoid blocking the event loop with synchronous network calls for optimal performance. -[Elastic APM](apm-agent-python://docs/reference/index.md) also supports tracing of async Elasticsearch queries just the same as synchronous queries. For an example on how to configure `AsyncElasticsearch` with a popular ASGI framework [FastAPI](https://fastapi.tiangolo.com/) and APM tracing there is a [pre-built example](https://github.com/elastic/elasticsearch-py/tree/master/examples/fastapi-apm) in the `examples/fastapi-apm` directory. +[Elastic APM](apm-agent-python://reference/index.md) also supports tracing of async Elasticsearch queries just the same as synchronous queries. For an example on how to configure `AsyncElasticsearch` with a popular ASGI framework [FastAPI](https://fastapi.tiangolo.com/) and APM tracing there is a [pre-built example](https://github.com/elastic/elasticsearch-py/tree/master/examples/fastapi-apm) in the `examples/fastapi-apm` directory. See also the [Using OpenTelemetry](/reference/opentelemetry.md) page. diff --git a/docs/reference/connecting.md b/docs/reference/connecting.md index 133323028..aefc50b1f 100644 --- a/docs/reference/connecting.md +++ b/docs/reference/connecting.md @@ -154,7 +154,7 @@ Running {{es}} without security enabled is not recommended. :::: -If your cluster is configured with [security explicitly disabled](elasticsearch://docs/reference/elasticsearch/configuration-reference/security-settings.md) then you can connect via HTTP: +If your cluster is configured with [security explicitly disabled](elasticsearch://reference/elasticsearch/configuration-reference/security-settings.md) then you can connect via HTTP: ```python from elasticsearch import Elasticsearch diff --git a/docs/reference/esql-pandas.md b/docs/reference/esql-pandas.md index 47c0297fb..506ea6579 100644 --- a/docs/reference/esql-pandas.md +++ b/docs/reference/esql-pandas.md @@ -355,7 +355,7 @@ You can now analyze the data with Pandas or you can also continue transforming t ## Analyze the data with Pandas [analyze-data] -In the next example, the [STATS …​ BY](elasticsearch://docs/reference/query-languages/esql/esql-commands.md#esql-stats-by) command is utilized to count how many employees are speaking a given language. The results are sorted with the `languages` column using [SORT](elasticsearch://docs/reference/query-languages/esql/esql-commands.md#esql-sort): +In the next example, the [STATS …​ BY](elasticsearch://reference/query-languages/esql/esql-commands.md#esql-stats-by) command is utilized to count how many employees are speaking a given language. The results are sorted with the `languages` column using [SORT](elasticsearch://reference/query-languages/esql/esql-commands.md#esql-sort): ```python response = client.esql.query( diff --git a/docs/reference/examples.md b/docs/reference/examples.md index 632e3a103..127312d8b 100644 --- a/docs/reference/examples.md +++ b/docs/reference/examples.md @@ -145,7 +145,7 @@ In the [02-hybrid-search.ipynb](https://github.com/elastic/elasticsearch-labs/bl * Combine results of traditional text-based search with semantic search, for a hybrid search system. * Transform fields in the sample dataset into embeddings using the Sentence Transformer model and index them into Elasticsearch. -* Use the [RRF API](elasticsearch://docs/reference/elasticsearch/rest-apis/reciprocal-rank-fusion.md#rrf-api) to combine the results of a `match` query and a `kNN` semantic search. +* Use the [RRF API](elasticsearch://reference/elasticsearch/rest-apis/reciprocal-rank-fusion.md#rrf-api) to combine the results of a `match` query and a `kNN` semantic search. * Walk through a super simple toy example that demonstrates, step by step, how RRF ranking works. diff --git a/docs/reference/integrations.md b/docs/reference/integrations.md index 627f36aae..282f69257 100644 --- a/docs/reference/integrations.md +++ b/docs/reference/integrations.md @@ -25,7 +25,7 @@ The handling of connections, retries, and pooling is handled by the [Elastic Tra ## Tracking requests with Opaque ID [opaque-id] -You can enrich your requests against Elasticsearch with an identifier string, that allows you to discover this identifier in [deprecation logs](docs-content://deploy-manage/monitor/logging-configuration/update-elasticsearch-logging-levels.md#deprecation-logging), to support you with [identifying search slow log origin](elasticsearch://docs/reference/elasticsearch/index-settings/slow-log.md) or to help with [identifying running tasks](https://www.elastic.co/docs/api/doc/elasticsearch/group/endpoint-tasks). +You can enrich your requests against Elasticsearch with an identifier string, that allows you to discover this identifier in [deprecation logs](docs-content://deploy-manage/monitor/logging-configuration/update-elasticsearch-logging-levels.md#deprecation-logging), to support you with [identifying search slow log origin](elasticsearch://reference/elasticsearch/index-settings/slow-log.md) or to help with [identifying running tasks](https://www.elastic.co/docs/api/doc/elasticsearch/group/endpoint-tasks). The opaque ID can be set via the `opaque_id` parameter via the client `.options()` method:

      * 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 z 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