elasticsearch9 9.0.2__py3-none-any.whl → 9.0.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. elasticsearch9/_async/client/__init__.py +42 -198
  2. elasticsearch9/_async/client/cat.py +393 -25
  3. elasticsearch9/_async/client/cluster.py +14 -4
  4. elasticsearch9/_async/client/eql.py +10 -2
  5. elasticsearch9/_async/client/esql.py +17 -4
  6. elasticsearch9/_async/client/indices.py +87 -43
  7. elasticsearch9/_async/client/inference.py +108 -3
  8. elasticsearch9/_async/client/ingest.py +0 -7
  9. elasticsearch9/_async/client/license.py +4 -4
  10. elasticsearch9/_async/client/ml.py +6 -17
  11. elasticsearch9/_async/client/monitoring.py +1 -1
  12. elasticsearch9/_async/client/rollup.py +1 -22
  13. elasticsearch9/_async/client/security.py +11 -17
  14. elasticsearch9/_async/client/snapshot.py +6 -0
  15. elasticsearch9/_async/client/synonyms.py +1 -0
  16. elasticsearch9/_async/client/watcher.py +4 -2
  17. elasticsearch9/_sync/client/__init__.py +42 -198
  18. elasticsearch9/_sync/client/cat.py +393 -25
  19. elasticsearch9/_sync/client/cluster.py +14 -4
  20. elasticsearch9/_sync/client/eql.py +10 -2
  21. elasticsearch9/_sync/client/esql.py +17 -4
  22. elasticsearch9/_sync/client/indices.py +87 -43
  23. elasticsearch9/_sync/client/inference.py +108 -3
  24. elasticsearch9/_sync/client/ingest.py +0 -7
  25. elasticsearch9/_sync/client/license.py +4 -4
  26. elasticsearch9/_sync/client/ml.py +6 -17
  27. elasticsearch9/_sync/client/monitoring.py +1 -1
  28. elasticsearch9/_sync/client/rollup.py +1 -22
  29. elasticsearch9/_sync/client/security.py +11 -17
  30. elasticsearch9/_sync/client/snapshot.py +6 -0
  31. elasticsearch9/_sync/client/synonyms.py +1 -0
  32. elasticsearch9/_sync/client/watcher.py +4 -2
  33. elasticsearch9/_version.py +1 -1
  34. elasticsearch9/compat.py +5 -0
  35. elasticsearch9/dsl/__init__.py +2 -1
  36. elasticsearch9/dsl/document_base.py +176 -16
  37. elasticsearch9/dsl/field.py +222 -47
  38. elasticsearch9/dsl/query.py +7 -4
  39. elasticsearch9/dsl/types.py +105 -80
  40. elasticsearch9/dsl/utils.py +1 -1
  41. elasticsearch9/{dsl/_sync/_sync_check → esql}/__init__.py +2 -0
  42. elasticsearch9/esql/esql.py +1105 -0
  43. elasticsearch9/esql/functions.py +1738 -0
  44. {elasticsearch9-9.0.2.dist-info → elasticsearch9-9.0.3.dist-info}/METADATA +1 -1
  45. {elasticsearch9-9.0.2.dist-info → elasticsearch9-9.0.3.dist-info}/RECORD +48 -52
  46. elasticsearch9/dsl/_sync/_sync_check/document.py +0 -514
  47. elasticsearch9/dsl/_sync/_sync_check/faceted_search.py +0 -50
  48. elasticsearch9/dsl/_sync/_sync_check/index.py +0 -597
  49. elasticsearch9/dsl/_sync/_sync_check/mapping.py +0 -49
  50. elasticsearch9/dsl/_sync/_sync_check/search.py +0 -230
  51. elasticsearch9/dsl/_sync/_sync_check/update_by_query.py +0 -45
  52. {elasticsearch9-9.0.2.dist-info → elasticsearch9-9.0.3.dist-info}/WHEEL +0 -0
  53. {elasticsearch9-9.0.2.dist-info → elasticsearch9-9.0.3.dist-info}/licenses/LICENSE +0 -0
  54. {elasticsearch9-9.0.2.dist-info → elasticsearch9-9.0.3.dist-info}/licenses/NOTICE +0 -0
@@ -2213,13 +2213,10 @@ class SecurityClient(NamespacedClient):
2213
2213
  async def get_user_privileges(
2214
2214
  self,
2215
2215
  *,
2216
- application: t.Optional[str] = None,
2217
2216
  error_trace: t.Optional[bool] = None,
2218
2217
  filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
2219
2218
  human: t.Optional[bool] = None,
2220
2219
  pretty: t.Optional[bool] = None,
2221
- priviledge: t.Optional[str] = None,
2222
- username: t.Optional[t.Union[None, str]] = None,
2223
2220
  ) -> ObjectApiResponse[t.Any]:
2224
2221
  """
2225
2222
  .. raw:: html
@@ -2232,19 +2229,10 @@ class SecurityClient(NamespacedClient):
2232
2229
 
2233
2230
 
2234
2231
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-security-get-user-privileges>`_
2235
-
2236
- :param application: The name of the application. Application privileges are always
2237
- associated with exactly one application. If you do not specify this parameter,
2238
- the API returns information about all privileges for all applications.
2239
- :param priviledge: The name of the privilege. If you do not specify this parameter,
2240
- the API returns information about all privileges for the requested application.
2241
- :param username:
2242
2232
  """
2243
2233
  __path_parts: t.Dict[str, str] = {}
2244
2234
  __path = "/_security/user/_privileges"
2245
2235
  __query: t.Dict[str, t.Any] = {}
2246
- if application is not None:
2247
- __query["application"] = application
2248
2236
  if error_trace is not None:
2249
2237
  __query["error_trace"] = error_trace
2250
2238
  if filter_path is not None:
@@ -2253,10 +2241,6 @@ class SecurityClient(NamespacedClient):
2253
2241
  __query["human"] = human
2254
2242
  if pretty is not None:
2255
2243
  __query["pretty"] = pretty
2256
- if priviledge is not None:
2257
- __query["priviledge"] = priviledge
2258
- if username is not None:
2259
- __query["username"] = username
2260
2244
  __headers = {"accept": "application/json"}
2261
2245
  return await self.perform_request( # type: ignore[return-value]
2262
2246
  "GET",
@@ -2345,6 +2329,9 @@ class SecurityClient(NamespacedClient):
2345
2329
  human: t.Optional[bool] = None,
2346
2330
  password: t.Optional[str] = None,
2347
2331
  pretty: t.Optional[bool] = None,
2332
+ refresh: t.Optional[
2333
+ t.Union[bool, str, t.Literal["false", "true", "wait_for"]]
2334
+ ] = None,
2348
2335
  run_as: t.Optional[str] = None,
2349
2336
  username: t.Optional[str] = None,
2350
2337
  body: t.Optional[t.Dict[str, t.Any]] = None,
@@ -2382,6 +2369,9 @@ class SecurityClient(NamespacedClient):
2382
2369
  types.
2383
2370
  :param password: The user's password. If you specify the `password` grant type,
2384
2371
  this parameter is required. It is not valid with other grant types.
2372
+ :param refresh: If 'true', Elasticsearch refreshes the affected shards to make
2373
+ this operation visible to search. If 'wait_for', it waits for a refresh to
2374
+ make this operation visible to search. If 'false', nothing is done with refreshes.
2385
2375
  :param run_as: The name of the user to be impersonated.
2386
2376
  :param username: The user name that identifies the user. If you specify the `password`
2387
2377
  grant type, this parameter is required. It is not valid with other grant
@@ -2403,6 +2393,8 @@ class SecurityClient(NamespacedClient):
2403
2393
  __query["human"] = human
2404
2394
  if pretty is not None:
2405
2395
  __query["pretty"] = pretty
2396
+ if refresh is not None:
2397
+ __query["refresh"] = refresh
2406
2398
  if not __body:
2407
2399
  if api_key is not None:
2408
2400
  __body["api_key"] = api_key
@@ -3553,7 +3545,8 @@ class SecurityClient(NamespacedClient):
3553
3545
  You can optionally filter the results with a query.</p>
3554
3546
  <p>To use this API, you must have at least the <code>manage_own_api_key</code> or the <code>read_security</code> cluster privileges.
3555
3547
  If you have only the <code>manage_own_api_key</code> privilege, this API returns only the API keys that you own.
3556
- If you have the <code>read_security</code>, <code>manage_api_key</code>, or greater privileges (including <code>manage_security</code>), this API returns all API keys regardless of ownership.</p>
3548
+ If you have the <code>read_security</code>, <code>manage_api_key</code>, or greater privileges (including <code>manage_security</code>), this API returns all API keys regardless of ownership.
3549
+ Refer to the linked documentation for examples of how to find API keys:</p>
3557
3550
 
3558
3551
 
3559
3552
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-security-query-api-keys>`_
@@ -4466,6 +4459,7 @@ class SecurityClient(NamespacedClient):
4466
4459
  <p>This API supports updates to an API key's access scope, metadata, and expiration.
4467
4460
  The owner user's information, such as the <code>username</code> and <code>realm</code>, is also updated automatically on every call.</p>
4468
4461
  <p>NOTE: This API cannot update REST API keys, which should be updated by either the update API key or bulk update API keys API.</p>
4462
+ <p>To learn more about how to use this API, refer to the <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/update-cc-api-key-examples">Update cross cluter API key API examples page</a>.</p>
4469
4463
 
4470
4464
 
4471
4465
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-security-update-cross-cluster-api-key>`_
@@ -403,6 +403,7 @@ class SnapshotClient(NamespacedClient):
403
403
  human: t.Optional[bool] = None,
404
404
  master_timeout: t.Optional[t.Union[str, t.Literal[-1], t.Literal[0]]] = None,
405
405
  pretty: t.Optional[bool] = None,
406
+ wait_for_completion: t.Optional[bool] = None,
406
407
  ) -> ObjectApiResponse[t.Any]:
407
408
  """
408
409
  .. raw:: html
@@ -418,6 +419,9 @@ class SnapshotClient(NamespacedClient):
418
419
  :param master_timeout: The period to wait for the master node. If the master
419
420
  node is not available before the timeout expires, the request fails and returns
420
421
  an error. To indicate that the request should never timeout, set it to `-1`.
422
+ :param wait_for_completion: If `true`, the request returns a response when the
423
+ matching snapshots are all deleted. If `false`, the request returns a response
424
+ as soon as the deletes are scheduled.
421
425
  """
422
426
  if repository in SKIP_IN_PATH:
423
427
  raise ValueError("Empty value passed for parameter 'repository'")
@@ -439,6 +443,8 @@ class SnapshotClient(NamespacedClient):
439
443
  __query["master_timeout"] = master_timeout
440
444
  if pretty is not None:
441
445
  __query["pretty"] = pretty
446
+ if wait_for_completion is not None:
447
+ __query["wait_for_completion"] = wait_for_completion
442
448
  __headers = {"accept": "application/json"}
443
449
  return await self.perform_request( # type: ignore[return-value]
444
450
  "DELETE",
@@ -309,6 +309,7 @@ class SynonymsClient(NamespacedClient):
309
309
  If you need to manage more synonym rules, you can create multiple synonym sets.</p>
310
310
  <p>When an existing synonyms set is updated, the search analyzers that use the synonyms set are reloaded automatically for all indices.
311
311
  This is equivalent to invoking the reload search analyzers API for all indices that use the synonyms set.</p>
312
+ <p>For practical examples of how to create or update a synonyms set, refer to the External documentation.</p>
312
313
 
313
314
 
314
315
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-synonyms-put-synonym>`_
@@ -45,7 +45,8 @@ class WatcherClient(NamespacedClient):
45
45
  <p>IMPORTANT: If the specified watch is currently being executed, this API will return an error
46
46
  The reason for this behavior is to prevent overwriting the watch status from a watch execution.</p>
47
47
  <p>Acknowledging an action throttles further executions of that action until its <code>ack.state</code> is reset to <code>awaits_successful_execution</code>.
48
- This happens when the condition of the watch is not met (the condition evaluates to false).</p>
48
+ This happens when the condition of the watch is not met (the condition evaluates to false).
49
+ To demonstrate how throttling works in practice and how it can be configured for individual actions within a watch, refer to External documentation.</p>
49
50
 
50
51
 
51
52
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-watcher-ack-watch>`_
@@ -274,7 +275,8 @@ class WatcherClient(NamespacedClient):
274
275
  This serves as great tool for testing and debugging your watches prior to adding them to Watcher.</p>
275
276
  <p>When Elasticsearch security features are enabled on your cluster, watches are run with the privileges of the user that stored the watches.
276
277
  If your user is allowed to read index <code>a</code>, but not index <code>b</code>, then the exact same set of rules will apply during execution of a watch.</p>
277
- <p>When using the run watch API, the authorization data of the user that called the API will be used as a base, instead of the information who stored the watch.</p>
278
+ <p>When using the run watch API, the authorization data of the user that called the API will be used as a base, instead of the information who stored the watch.
279
+ Refer to the external documentation for examples of watch execution requests, including existing, customized, and inline watches.</p>
278
280
 
279
281
 
280
282
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-watcher-execute-watch>`_
@@ -635,6 +635,8 @@ class Elasticsearch(BaseClient):
635
635
  Imagine a <code>_bulk?refresh=wait_for</code> request with three documents in it that happen to be routed to different shards in an index with five shards.
636
636
  The request will only wait for those three shards to refresh.
637
637
  The other two shards that make up the index do not participate in the <code>_bulk</code> request at all.</p>
638
+ <p>You might want to disable the refresh interval temporarily to improve indexing throughput for large bulk requests.
639
+ Refer to the linked documentation for step-by-step instructions using the index settings API.</p>
638
640
 
639
641
 
640
642
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-bulk>`_
@@ -1027,10 +1029,7 @@ class Elasticsearch(BaseClient):
1027
1029
  error_trace: t.Optional[bool] = None,
1028
1030
  filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
1029
1031
  human: t.Optional[bool] = None,
1030
- if_primary_term: t.Optional[int] = None,
1031
- if_seq_no: t.Optional[int] = None,
1032
1032
  include_source_on_error: t.Optional[bool] = None,
1033
- op_type: t.Optional[t.Union[str, t.Literal["create", "index"]]] = None,
1034
1033
  pipeline: t.Optional[str] = None,
1035
1034
  pretty: t.Optional[bool] = None,
1036
1035
  refresh: t.Optional[
@@ -1115,18 +1114,8 @@ class Elasticsearch(BaseClient):
1115
1114
  :param id: A unique identifier for the document. To automatically generate a
1116
1115
  document ID, use the `POST /<target>/_doc/` request format.
1117
1116
  :param document:
1118
- :param if_primary_term: Only perform the operation if the document has this primary
1119
- term.
1120
- :param if_seq_no: Only perform the operation if the document has this sequence
1121
- number.
1122
1117
  :param include_source_on_error: True or false if to include the document source
1123
1118
  in the error message in case of parsing errors.
1124
- :param op_type: Set to `create` to only index the document if it does not already
1125
- exist (put if absent). If a document with the specified `_id` already exists,
1126
- the indexing operation will fail. The behavior is the same as using the `<index>/_create`
1127
- endpoint. If a document ID is specified, this paramater defaults to `index`.
1128
- Otherwise, it defaults to `create`. If the request targets a data stream,
1129
- an `op_type` of `create` is required.
1130
1119
  :param pipeline: The ID of the pipeline to use to preprocess incoming documents.
1131
1120
  If the index has a default ingest pipeline specified, setting the value to
1132
1121
  `_none` turns off the default ingest pipeline for this request. If a final
@@ -1178,14 +1167,8 @@ class Elasticsearch(BaseClient):
1178
1167
  __query["filter_path"] = filter_path
1179
1168
  if human is not None:
1180
1169
  __query["human"] = human
1181
- if if_primary_term is not None:
1182
- __query["if_primary_term"] = if_primary_term
1183
- if if_seq_no is not None:
1184
- __query["if_seq_no"] = if_seq_no
1185
1170
  if include_source_on_error is not None:
1186
1171
  __query["include_source_on_error"] = include_source_on_error
1187
- if op_type is not None:
1188
- __query["op_type"] = op_type
1189
1172
  if pipeline is not None:
1190
1173
  __query["pipeline"] = pipeline
1191
1174
  if pretty is not None:
@@ -2322,7 +2305,7 @@ class Elasticsearch(BaseClient):
2322
2305
  :param index: The name of the index that contains the document.
2323
2306
  :param id: A unique document identifier.
2324
2307
  :param force_synthetic_source: Indicates whether the request forces synthetic
2325
- `_source`. Use this paramater to test if the mapping supports synthetic `_source`
2308
+ `_source`. Use this parameter to test if the mapping supports synthetic `_source`
2326
2309
  and to get a sense of the worst case performance. Fetches with this parameter
2327
2310
  enabled will be slower than enabling synthetic source natively in the index.
2328
2311
  :param preference: The node or shard the operation should be performed on. By
@@ -2353,8 +2336,8 @@ class Elasticsearch(BaseClient):
2353
2336
  :param stored_fields: A comma-separated list of stored fields to return as part
2354
2337
  of a hit. If no fields are specified, no stored fields are included in the
2355
2338
  response. If this field is specified, the `_source` parameter defaults to
2356
- `false`. Only leaf fields can be retrieved with the `stored_field` option.
2357
- Object fields can't be returned;​if specified, the request fails.
2339
+ `false`. Only leaf fields can be retrieved with the `stored_fields` option.
2340
+ Object fields can't be returned; if specified, the request fails.
2358
2341
  :param version: The version number for concurrency control. It must match the
2359
2342
  current version of the document for the request to succeed.
2360
2343
  :param version_type: The version type.
@@ -2558,7 +2541,6 @@ class Elasticsearch(BaseClient):
2558
2541
  source: t.Optional[t.Union[bool, t.Union[str, t.Sequence[str]]]] = None,
2559
2542
  source_excludes: t.Optional[t.Union[str, t.Sequence[str]]] = None,
2560
2543
  source_includes: t.Optional[t.Union[str, t.Sequence[str]]] = None,
2561
- stored_fields: t.Optional[t.Union[str, t.Sequence[str]]] = None,
2562
2544
  version: t.Optional[int] = None,
2563
2545
  version_type: t.Optional[
2564
2546
  t.Union[str, t.Literal["external", "external_gte", "force", "internal"]]
@@ -2595,8 +2577,6 @@ class Elasticsearch(BaseClient):
2595
2577
  the response.
2596
2578
  :param source_includes: A comma-separated list of source fields to include in
2597
2579
  the response.
2598
- :param stored_fields: A comma-separated list of stored fields to return as part
2599
- of a hit.
2600
2580
  :param version: The version number for concurrency control. It must match the
2601
2581
  current version of the document for the request to succeed.
2602
2582
  :param version_type: The version type.
@@ -2630,8 +2610,6 @@ class Elasticsearch(BaseClient):
2630
2610
  __query["_source_excludes"] = source_excludes
2631
2611
  if source_includes is not None:
2632
2612
  __query["_source_includes"] = source_includes
2633
- if stored_fields is not None:
2634
- __query["stored_fields"] = stored_fields
2635
2613
  if version is not None:
2636
2614
  __query["version"] = version
2637
2615
  if version_type is not None:
@@ -2740,6 +2718,7 @@ class Elasticsearch(BaseClient):
2740
2718
  t.Union[bool, str, t.Literal["false", "true", "wait_for"]]
2741
2719
  ] = None,
2742
2720
  require_alias: t.Optional[bool] = None,
2721
+ require_data_stream: t.Optional[bool] = None,
2743
2722
  routing: t.Optional[str] = None,
2744
2723
  timeout: t.Optional[t.Union[str, t.Literal[-1], t.Literal[0]]] = None,
2745
2724
  version: t.Optional[int] = None,
@@ -2875,6 +2854,8 @@ class Elasticsearch(BaseClient):
2875
2854
  this operation visible to search. If `wait_for`, it waits for a refresh to
2876
2855
  make this operation visible to search. If `false`, it does nothing with refreshes.
2877
2856
  :param require_alias: If `true`, the destination must be an index alias.
2857
+ :param require_data_stream: If `true`, the request's actions must target a data
2858
+ stream (existing or to be created).
2878
2859
  :param routing: A custom value that is used to route operations to a specific
2879
2860
  shard.
2880
2861
  :param timeout: The period the request waits for the following operations: automatic
@@ -2936,6 +2917,8 @@ class Elasticsearch(BaseClient):
2936
2917
  __query["refresh"] = refresh
2937
2918
  if require_alias is not None:
2938
2919
  __query["require_alias"] = require_alias
2920
+ if require_data_stream is not None:
2921
+ __query["require_data_stream"] = require_data_stream
2939
2922
  if routing is not None:
2940
2923
  __query["routing"] = routing
2941
2924
  if timeout is not None:
@@ -2971,7 +2954,8 @@ class Elasticsearch(BaseClient):
2971
2954
  .. raw:: html
2972
2955
 
2973
2956
  <p>Get cluster info.
2974
- Get basic build, version, and cluster information.</p>
2957
+ Get basic build, version, and cluster information.
2958
+ ::: In Serverless, this API is retained for backward compatibility only. Some response fields, such as the version number, should be ignored.</p>
2975
2959
 
2976
2960
 
2977
2961
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/group/endpoint-info>`_
@@ -3584,8 +3568,7 @@ class Elasticsearch(BaseClient):
3584
3568
  :param expand_wildcards: The type of index that wildcard patterns can match.
3585
3569
  If the request can target data streams, this argument determines whether
3586
3570
  wildcard expressions match hidden data streams. It supports comma-separated
3587
- values, such as `open,hidden`. Valid values are: `all`, `open`, `closed`,
3588
- `hidden`, `none`.
3571
+ values, such as `open,hidden`.
3589
3572
  :param ignore_unavailable: If `false`, the request returns an error if it targets
3590
3573
  a missing or closed index.
3591
3574
  :param index_filter: Filter indices if the provided query rewrites to `match_none`
@@ -3885,110 +3868,7 @@ class Elasticsearch(BaseClient):
3885
3868
  In this case, the response includes a count of the version conflicts that were encountered.
3886
3869
  Note that the handling of other error types is unaffected by the <code>conflicts</code> property.
3887
3870
  Additionally, if you opt to count version conflicts, the operation could attempt to reindex more documents from the source than <code>max_docs</code> until it has successfully indexed <code>max_docs</code> documents into the target or it has gone through every document in the source query.</p>
3888
- <p>NOTE: The reindex API makes no effort to handle ID collisions.
3889
- The last document written will &quot;win&quot; but the order isn't usually predictable so it is not a good idea to rely on this behavior.
3890
- Instead, make sure that IDs are unique by using a script.</p>
3891
- <p><strong>Running reindex asynchronously</strong></p>
3892
- <p>If the request contains <code>wait_for_completion=false</code>, Elasticsearch performs some preflight checks, launches the request, and returns a task you can use to cancel or get the status of the task.
3893
- Elasticsearch creates a record of this task as a document at <code>_tasks/&lt;task_id&gt;</code>.</p>
3894
- <p><strong>Reindex from multiple sources</strong></p>
3895
- <p>If you have many sources to reindex it is generally better to reindex them one at a time rather than using a glob pattern to pick up multiple sources.
3896
- That way you can resume the process if there are any errors by removing the partially completed source and starting over.
3897
- It also makes parallelizing the process fairly simple: split the list of sources to reindex and run each list in parallel.</p>
3898
- <p>For example, you can use a bash script like this:</p>
3899
- <pre><code>for index in i1 i2 i3 i4 i5; do
3900
- curl -HContent-Type:application/json -XPOST localhost:9200/_reindex?pretty -d'{
3901
- &quot;source&quot;: {
3902
- &quot;index&quot;: &quot;'$index'&quot;
3903
- },
3904
- &quot;dest&quot;: {
3905
- &quot;index&quot;: &quot;'$index'-reindexed&quot;
3906
- }
3907
- }'
3908
- done
3909
- </code></pre>
3910
- <p><strong>Throttling</strong></p>
3911
- <p>Set <code>requests_per_second</code> to any positive decimal number (<code>1.4</code>, <code>6</code>, <code>1000</code>, for example) to throttle the rate at which reindex issues batches of index operations.
3912
- Requests are throttled by padding each batch with a wait time.
3913
- To turn off throttling, set <code>requests_per_second</code> to <code>-1</code>.</p>
3914
- <p>The throttling is done by waiting between batches so that the scroll that reindex uses internally can be given a timeout that takes into account the padding.
3915
- The padding time is the difference between the batch size divided by the <code>requests_per_second</code> and the time spent writing.
3916
- By default the batch size is <code>1000</code>, so if <code>requests_per_second</code> is set to <code>500</code>:</p>
3917
- <pre><code>target_time = 1000 / 500 per second = 2 seconds
3918
- wait_time = target_time - write_time = 2 seconds - .5 seconds = 1.5 seconds
3919
- </code></pre>
3920
- <p>Since the batch is issued as a single bulk request, large batch sizes cause Elasticsearch to create many requests and then wait for a while before starting the next set.
3921
- This is &quot;bursty&quot; instead of &quot;smooth&quot;.</p>
3922
- <p><strong>Slicing</strong></p>
3923
- <p>Reindex supports sliced scroll to parallelize the reindexing process.
3924
- This parallelization can improve efficiency and provide a convenient way to break the request down into smaller parts.</p>
3925
- <p>NOTE: Reindexing from remote clusters does not support manual or automatic slicing.</p>
3926
- <p>You can slice a reindex request manually by providing a slice ID and total number of slices to each request.
3927
- You can also let reindex automatically parallelize by using sliced scroll to slice on <code>_id</code>.
3928
- The <code>slices</code> parameter specifies the number of slices to use.</p>
3929
- <p>Adding <code>slices</code> to the reindex request just automates the manual process, creating sub-requests which means it has some quirks:</p>
3930
- <ul>
3931
- <li>You can see these requests in the tasks API. These sub-requests are &quot;child&quot; tasks of the task for the request with slices.</li>
3932
- <li>Fetching the status of the task for the request with <code>slices</code> only contains the status of completed slices.</li>
3933
- <li>These sub-requests are individually addressable for things like cancellation and rethrottling.</li>
3934
- <li>Rethrottling the request with <code>slices</code> will rethrottle the unfinished sub-request proportionally.</li>
3935
- <li>Canceling the request with <code>slices</code> will cancel each sub-request.</li>
3936
- <li>Due to the nature of <code>slices</code>, each sub-request won't get a perfectly even portion of the documents. All documents will be addressed, but some slices may be larger than others. Expect larger slices to have a more even distribution.</li>
3937
- <li>Parameters like <code>requests_per_second</code> and <code>max_docs</code> on a request with <code>slices</code> are distributed proportionally to each sub-request. Combine that with the previous point about distribution being uneven and you should conclude that using <code>max_docs</code> with <code>slices</code> might not result in exactly <code>max_docs</code> documents being reindexed.</li>
3938
- <li>Each sub-request gets a slightly different snapshot of the source, though these are all taken at approximately the same time.</li>
3939
- </ul>
3940
- <p>If slicing automatically, setting <code>slices</code> to <code>auto</code> will choose a reasonable number for most indices.
3941
- If slicing manually or otherwise tuning automatic slicing, use the following guidelines.</p>
3942
- <p>Query performance is most efficient when the number of slices is equal to the number of shards in the index.
3943
- If that number is large (for example, <code>500</code>), choose a lower number as too many slices will hurt performance.
3944
- Setting slices higher than the number of shards generally does not improve efficiency and adds overhead.</p>
3945
- <p>Indexing performance scales linearly across available resources with the number of slices.</p>
3946
- <p>Whether query or indexing performance dominates the runtime depends on the documents being reindexed and cluster resources.</p>
3947
- <p><strong>Modify documents during reindexing</strong></p>
3948
- <p>Like <code>_update_by_query</code>, reindex operations support a script that modifies the document.
3949
- Unlike <code>_update_by_query</code>, the script is allowed to modify the document's metadata.</p>
3950
- <p>Just as in <code>_update_by_query</code>, you can set <code>ctx.op</code> to change the operation that is run on the destination.
3951
- For example, set <code>ctx.op</code> to <code>noop</code> if your script decides that the document doesn’t have to be indexed in the destination. This &quot;no operation&quot; will be reported in the <code>noop</code> counter in the response body.
3952
- Set <code>ctx.op</code> to <code>delete</code> if your script decides that the document must be deleted from the destination.
3953
- The deletion will be reported in the <code>deleted</code> counter in the response body.
3954
- Setting <code>ctx.op</code> to anything else will return an error, as will setting any other field in <code>ctx</code>.</p>
3955
- <p>Think of the possibilities! Just be careful; you are able to change:</p>
3956
- <ul>
3957
- <li><code>_id</code></li>
3958
- <li><code>_index</code></li>
3959
- <li><code>_version</code></li>
3960
- <li><code>_routing</code></li>
3961
- </ul>
3962
- <p>Setting <code>_version</code> to <code>null</code> or clearing it from the <code>ctx</code> map is just like not sending the version in an indexing request.
3963
- It will cause the document to be overwritten in the destination regardless of the version on the target or the version type you use in the reindex API.</p>
3964
- <p><strong>Reindex from remote</strong></p>
3965
- <p>Reindex supports reindexing from a remote Elasticsearch cluster.
3966
- The <code>host</code> parameter must contain a scheme, host, port, and optional path.
3967
- The <code>username</code> and <code>password</code> parameters are optional and when they are present the reindex operation will connect to the remote Elasticsearch node using basic authentication.
3968
- Be sure to use HTTPS when using basic authentication or the password will be sent in plain text.
3969
- There are a range of settings available to configure the behavior of the HTTPS connection.</p>
3970
- <p>When using Elastic Cloud, it is also possible to authenticate against the remote cluster through the use of a valid API key.
3971
- Remote hosts must be explicitly allowed with the <code>reindex.remote.whitelist</code> setting.
3972
- It can be set to a comma delimited list of allowed remote host and port combinations.
3973
- Scheme is ignored; only the host and port are used.
3974
- For example:</p>
3975
- <pre><code>reindex.remote.whitelist: [otherhost:9200, another:9200, 127.0.10.*:9200, localhost:*&quot;]
3976
- </code></pre>
3977
- <p>The list of allowed hosts must be configured on any nodes that will coordinate the reindex.
3978
- This feature should work with remote clusters of any version of Elasticsearch.
3979
- This should enable you to upgrade from any version of Elasticsearch to the current version by reindexing from a cluster of the old version.</p>
3980
- <p>WARNING: Elasticsearch does not support forward compatibility across major versions.
3981
- For example, you cannot reindex from a 7.x cluster into a 6.x cluster.</p>
3982
- <p>To enable queries sent to older versions of Elasticsearch, the <code>query</code> parameter is sent directly to the remote host without validation or modification.</p>
3983
- <p>NOTE: Reindexing from remote clusters does not support manual or automatic slicing.</p>
3984
- <p>Reindexing from a remote server uses an on-heap buffer that defaults to a maximum size of 100mb.
3985
- If the remote index includes very large documents you'll need to use a smaller batch size.
3986
- It is also possible to set the socket read timeout on the remote connection with the <code>socket_timeout</code> field and the connection timeout with the <code>connect_timeout</code> field.
3987
- Both default to 30 seconds.</p>
3988
- <p><strong>Configuring SSL parameters</strong></p>
3989
- <p>Reindex from remote supports configurable SSL settings.
3990
- These must be specified in the <code>elasticsearch.yml</code> file, with the exception of the secure settings, which you add in the Elasticsearch keystore.
3991
- It is not possible to configure SSL in the body of the reindex request.</p>
3871
+ <p>Refer to the linked documentation for examples of how to reindex documents.</p>
3992
3872
 
3993
3873
 
3994
3874
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-reindex>`_
@@ -4990,51 +4870,6 @@ class Elasticsearch(BaseClient):
4990
4870
  <li>Optionally, a <code>geo_bounds</code> aggregation on the <code>&lt;field&gt;</code>. The search only includes this aggregation if the <code>exact_bounds</code> parameter is <code>true</code>.</li>
4991
4871
  <li>If the optional parameter <code>with_labels</code> is <code>true</code>, the internal search will include a dynamic runtime field that calls the <code>getLabelPosition</code> function of the geometry doc value. This enables the generation of new point features containing suggested geometry labels, so that, for example, multi-polygons will have only one label.</li>
4992
4872
  </ul>
4993
- <p>For example, Elasticsearch may translate a vector tile search API request with a <code>grid_agg</code> argument of <code>geotile</code> and an <code>exact_bounds</code> argument of <code>true</code> into the following search</p>
4994
- <pre><code>GET my-index/_search
4995
- {
4996
- &quot;size&quot;: 10000,
4997
- &quot;query&quot;: {
4998
- &quot;geo_bounding_box&quot;: {
4999
- &quot;my-geo-field&quot;: {
5000
- &quot;top_left&quot;: {
5001
- &quot;lat&quot;: -40.979898069620134,
5002
- &quot;lon&quot;: -45
5003
- },
5004
- &quot;bottom_right&quot;: {
5005
- &quot;lat&quot;: -66.51326044311186,
5006
- &quot;lon&quot;: 0
5007
- }
5008
- }
5009
- }
5010
- },
5011
- &quot;aggregations&quot;: {
5012
- &quot;grid&quot;: {
5013
- &quot;geotile_grid&quot;: {
5014
- &quot;field&quot;: &quot;my-geo-field&quot;,
5015
- &quot;precision&quot;: 11,
5016
- &quot;size&quot;: 65536,
5017
- &quot;bounds&quot;: {
5018
- &quot;top_left&quot;: {
5019
- &quot;lat&quot;: -40.979898069620134,
5020
- &quot;lon&quot;: -45
5021
- },
5022
- &quot;bottom_right&quot;: {
5023
- &quot;lat&quot;: -66.51326044311186,
5024
- &quot;lon&quot;: 0
5025
- }
5026
- }
5027
- }
5028
- },
5029
- &quot;bounds&quot;: {
5030
- &quot;geo_bounds&quot;: {
5031
- &quot;field&quot;: &quot;my-geo-field&quot;,
5032
- &quot;wrap_longitude&quot;: false
5033
- }
5034
- }
5035
- }
5036
- }
5037
- </code></pre>
5038
4873
  <p>The API returns results as a binary Mapbox vector tile.
5039
4874
  Mapbox vector tiles are encoded as Google Protobufs (PBF). By default, the tile contains three layers:</p>
5040
4875
  <ul>
@@ -5289,6 +5124,7 @@ class Elasticsearch(BaseClient):
5289
5124
  Some cells may intersect more than one vector tile.
5290
5125
  To compute the H3 resolution for each precision, Elasticsearch compares the average density of hexagonal bins at each resolution with the average density of tile bins at each zoom level.
5291
5126
  Elasticsearch uses the H3 resolution that is closest to the corresponding geotile density.</p>
5127
+ <p>Learn how to use the vector tile search API with practical examples in the <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/vector-tile-search">Vector tile search examples</a> guide.</p>
5292
5128
 
5293
5129
 
5294
5130
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-search-mvt>`_
@@ -5478,7 +5314,7 @@ class Elasticsearch(BaseClient):
5478
5314
  :param expand_wildcards: Type of index that wildcard patterns can match. If the
5479
5315
  request can target data streams, this argument determines whether wildcard
5480
5316
  expressions match hidden data streams. Supports comma-separated values, such
5481
- as `open,hidden`. Valid values are: `all`, `open`, `closed`, `hidden`, `none`.
5317
+ as `open,hidden`.
5482
5318
  :param ignore_unavailable: If `false`, the request returns an error if it targets
5483
5319
  a missing or closed index.
5484
5320
  :param local: If `true`, the request retrieves information from the local node
@@ -5590,8 +5426,7 @@ class Elasticsearch(BaseClient):
5590
5426
  :param expand_wildcards: The type of index that wildcard patterns can match.
5591
5427
  If the request can target data streams, this argument determines whether
5592
5428
  wildcard expressions match hidden data streams. Supports comma-separated
5593
- values, such as `open,hidden`. Valid values are: `all`, `open`, `closed`,
5594
- `hidden`, `none`.
5429
+ values, such as `open,hidden`.
5595
5430
  :param explain: If `true`, returns detailed information about score calculation
5596
5431
  as part of each hit. If you specify both this and the `explain` query parameter,
5597
5432
  the API uses only the query parameter.
@@ -5865,7 +5700,8 @@ class Elasticsearch(BaseClient):
5865
5700
  The information is only retrieved for the shard the requested document resides in.
5866
5701
  The term and field statistics are therefore only useful as relative measures whereas the absolute numbers have no meaning in this context.
5867
5702
  By default, when requesting term vectors of artificial documents, a shard to get the statistics from is randomly selected.
5868
- Use <code>routing</code> only to hit a particular shard.</p>
5703
+ Use <code>routing</code> only to hit a particular shard.
5704
+ Refer to the linked documentation for detailed examples of how to use this API.</p>
5869
5705
 
5870
5706
 
5871
5707
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-termvectors>`_
@@ -6036,7 +5872,8 @@ class Elasticsearch(BaseClient):
6036
5872
  </ul>
6037
5873
  <p>The document must still be reindexed, but using this API removes some network roundtrips and reduces chances of version conflicts between the GET and the index operation.</p>
6038
5874
  <p>The <code>_source</code> field must be enabled to use this API.
6039
- In addition to <code>_source</code>, you can access the following variables through the <code>ctx</code> map: <code>_index</code>, <code>_type</code>, <code>_id</code>, <code>_version</code>, <code>_routing</code>, and <code>_now</code> (the current timestamp).</p>
5875
+ In addition to <code>_source</code>, you can access the following variables through the <code>ctx</code> map: <code>_index</code>, <code>_type</code>, <code>_id</code>, <code>_version</code>, <code>_routing</code>, and <code>_now</code> (the current timestamp).
5876
+ For usage examples such as partial updates, upserts, and scripted updates, see the External documentation.</p>
6040
5877
 
6041
5878
 
6042
5879
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-update>`_
@@ -6229,6 +6066,24 @@ class Elasticsearch(BaseClient):
6229
6066
  A bulk update request is performed for each batch of matching documents.
6230
6067
  Any query or update failures cause the update by query request to fail and the failures are shown in the response.
6231
6068
  Any update requests that completed successfully still stick, they are not rolled back.</p>
6069
+ <p><strong>Refreshing shards</strong></p>
6070
+ <p>Specifying the <code>refresh</code> parameter refreshes all shards once the request completes.
6071
+ This is different to the update API's <code>refresh</code> parameter, which causes only the shard
6072
+ that received the request to be refreshed. Unlike the update API, it does not support
6073
+ <code>wait_for</code>.</p>
6074
+ <p><strong>Running update by query asynchronously</strong></p>
6075
+ <p>If the request contains <code>wait_for_completion=false</code>, Elasticsearch
6076
+ performs some preflight checks, launches the request, and returns a
6077
+ <a href="https://www.elastic.co/docs/api/doc/elasticsearch/group/endpoint-tasks">task</a> you can use to cancel or get the status of the task.
6078
+ Elasticsearch creates a record of this task as a document at <code>.tasks/task/${taskId}</code>.</p>
6079
+ <p><strong>Waiting for active shards</strong></p>
6080
+ <p><code>wait_for_active_shards</code> controls how many copies of a shard must be active
6081
+ before proceeding with the request. See <a href="https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-create#operation-create-wait_for_active_shards"><code>wait_for_active_shards</code></a>
6082
+ for details. <code>timeout</code> controls how long each write request waits for unavailable
6083
+ shards to become available. Both work exactly the way they work in the
6084
+ <a href="https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-bulk">Bulk API</a>. Update by query uses scrolled searches, so you can also
6085
+ specify the <code>scroll</code> parameter to control how long it keeps the search context
6086
+ alive, for example <code>?scroll=10m</code>. The default is 5 minutes.</p>
6232
6087
  <p><strong>Throttling update requests</strong></p>
6233
6088
  <p>To control the rate at which update by query issues batches of update operations, you can set <code>requests_per_second</code> to any positive decimal number.
6234
6089
  This pads each batch with a wait time to throttle the rate.
@@ -6263,18 +6118,8 @@ class Elasticsearch(BaseClient):
6263
6118
  <li>Query performance is most efficient when the number of slices is equal to the number of shards in the index or backing index. If that number is large (for example, 500), choose a lower number as too many slices hurts performance. Setting slices higher than the number of shards generally does not improve efficiency and adds overhead.</li>
6264
6119
  <li>Update performance scales linearly across available resources with the number of slices.</li>
6265
6120
  </ul>
6266
- <p>Whether query or update performance dominates the runtime depends on the documents being reindexed and cluster resources.</p>
6267
- <p><strong>Update the document source</strong></p>
6268
- <p>Update by query supports scripts to update the document source.
6269
- As with the update API, you can set <code>ctx.op</code> to change the operation that is performed.</p>
6270
- <p>Set <code>ctx.op = &quot;noop&quot;</code> if your script decides that it doesn't have to make any changes.
6271
- The update by query operation skips updating the document and increments the <code>noop</code> counter.</p>
6272
- <p>Set <code>ctx.op = &quot;delete&quot;</code> if your script decides that the document should be deleted.
6273
- The update by query operation deletes the document and increments the <code>deleted</code> counter.</p>
6274
- <p>Update by query supports only <code>index</code>, <code>noop</code>, and <code>delete</code>.
6275
- Setting <code>ctx.op</code> to anything else is an error.
6276
- Setting any other field in <code>ctx</code> is an error.
6277
- This API enables you to only modify the source of matching documents; you cannot move them.</p>
6121
+ <p>Whether query or update performance dominates the runtime depends on the documents being reindexed and cluster resources.
6122
+ Refer to the linked documentation for examples of how to update documents using the <code>_update_by_query</code> API:</p>
6278
6123
 
6279
6124
 
6280
6125
  `<https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation/operation-update-by-query>`_
@@ -6302,8 +6147,7 @@ class Elasticsearch(BaseClient):
6302
6147
  :param expand_wildcards: The type of index that wildcard patterns can match.
6303
6148
  If the request can target data streams, this argument determines whether
6304
6149
  wildcard expressions match hidden data streams. It supports comma-separated
6305
- values, such as `open,hidden`. Valid values are: `all`, `open`, `closed`,
6306
- `hidden`, `none`.
6150
+ values, such as `open,hidden`.
6307
6151
  :param from_: Skips the specified number of documents.
6308
6152
  :param ignore_unavailable: If `false`, the request returns an error if it targets
6309
6153
  a missing or closed index.