elasticsearch 8.18.1__py3-none-any.whl → 8.19.1__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 (102) hide show
  1. elasticsearch/_async/client/__init__.py +68 -82
  2. elasticsearch/_async/client/async_search.py +5 -9
  3. elasticsearch/_async/client/autoscaling.py +4 -4
  4. elasticsearch/_async/client/cat.py +744 -75
  5. elasticsearch/_async/client/ccr.py +13 -13
  6. elasticsearch/_async/client/cluster.py +38 -24
  7. elasticsearch/_async/client/connector.py +30 -30
  8. elasticsearch/_async/client/dangling_indices.py +3 -3
  9. elasticsearch/_async/client/enrich.py +5 -5
  10. elasticsearch/_async/client/eql.py +13 -5
  11. elasticsearch/_async/client/esql.py +54 -15
  12. elasticsearch/_async/client/features.py +2 -2
  13. elasticsearch/_async/client/fleet.py +13 -13
  14. elasticsearch/_async/client/graph.py +1 -1
  15. elasticsearch/_async/client/ilm.py +11 -11
  16. elasticsearch/_async/client/indices.py +132 -83
  17. elasticsearch/_async/client/inference.py +519 -112
  18. elasticsearch/_async/client/ingest.py +9 -16
  19. elasticsearch/_async/client/license.py +10 -10
  20. elasticsearch/_async/client/logstash.py +3 -3
  21. elasticsearch/_async/client/migration.py +3 -3
  22. elasticsearch/_async/client/ml.py +76 -88
  23. elasticsearch/_async/client/nodes.py +9 -8
  24. elasticsearch/_async/client/query_rules.py +8 -8
  25. elasticsearch/_async/client/rollup.py +8 -8
  26. elasticsearch/_async/client/search_application.py +10 -10
  27. elasticsearch/_async/client/searchable_snapshots.py +4 -4
  28. elasticsearch/_async/client/security.py +72 -80
  29. elasticsearch/_async/client/shutdown.py +3 -3
  30. elasticsearch/_async/client/simulate.py +1 -1
  31. elasticsearch/_async/client/slm.py +9 -9
  32. elasticsearch/_async/client/snapshot.py +286 -130
  33. elasticsearch/_async/client/sql.py +7 -7
  34. elasticsearch/_async/client/ssl.py +1 -1
  35. elasticsearch/_async/client/synonyms.py +7 -7
  36. elasticsearch/_async/client/tasks.py +3 -3
  37. elasticsearch/_async/client/text_structure.py +4 -4
  38. elasticsearch/_async/client/transform.py +69 -9
  39. elasticsearch/_async/client/xpack.py +1 -1
  40. elasticsearch/_sync/client/__init__.py +68 -82
  41. elasticsearch/_sync/client/async_search.py +5 -9
  42. elasticsearch/_sync/client/autoscaling.py +4 -4
  43. elasticsearch/_sync/client/cat.py +744 -75
  44. elasticsearch/_sync/client/ccr.py +13 -13
  45. elasticsearch/_sync/client/cluster.py +38 -24
  46. elasticsearch/_sync/client/connector.py +30 -30
  47. elasticsearch/_sync/client/dangling_indices.py +3 -3
  48. elasticsearch/_sync/client/enrich.py +5 -5
  49. elasticsearch/_sync/client/eql.py +13 -5
  50. elasticsearch/_sync/client/esql.py +54 -15
  51. elasticsearch/_sync/client/features.py +2 -2
  52. elasticsearch/_sync/client/fleet.py +13 -13
  53. elasticsearch/_sync/client/graph.py +1 -1
  54. elasticsearch/_sync/client/ilm.py +11 -11
  55. elasticsearch/_sync/client/indices.py +132 -83
  56. elasticsearch/_sync/client/inference.py +519 -112
  57. elasticsearch/_sync/client/ingest.py +9 -16
  58. elasticsearch/_sync/client/license.py +10 -10
  59. elasticsearch/_sync/client/logstash.py +3 -3
  60. elasticsearch/_sync/client/migration.py +3 -3
  61. elasticsearch/_sync/client/ml.py +76 -88
  62. elasticsearch/_sync/client/nodes.py +9 -8
  63. elasticsearch/_sync/client/query_rules.py +8 -8
  64. elasticsearch/_sync/client/rollup.py +8 -8
  65. elasticsearch/_sync/client/search_application.py +10 -10
  66. elasticsearch/_sync/client/searchable_snapshots.py +4 -4
  67. elasticsearch/_sync/client/security.py +72 -80
  68. elasticsearch/_sync/client/shutdown.py +3 -3
  69. elasticsearch/_sync/client/simulate.py +1 -1
  70. elasticsearch/_sync/client/slm.py +9 -9
  71. elasticsearch/_sync/client/snapshot.py +286 -130
  72. elasticsearch/_sync/client/sql.py +7 -7
  73. elasticsearch/_sync/client/ssl.py +1 -1
  74. elasticsearch/_sync/client/synonyms.py +7 -7
  75. elasticsearch/_sync/client/tasks.py +3 -3
  76. elasticsearch/_sync/client/text_structure.py +4 -4
  77. elasticsearch/_sync/client/transform.py +69 -9
  78. elasticsearch/_sync/client/xpack.py +1 -1
  79. elasticsearch/_version.py +1 -1
  80. elasticsearch/compat.py +5 -0
  81. elasticsearch/dsl/__init__.py +2 -1
  82. elasticsearch/dsl/_async/document.py +85 -1
  83. elasticsearch/dsl/_sync/document.py +85 -1
  84. elasticsearch/dsl/aggs.py +22 -3
  85. elasticsearch/dsl/document_base.py +219 -16
  86. elasticsearch/dsl/field.py +272 -48
  87. elasticsearch/dsl/query.py +49 -4
  88. elasticsearch/dsl/response/aggs.py +1 -1
  89. elasticsearch/dsl/types.py +247 -27
  90. elasticsearch/dsl/utils.py +2 -2
  91. elasticsearch/esql/__init__.py +19 -0
  92. elasticsearch/esql/esql.py +1156 -0
  93. elasticsearch/esql/functions.py +1750 -0
  94. elasticsearch/exceptions.py +2 -0
  95. {elasticsearch-8.18.1.dist-info → elasticsearch-8.19.1.dist-info}/METADATA +1 -5
  96. elasticsearch-8.19.1.dist-info/RECORD +164 -0
  97. elasticsearch-8.18.1.dist-info/RECORD +0 -163
  98. elasticsearch-8.18.1.dist-info/licenses/LICENSE.txt +0 -175
  99. elasticsearch-8.18.1.dist-info/licenses/NOTICE.txt +0 -559
  100. {elasticsearch-8.18.1.dist-info → elasticsearch-8.19.1.dist-info}/WHEEL +0 -0
  101. {elasticsearch-8.18.1.dist-info → elasticsearch-8.19.1.dist-info}/licenses/LICENSE +0 -0
  102. {elasticsearch-8.18.1.dist-info → elasticsearch-8.19.1.dist-info}/licenses/NOTICE +0 -0
@@ -44,7 +44,7 @@ class SqlClient(NamespacedClient):
44
44
  <p>Clear an SQL search cursor.</p>
45
45
 
46
46
 
47
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/clear-sql-cursor-api.html>`_
47
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/clear-sql-cursor-api.html>`_
48
48
 
49
49
  :param cursor: Cursor to clear.
50
50
  """
@@ -99,7 +99,7 @@ class SqlClient(NamespacedClient):
99
99
  </ul>
100
100
 
101
101
 
102
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/delete-async-sql-search-api.html>`_
102
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/delete-async-sql-search-api.html>`_
103
103
 
104
104
  :param id: The identifier for the search.
105
105
  """
@@ -150,7 +150,7 @@ class SqlClient(NamespacedClient):
150
150
  <p>If the Elasticsearch security features are enabled, only the user who first submitted the SQL search can retrieve the search using this API.</p>
151
151
 
152
152
 
153
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/get-async-sql-search-api.html>`_
153
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/get-async-sql-search-api.html>`_
154
154
 
155
155
  :param id: The identifier for the search.
156
156
  :param delimiter: The separator for CSV results. The API supports this parameter
@@ -212,7 +212,7 @@ class SqlClient(NamespacedClient):
212
212
  Get the current status of an async SQL search or a stored synchronous SQL search.</p>
213
213
 
214
214
 
215
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/get-async-sql-search-status-api.html>`_
215
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/get-async-sql-search-status-api.html>`_
216
216
 
217
217
  :param id: The identifier for the search.
218
218
  """
@@ -283,7 +283,7 @@ class SqlClient(NamespacedClient):
283
283
  keep_alive: t.Optional[t.Union[str, t.Literal[-1], t.Literal[0]]] = None,
284
284
  keep_on_completion: t.Optional[bool] = None,
285
285
  page_timeout: t.Optional[t.Union[str, t.Literal[-1], t.Literal[0]]] = None,
286
- params: t.Optional[t.Mapping[str, t.Any]] = None,
286
+ params: t.Optional[t.Sequence[t.Any]] = None,
287
287
  pretty: t.Optional[bool] = None,
288
288
  query: t.Optional[str] = None,
289
289
  request_timeout: t.Optional[t.Union[str, t.Literal[-1], t.Literal[0]]] = None,
@@ -301,7 +301,7 @@ class SqlClient(NamespacedClient):
301
301
  Run an SQL request.</p>
302
302
 
303
303
 
304
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/sql-search-api.html>`_
304
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/sql-search-api.html>`_
305
305
 
306
306
  :param allow_partial_search_results: If `true`, the response has partial results
307
307
  when there are shard request timeouts or shard failures. If `false`, the
@@ -427,7 +427,7 @@ class SqlClient(NamespacedClient):
427
427
  It accepts the same request body parameters as the SQL search API, excluding <code>cursor</code>.</p>
428
428
 
429
429
 
430
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/sql-translate-api.html>`_
430
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/sql-translate-api.html>`_
431
431
 
432
432
  :param query: The SQL query to run.
433
433
  :param fetch_size: The maximum number of rows (or entries) to return in one response.
@@ -52,7 +52,7 @@ class SslClient(NamespacedClient):
52
52
  <p>If Elasticsearch is configured to use a keystore or truststore, the API output includes all certificates in that store, even though some of the certificates might not be in active use within the cluster.</p>
53
53
 
54
54
 
55
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/security-api-ssl.html>`_
55
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-ssl.html>`_
56
56
  """
57
57
  __path_parts: t.Dict[str, str] = {}
58
58
  __path = "/_ssl/certificates"
@@ -53,7 +53,7 @@ class SynonymsClient(NamespacedClient):
53
53
  When the synonyms set is not used in analyzers, you will be able to delete it.</p>
54
54
 
55
55
 
56
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/delete-synonyms-set.html>`_
56
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/delete-synonyms-set.html>`_
57
57
 
58
58
  :param id: The synonyms set identifier to delete.
59
59
  """
@@ -98,7 +98,7 @@ class SynonymsClient(NamespacedClient):
98
98
  Delete a synonym rule from a synonym set.</p>
99
99
 
100
100
 
101
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/delete-synonym-rule.html>`_
101
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/delete-synonym-rule.html>`_
102
102
 
103
103
  :param set_id: The ID of the synonym set to update.
104
104
  :param rule_id: The ID of the synonym rule to delete.
@@ -151,7 +151,7 @@ class SynonymsClient(NamespacedClient):
151
151
  <p>Get a synonym set.</p>
152
152
 
153
153
 
154
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/get-synonyms-set.html>`_
154
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/get-synonyms-set.html>`_
155
155
 
156
156
  :param id: The synonyms set identifier to retrieve.
157
157
  :param from_: The starting offset for query rules to retrieve.
@@ -202,7 +202,7 @@ class SynonymsClient(NamespacedClient):
202
202
  Get a synonym rule from a synonym set.</p>
203
203
 
204
204
 
205
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/get-synonym-rule.html>`_
205
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/get-synonym-rule.html>`_
206
206
 
207
207
  :param set_id: The ID of the synonym set to retrieve the synonym rule from.
208
208
  :param rule_id: The ID of the synonym rule to retrieve.
@@ -255,7 +255,7 @@ class SynonymsClient(NamespacedClient):
255
255
  Get a summary of all defined synonym sets.</p>
256
256
 
257
257
 
258
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/get-synonyms-set.html>`_
258
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/get-synonyms-set.html>`_
259
259
 
260
260
  :param from_: The starting offset for synonyms sets to retrieve.
261
261
  :param size: The maximum number of synonyms sets to retrieve.
@@ -311,7 +311,7 @@ class SynonymsClient(NamespacedClient):
311
311
  This is equivalent to invoking the reload search analyzers API for all indices that use the synonyms set.</p>
312
312
 
313
313
 
314
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/put-synonyms-set.html>`_
314
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/put-synonyms-set.html>`_
315
315
 
316
316
  :param id: The ID of the synonyms set to be created or updated.
317
317
  :param synonyms_set: The synonym rules definitions for the synonyms set.
@@ -370,7 +370,7 @@ class SynonymsClient(NamespacedClient):
370
370
  <p>When you update a synonym rule, all analyzers using the synonyms set will be reloaded automatically to reflect the new rule.</p>
371
371
 
372
372
 
373
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/put-synonym-rule.html>`_
373
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/put-synonym-rule.html>`_
374
374
 
375
375
  :param set_id: The ID of the synonym set.
376
376
  :param rule_id: The ID of the synonym rule to be updated or created.
@@ -60,7 +60,7 @@ class TasksClient(NamespacedClient):
60
60
  You can also use the node hot threads API to obtain detailed information about the work the system is doing instead of completing the cancelled task.</p>
61
61
 
62
62
 
63
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/tasks.html>`_
63
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/tasks.html>`_
64
64
 
65
65
  :param task_id: The task identifier.
66
66
  :param actions: A comma-separated list or wildcard expression of actions that
@@ -128,7 +128,7 @@ class TasksClient(NamespacedClient):
128
128
  <p>If the task identifier is not found, a 404 response code indicates that there are no resources that match the request.</p>
129
129
 
130
130
 
131
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/tasks.html>`_
131
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/tasks.html>`_
132
132
 
133
133
  :param task_id: The task identifier.
134
134
  :param timeout: The period to wait for a response. If no response is received
@@ -238,7 +238,7 @@ class TasksClient(NamespacedClient):
238
238
  The <code>X-Opaque-Id</code> in the children <code>headers</code> is the child task of the task that was initiated by the REST request.</p>
239
239
 
240
240
 
241
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/tasks.html>`_
241
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/tasks.html>`_
242
242
 
243
243
  :param actions: A comma-separated list or wildcard expression of actions used
244
244
  to limit the request. For example, you can use `cluser:*` to retrieve all
@@ -72,7 +72,7 @@ class TextStructureClient(NamespacedClient):
72
72
  It helps determine why the returned structure was chosen.</p>
73
73
 
74
74
 
75
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/find-field-structure.html>`_
75
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/find-field-structure.html>`_
76
76
 
77
77
  :param field: The field that should be analyzed.
78
78
  :param index: The name of the index that contains the analyzed field.
@@ -259,7 +259,7 @@ class TextStructureClient(NamespacedClient):
259
259
  It helps determine why the returned structure was chosen.</p>
260
260
 
261
261
 
262
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/find-message-structure.html>`_
262
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/find-message-structure.html>`_
263
263
 
264
264
  :param messages: The list of messages you want to analyze.
265
265
  :param column_names: If the format is `delimited`, you can specify the column
@@ -433,7 +433,7 @@ class TextStructureClient(NamespacedClient):
433
433
  However, you can optionally override some of the decisions about the text structure by specifying one or more query parameters.</p>
434
434
 
435
435
 
436
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/find-structure.html>`_
436
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/find-structure.html>`_
437
437
 
438
438
  :param text_files:
439
439
  :param charset: The text's character set. It must be a character set that is
@@ -620,7 +620,7 @@ class TextStructureClient(NamespacedClient):
620
620
  The API indicates whether the lines match the pattern together with the offsets and lengths of the matched substrings.</p>
621
621
 
622
622
 
623
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/test-grok-pattern.html>`_
623
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/test-grok-pattern.html>`_
624
624
 
625
625
  :param grok_pattern: The Grok pattern to run on the text.
626
626
  :param text: The lines of text to run the Grok pattern on.
@@ -44,7 +44,7 @@ class TransformClient(NamespacedClient):
44
44
  <p>Delete a transform.</p>
45
45
 
46
46
 
47
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/delete-transform.html>`_
47
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/delete-transform.html>`_
48
48
 
49
49
  :param transform_id: Identifier for the transform.
50
50
  :param delete_dest_index: If this value is true, the destination index is deleted
@@ -108,7 +108,7 @@ class TransformClient(NamespacedClient):
108
108
  Get configuration information for transforms.</p>
109
109
 
110
110
 
111
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/get-transform.html>`_
111
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/get-transform.html>`_
112
112
 
113
113
  :param transform_id: Identifier for the transform. It can be a transform identifier
114
114
  or a wildcard expression. You can get information for all transforms by using
@@ -181,7 +181,7 @@ class TransformClient(NamespacedClient):
181
181
  <p>Get usage information for transforms.</p>
182
182
 
183
183
 
184
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/get-transform-stats.html>`_
184
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/get-transform-stats.html>`_
185
185
 
186
186
  :param transform_id: Identifier for the transform. It can be a transform identifier
187
187
  or a wildcard expression. You can get information for all transforms by using
@@ -269,7 +269,7 @@ class TransformClient(NamespacedClient):
269
269
  types of the source index and the transform aggregations.</p>
270
270
 
271
271
 
272
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/preview-transform.html>`_
272
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/preview-transform.html>`_
273
273
 
274
274
  :param transform_id: Identifier for the transform to preview. If you specify
275
275
  this path parameter, you cannot provide transform configuration details in
@@ -406,7 +406,7 @@ class TransformClient(NamespacedClient):
406
406
  give users any privileges on <code>.data-frame-internal*</code> indices.</p>
407
407
 
408
408
 
409
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/put-transform.html>`_
409
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/put-transform.html>`_
410
410
 
411
411
  :param transform_id: Identifier for the transform. This identifier can contain
412
412
  lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores.
@@ -512,7 +512,7 @@ class TransformClient(NamespacedClient):
512
512
  If the destination index was created by the transform, it is deleted.</p>
513
513
 
514
514
 
515
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/reset-transform.html>`_
515
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/reset-transform.html>`_
516
516
 
517
517
  :param transform_id: Identifier for the transform. This identifier can contain
518
518
  lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores.
@@ -572,7 +572,7 @@ class TransformClient(NamespacedClient):
572
572
  is called again in the meantime.</p>
573
573
 
574
574
 
575
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/schedule-now-transform.html>`_
575
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/schedule-now-transform.html>`_
576
576
 
577
577
  :param transform_id: Identifier for the transform.
578
578
  :param timeout: Controls the time to wait for the scheduling to take place
@@ -602,6 +602,66 @@ class TransformClient(NamespacedClient):
602
602
  path_parts=__path_parts,
603
603
  )
604
604
 
605
+ @_rewrite_parameters()
606
+ def set_upgrade_mode(
607
+ self,
608
+ *,
609
+ enabled: t.Optional[bool] = None,
610
+ error_trace: t.Optional[bool] = None,
611
+ filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
612
+ human: t.Optional[bool] = None,
613
+ pretty: t.Optional[bool] = None,
614
+ timeout: t.Optional[t.Union[str, t.Literal[-1], t.Literal[0]]] = None,
615
+ ) -> ObjectApiResponse[t.Any]:
616
+ """
617
+ .. raw:: html
618
+
619
+ <p>Set upgrade_mode for transform indices.
620
+ Sets a cluster wide upgrade_mode setting that prepares transform
621
+ indices for an upgrade.
622
+ When upgrading your cluster, in some circumstances you must restart your
623
+ nodes and reindex your transform indices. In those circumstances,
624
+ there must be no transforms running. You can close the transforms,
625
+ do the upgrade, then open all the transforms again. Alternatively,
626
+ you can use this API to temporarily halt tasks associated with the transforms
627
+ and prevent new transforms from opening. You can also use this API
628
+ during upgrades that do not require you to reindex your transform
629
+ indices, though stopping transforms is not a requirement in that case.
630
+ You can see the current value for the upgrade_mode setting by using the get
631
+ transform info API.</p>
632
+
633
+
634
+ `<https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-transform-set-upgrade-mode>`_
635
+
636
+ :param enabled: When `true`, it enables `upgrade_mode` which temporarily halts
637
+ all transform tasks and prohibits new transform tasks from starting.
638
+ :param timeout: The time to wait for the request to be completed.
639
+ """
640
+ __path_parts: t.Dict[str, str] = {}
641
+ __path = "/_transform/set_upgrade_mode"
642
+ __query: t.Dict[str, t.Any] = {}
643
+ if enabled is not None:
644
+ __query["enabled"] = enabled
645
+ if error_trace is not None:
646
+ __query["error_trace"] = error_trace
647
+ if filter_path is not None:
648
+ __query["filter_path"] = filter_path
649
+ if human is not None:
650
+ __query["human"] = human
651
+ if pretty is not None:
652
+ __query["pretty"] = pretty
653
+ if timeout is not None:
654
+ __query["timeout"] = timeout
655
+ __headers = {"accept": "application/json"}
656
+ return self.perform_request( # type: ignore[return-value]
657
+ "POST",
658
+ __path,
659
+ params=__query,
660
+ headers=__headers,
661
+ endpoint_id="transform.set_upgrade_mode",
662
+ path_parts=__path_parts,
663
+ )
664
+
605
665
  @_rewrite_parameters(
606
666
  parameter_aliases={"from": "from_"},
607
667
  )
@@ -635,7 +695,7 @@ class TransformClient(NamespacedClient):
635
695
  destination indices, the transform fails when it attempts unauthorized operations.</p>
636
696
 
637
697
 
638
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/start-transform.html>`_
698
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/start-transform.html>`_
639
699
 
640
700
  :param transform_id: Identifier for the transform.
641
701
  :param from_: Restricts the set of transformed entities to those changed after
@@ -693,7 +753,7 @@ class TransformClient(NamespacedClient):
693
753
  Stops one or more transforms.</p>
694
754
 
695
755
 
696
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/stop-transform.html>`_
756
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/stop-transform.html>`_
697
757
 
698
758
  :param transform_id: Identifier for the transform. To stop multiple transforms,
699
759
  use a comma-separated list or a wildcard expression. To stop all transforms,
@@ -54,7 +54,7 @@ class XPackClient(NamespacedClient):
54
54
  </ul>
55
55
 
56
56
 
57
- `<https://www.elastic.co/guide/en/elasticsearch/reference/8.18/info-api.html>`_
57
+ `<https://www.elastic.co/guide/en/elasticsearch/reference/8.19/info-api.html>`_
58
58
 
59
59
  :param accept_enterprise: If this param is used it must be set to true
60
60
  :param categories: A comma-separated list of the information categories to include
elasticsearch/_version.py CHANGED
@@ -15,4 +15,4 @@
15
15
  # specific language governing permissions and limitations
16
16
  # under the License.
17
17
 
18
- __versionstr__ = "8.18.1"
18
+ __versionstr__ = "8.19.1"
elasticsearch/compat.py CHANGED
@@ -16,12 +16,15 @@
16
16
  # under the License.
17
17
 
18
18
  import inspect
19
+ import os
19
20
  import sys
20
21
  from pathlib import Path
21
22
  from typing import Tuple, Type, Union
22
23
 
23
24
  string_types: Tuple[Type[str], Type[bytes]] = (str, bytes)
24
25
 
26
+ DISABLE_WARN_STACKLEVEL_ENV_VAR = "DISABLE_WARN_STACKLEVEL"
27
+
25
28
 
26
29
  def to_str(x: Union[str, bytes], encoding: str = "ascii") -> str:
27
30
  if not isinstance(x, str):
@@ -37,6 +40,8 @@ def to_bytes(x: Union[str, bytes], encoding: str = "ascii") -> bytes:
37
40
 
38
41
  def warn_stacklevel() -> int:
39
42
  """Dynamically determine warning stacklevel for warnings based on the call stack"""
43
+ if os.environ.get(DISABLE_WARN_STACKLEVEL_ENV_VAR) in ["1", "true", "True"]:
44
+ return 0
40
45
  try:
41
46
  # Grab the root module from the current module '__name__'
42
47
  module_name = __name__.partition(".")[0]
@@ -19,7 +19,7 @@ from . import async_connections, connections
19
19
  from .aggs import A, Agg
20
20
  from .analysis import analyzer, char_filter, normalizer, token_filter, tokenizer
21
21
  from .document import AsyncDocument, Document
22
- from .document_base import InnerDoc, M, MetaField, mapped_field
22
+ from .document_base import E, InnerDoc, M, MetaField, mapped_field
23
23
  from .exceptions import (
24
24
  ElasticsearchDslException,
25
25
  IllegalOperation,
@@ -135,6 +135,7 @@ __all__ = [
135
135
  "Double",
136
136
  "DoubleRange",
137
137
  "DslBase",
138
+ "E",
138
139
  "ElasticsearchDslException",
139
140
  "EmptySearch",
140
141
  "Facet",
@@ -20,6 +20,7 @@ from typing import (
20
20
  TYPE_CHECKING,
21
21
  Any,
22
22
  AsyncIterable,
23
+ AsyncIterator,
23
24
  Dict,
24
25
  List,
25
26
  Optional,
@@ -42,6 +43,7 @@ from .search import AsyncSearch
42
43
 
43
44
  if TYPE_CHECKING:
44
45
  from elasticsearch import AsyncElasticsearch
46
+ from elasticsearch.esql.esql import ESQLBase
45
47
 
46
48
 
47
49
  class AsyncIndexMeta(DocumentMeta):
@@ -96,7 +98,7 @@ class AsyncDocument(DocumentBase, metaclass=AsyncIndexMeta):
96
98
 
97
99
  @classmethod
98
100
  def _get_using(cls, using: Optional[AsyncUsingType] = None) -> AsyncUsingType:
99
- return cast(AsyncUsingType, using or cls._index._using)
101
+ return using or cls._index._using
100
102
 
101
103
  @classmethod
102
104
  def _get_connection(
@@ -520,3 +522,85 @@ class AsyncDocument(DocumentBase, metaclass=AsyncIndexMeta):
520
522
  return action
521
523
 
522
524
  return await async_bulk(es, Generate(actions), **kwargs)
525
+
526
+ @classmethod
527
+ async def esql_execute(
528
+ cls,
529
+ query: "ESQLBase",
530
+ return_additional: bool = False,
531
+ ignore_missing_fields: bool = False,
532
+ using: Optional[AsyncUsingType] = None,
533
+ **kwargs: Any,
534
+ ) -> AsyncIterator[Union[Self, Tuple[Self, Dict[str, Any]]]]:
535
+ """
536
+ Execute the given ES|QL query and return an iterator of 2-element tuples,
537
+ where the first element is an instance of this ``Document`` and the
538
+ second a dictionary with any remaining columns requested in the query.
539
+
540
+ :arg query: an ES|QL query object created with the ``esql_from()`` method.
541
+ :arg return_additional: if ``False`` (the default), this method returns
542
+ document objects. If set to ``True``, the method returns tuples with
543
+ a document in the first element and a dictionary with any additional
544
+ columns returned by the query in the second element.
545
+ :arg ignore_missing_fields: if ``False`` (the default), all the fields of
546
+ the document must be present in the query, or else an exception is
547
+ raised. Set to ``True`` to allow missing fields, which will result in
548
+ partially initialized document objects.
549
+ :arg using: connection alias to use, defaults to ``'default'``
550
+ :arg kwargs: additional options for the ``client.esql.query()`` function.
551
+ """
552
+ es = cls._get_connection(using)
553
+ response = await es.esql.query(query=str(query), **kwargs)
554
+ query_columns = [col["name"] for col in response.body.get("columns", [])]
555
+
556
+ # Here we get the list of columns defined in the document, which are the
557
+ # columns that we will take from each result to assemble the document
558
+ # object.
559
+ # When `for_esql=False` is passed below by default, the list will include
560
+ # nested fields, which ES|QL does not return, causing an error. When passing
561
+ # `ignore_missing_fields=True` the list will be generated with
562
+ # `for_esql=True`, so the error will not occur, but the documents will
563
+ # not have any Nested objects in them.
564
+ doc_fields = set(cls._get_field_names(for_esql=ignore_missing_fields))
565
+ if not ignore_missing_fields and not doc_fields.issubset(set(query_columns)):
566
+ raise ValueError(
567
+ f"Not all fields of {cls.__name__} were returned by the query. "
568
+ "Make sure your document does not use Nested fields, which are "
569
+ "currently not supported in ES|QL. To force the query to be "
570
+ "evaluated in spite of the missing fields, pass set the "
571
+ "ignore_missing_fields=True option in the esql_execute() call."
572
+ )
573
+ non_doc_fields: set[str] = set(query_columns) - doc_fields - {"_id"}
574
+ index_id = query_columns.index("_id")
575
+
576
+ results = response.body.get("values", [])
577
+ for column_values in results:
578
+ # create a dictionary with all the document fields, expanding the
579
+ # dot notation returned by ES|QL into the recursive dictionaries
580
+ # used by Document.from_dict()
581
+ doc_dict: Dict[str, Any] = {}
582
+ for col, val in zip(query_columns, column_values):
583
+ if col in doc_fields:
584
+ cols = col.split(".")
585
+ d = doc_dict
586
+ for c in cols[:-1]:
587
+ if c not in d:
588
+ d[c] = {}
589
+ d = d[c]
590
+ d[cols[-1]] = val
591
+
592
+ # create the document instance
593
+ obj = cls(meta={"_id": column_values[index_id]})
594
+ obj._from_dict(doc_dict)
595
+
596
+ if return_additional:
597
+ # build a dict with any other values included in the response
598
+ other = {
599
+ col: val
600
+ for col, val in zip(query_columns, column_values)
601
+ if col in non_doc_fields
602
+ }
603
+
604
+ yield obj, other
605
+ else:
606
+ yield obj
@@ -21,6 +21,7 @@ from typing import (
21
21
  Any,
22
22
  Dict,
23
23
  Iterable,
24
+ Iterator,
24
25
  List,
25
26
  Optional,
26
27
  Tuple,
@@ -42,6 +43,7 @@ from .search import Search
42
43
 
43
44
  if TYPE_CHECKING:
44
45
  from elasticsearch import Elasticsearch
46
+ from elasticsearch.esql.esql import ESQLBase
45
47
 
46
48
 
47
49
  class IndexMeta(DocumentMeta):
@@ -92,7 +94,7 @@ class Document(DocumentBase, metaclass=IndexMeta):
92
94
 
93
95
  @classmethod
94
96
  def _get_using(cls, using: Optional[UsingType] = None) -> UsingType:
95
- return cast(UsingType, using or cls._index._using)
97
+ return using or cls._index._using
96
98
 
97
99
  @classmethod
98
100
  def _get_connection(cls, using: Optional[UsingType] = None) -> "Elasticsearch":
@@ -512,3 +514,85 @@ class Document(DocumentBase, metaclass=IndexMeta):
512
514
  return action
513
515
 
514
516
  return bulk(es, Generate(actions), **kwargs)
517
+
518
+ @classmethod
519
+ def esql_execute(
520
+ cls,
521
+ query: "ESQLBase",
522
+ return_additional: bool = False,
523
+ ignore_missing_fields: bool = False,
524
+ using: Optional[UsingType] = None,
525
+ **kwargs: Any,
526
+ ) -> Iterator[Union[Self, Tuple[Self, Dict[str, Any]]]]:
527
+ """
528
+ Execute the given ES|QL query and return an iterator of 2-element tuples,
529
+ where the first element is an instance of this ``Document`` and the
530
+ second a dictionary with any remaining columns requested in the query.
531
+
532
+ :arg query: an ES|QL query object created with the ``esql_from()`` method.
533
+ :arg return_additional: if ``False`` (the default), this method returns
534
+ document objects. If set to ``True``, the method returns tuples with
535
+ a document in the first element and a dictionary with any additional
536
+ columns returned by the query in the second element.
537
+ :arg ignore_missing_fields: if ``False`` (the default), all the fields of
538
+ the document must be present in the query, or else an exception is
539
+ raised. Set to ``True`` to allow missing fields, which will result in
540
+ partially initialized document objects.
541
+ :arg using: connection alias to use, defaults to ``'default'``
542
+ :arg kwargs: additional options for the ``client.esql.query()`` function.
543
+ """
544
+ es = cls._get_connection(using)
545
+ response = es.esql.query(query=str(query), **kwargs)
546
+ query_columns = [col["name"] for col in response.body.get("columns", [])]
547
+
548
+ # Here we get the list of columns defined in the document, which are the
549
+ # columns that we will take from each result to assemble the document
550
+ # object.
551
+ # When `for_esql=False` is passed below by default, the list will include
552
+ # nested fields, which ES|QL does not return, causing an error. When passing
553
+ # `ignore_missing_fields=True` the list will be generated with
554
+ # `for_esql=True`, so the error will not occur, but the documents will
555
+ # not have any Nested objects in them.
556
+ doc_fields = set(cls._get_field_names(for_esql=ignore_missing_fields))
557
+ if not ignore_missing_fields and not doc_fields.issubset(set(query_columns)):
558
+ raise ValueError(
559
+ f"Not all fields of {cls.__name__} were returned by the query. "
560
+ "Make sure your document does not use Nested fields, which are "
561
+ "currently not supported in ES|QL. To force the query to be "
562
+ "evaluated in spite of the missing fields, pass set the "
563
+ "ignore_missing_fields=True option in the esql_execute() call."
564
+ )
565
+ non_doc_fields: set[str] = set(query_columns) - doc_fields - {"_id"}
566
+ index_id = query_columns.index("_id")
567
+
568
+ results = response.body.get("values", [])
569
+ for column_values in results:
570
+ # create a dictionary with all the document fields, expanding the
571
+ # dot notation returned by ES|QL into the recursive dictionaries
572
+ # used by Document.from_dict()
573
+ doc_dict: Dict[str, Any] = {}
574
+ for col, val in zip(query_columns, column_values):
575
+ if col in doc_fields:
576
+ cols = col.split(".")
577
+ d = doc_dict
578
+ for c in cols[:-1]:
579
+ if c not in d:
580
+ d[c] = {}
581
+ d = d[c]
582
+ d[cols[-1]] = val
583
+
584
+ # create the document instance
585
+ obj = cls(meta={"_id": column_values[index_id]})
586
+ obj._from_dict(doc_dict)
587
+
588
+ if return_additional:
589
+ # build a dict with any other values included in the response
590
+ other = {
591
+ col: val
592
+ for col, val in zip(query_columns, column_values)
593
+ if col in non_doc_fields
594
+ }
595
+
596
+ yield obj, other
597
+ else:
598
+ yield obj