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.
- elasticsearch/_async/client/__init__.py +68 -82
- elasticsearch/_async/client/async_search.py +5 -9
- elasticsearch/_async/client/autoscaling.py +4 -4
- elasticsearch/_async/client/cat.py +744 -75
- elasticsearch/_async/client/ccr.py +13 -13
- elasticsearch/_async/client/cluster.py +38 -24
- elasticsearch/_async/client/connector.py +30 -30
- elasticsearch/_async/client/dangling_indices.py +3 -3
- elasticsearch/_async/client/enrich.py +5 -5
- elasticsearch/_async/client/eql.py +13 -5
- elasticsearch/_async/client/esql.py +54 -15
- elasticsearch/_async/client/features.py +2 -2
- elasticsearch/_async/client/fleet.py +13 -13
- elasticsearch/_async/client/graph.py +1 -1
- elasticsearch/_async/client/ilm.py +11 -11
- elasticsearch/_async/client/indices.py +132 -83
- elasticsearch/_async/client/inference.py +519 -112
- elasticsearch/_async/client/ingest.py +9 -16
- elasticsearch/_async/client/license.py +10 -10
- elasticsearch/_async/client/logstash.py +3 -3
- elasticsearch/_async/client/migration.py +3 -3
- elasticsearch/_async/client/ml.py +76 -88
- elasticsearch/_async/client/nodes.py +9 -8
- elasticsearch/_async/client/query_rules.py +8 -8
- elasticsearch/_async/client/rollup.py +8 -8
- elasticsearch/_async/client/search_application.py +10 -10
- elasticsearch/_async/client/searchable_snapshots.py +4 -4
- elasticsearch/_async/client/security.py +72 -80
- elasticsearch/_async/client/shutdown.py +3 -3
- elasticsearch/_async/client/simulate.py +1 -1
- elasticsearch/_async/client/slm.py +9 -9
- elasticsearch/_async/client/snapshot.py +286 -130
- elasticsearch/_async/client/sql.py +7 -7
- elasticsearch/_async/client/ssl.py +1 -1
- elasticsearch/_async/client/synonyms.py +7 -7
- elasticsearch/_async/client/tasks.py +3 -3
- elasticsearch/_async/client/text_structure.py +4 -4
- elasticsearch/_async/client/transform.py +69 -9
- elasticsearch/_async/client/xpack.py +1 -1
- elasticsearch/_sync/client/__init__.py +68 -82
- elasticsearch/_sync/client/async_search.py +5 -9
- elasticsearch/_sync/client/autoscaling.py +4 -4
- elasticsearch/_sync/client/cat.py +744 -75
- elasticsearch/_sync/client/ccr.py +13 -13
- elasticsearch/_sync/client/cluster.py +38 -24
- elasticsearch/_sync/client/connector.py +30 -30
- elasticsearch/_sync/client/dangling_indices.py +3 -3
- elasticsearch/_sync/client/enrich.py +5 -5
- elasticsearch/_sync/client/eql.py +13 -5
- elasticsearch/_sync/client/esql.py +54 -15
- elasticsearch/_sync/client/features.py +2 -2
- elasticsearch/_sync/client/fleet.py +13 -13
- elasticsearch/_sync/client/graph.py +1 -1
- elasticsearch/_sync/client/ilm.py +11 -11
- elasticsearch/_sync/client/indices.py +132 -83
- elasticsearch/_sync/client/inference.py +519 -112
- elasticsearch/_sync/client/ingest.py +9 -16
- elasticsearch/_sync/client/license.py +10 -10
- elasticsearch/_sync/client/logstash.py +3 -3
- elasticsearch/_sync/client/migration.py +3 -3
- elasticsearch/_sync/client/ml.py +76 -88
- elasticsearch/_sync/client/nodes.py +9 -8
- elasticsearch/_sync/client/query_rules.py +8 -8
- elasticsearch/_sync/client/rollup.py +8 -8
- elasticsearch/_sync/client/search_application.py +10 -10
- elasticsearch/_sync/client/searchable_snapshots.py +4 -4
- elasticsearch/_sync/client/security.py +72 -80
- elasticsearch/_sync/client/shutdown.py +3 -3
- elasticsearch/_sync/client/simulate.py +1 -1
- elasticsearch/_sync/client/slm.py +9 -9
- elasticsearch/_sync/client/snapshot.py +286 -130
- elasticsearch/_sync/client/sql.py +7 -7
- elasticsearch/_sync/client/ssl.py +1 -1
- elasticsearch/_sync/client/synonyms.py +7 -7
- elasticsearch/_sync/client/tasks.py +3 -3
- elasticsearch/_sync/client/text_structure.py +4 -4
- elasticsearch/_sync/client/transform.py +69 -9
- elasticsearch/_sync/client/xpack.py +1 -1
- elasticsearch/_version.py +1 -1
- elasticsearch/compat.py +5 -0
- elasticsearch/dsl/__init__.py +2 -1
- elasticsearch/dsl/_async/document.py +85 -1
- elasticsearch/dsl/_sync/document.py +85 -1
- elasticsearch/dsl/aggs.py +22 -3
- elasticsearch/dsl/document_base.py +219 -16
- elasticsearch/dsl/field.py +272 -48
- elasticsearch/dsl/query.py +49 -4
- elasticsearch/dsl/response/aggs.py +1 -1
- elasticsearch/dsl/types.py +247 -27
- elasticsearch/dsl/utils.py +2 -2
- elasticsearch/esql/__init__.py +19 -0
- elasticsearch/esql/esql.py +1156 -0
- elasticsearch/esql/functions.py +1750 -0
- elasticsearch/exceptions.py +2 -0
- {elasticsearch-8.18.1.dist-info → elasticsearch-8.19.1.dist-info}/METADATA +1 -5
- elasticsearch-8.19.1.dist-info/RECORD +164 -0
- elasticsearch-8.18.1.dist-info/RECORD +0 -163
- elasticsearch-8.18.1.dist-info/licenses/LICENSE.txt +0 -175
- elasticsearch-8.18.1.dist-info/licenses/NOTICE.txt +0 -559
- {elasticsearch-8.18.1.dist-info → elasticsearch-8.19.1.dist-info}/WHEEL +0 -0
- {elasticsearch-8.18.1.dist-info → elasticsearch-8.19.1.dist-info}/licenses/LICENSE +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
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]
|
elasticsearch/dsl/__init__.py
CHANGED
|
@@ -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
|
|
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
|
|
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
|