elasticsearch 9.2.1__py3-none-any.whl → 9.3.0__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 (55) hide show
  1. elasticsearch/_async/client/__init__.py +44 -40
  2. elasticsearch/_async/client/async_search.py +4 -3
  3. elasticsearch/_async/client/cat.py +163 -8
  4. elasticsearch/_async/client/cluster.py +66 -34
  5. elasticsearch/_async/client/eql.py +7 -6
  6. elasticsearch/_async/client/esql.py +157 -8
  7. elasticsearch/_async/client/fleet.py +1 -1
  8. elasticsearch/_async/client/graph.py +1 -1
  9. elasticsearch/_async/client/indices.py +436 -17
  10. elasticsearch/_async/client/inference.py +299 -9
  11. elasticsearch/_async/client/ml.py +7 -3
  12. elasticsearch/_async/client/nodes.py +167 -5
  13. elasticsearch/_async/client/project.py +9 -1
  14. elasticsearch/_async/client/security.py +26 -3
  15. elasticsearch/_async/client/snapshot.py +1 -1
  16. elasticsearch/_async/client/sql.py +7 -6
  17. elasticsearch/_async/client/streams.py +0 -1
  18. elasticsearch/_async/client/text_structure.py +3 -3
  19. elasticsearch/_sync/client/__init__.py +44 -40
  20. elasticsearch/_sync/client/async_search.py +4 -3
  21. elasticsearch/_sync/client/cat.py +163 -8
  22. elasticsearch/_sync/client/cluster.py +66 -34
  23. elasticsearch/_sync/client/eql.py +7 -6
  24. elasticsearch/_sync/client/esql.py +157 -8
  25. elasticsearch/_sync/client/fleet.py +1 -1
  26. elasticsearch/_sync/client/graph.py +1 -1
  27. elasticsearch/_sync/client/indices.py +436 -17
  28. elasticsearch/_sync/client/inference.py +299 -9
  29. elasticsearch/_sync/client/ml.py +7 -3
  30. elasticsearch/_sync/client/nodes.py +167 -5
  31. elasticsearch/_sync/client/project.py +9 -1
  32. elasticsearch/_sync/client/project_routing.py +264 -0
  33. elasticsearch/_sync/client/security.py +26 -3
  34. elasticsearch/_sync/client/snapshot.py +1 -1
  35. elasticsearch/_sync/client/sql.py +7 -6
  36. elasticsearch/_sync/client/streams.py +0 -1
  37. elasticsearch/_sync/client/text_structure.py +3 -3
  38. elasticsearch/_version.py +2 -2
  39. elasticsearch/dsl/__init__.py +4 -0
  40. elasticsearch/dsl/aggs.py +6 -6
  41. elasticsearch/dsl/field.py +91 -7
  42. elasticsearch/dsl/query.py +2 -2
  43. elasticsearch/dsl/response/__init__.py +2 -0
  44. elasticsearch/dsl/types.py +66 -7
  45. elasticsearch/dsl/utils.py +11 -2
  46. elasticsearch/esql/functions.py +924 -250
  47. elasticsearch/helpers/__init__.py +2 -0
  48. elasticsearch/helpers/actions.py +21 -0
  49. elasticsearch/helpers/vectorstore/_async/vectorstore.py +3 -0
  50. elasticsearch/helpers/vectorstore/_sync/vectorstore.py +3 -0
  51. {elasticsearch-9.2.1.dist-info → elasticsearch-9.3.0.dist-info}/METADATA +2 -1
  52. {elasticsearch-9.2.1.dist-info → elasticsearch-9.3.0.dist-info}/RECORD +55 -54
  53. {elasticsearch-9.2.1.dist-info → elasticsearch-9.3.0.dist-info}/WHEEL +0 -0
  54. {elasticsearch-9.2.1.dist-info → elasticsearch-9.3.0.dist-info}/licenses/LICENSE +0 -0
  55. {elasticsearch-9.2.1.dist-info → elasticsearch-9.3.0.dist-info}/licenses/NOTICE +0 -0
@@ -38,6 +38,7 @@ class ProjectClient(NamespacedClient):
38
38
  filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
39
39
  human: t.Optional[bool] = None,
40
40
  pretty: t.Optional[bool] = None,
41
+ project_routing: t.Optional[str] = None,
41
42
  ) -> ObjectApiResponse[t.Any]:
42
43
  """
43
44
  .. raw:: html
@@ -45,6 +46,11 @@ class ProjectClient(NamespacedClient):
45
46
  <p>Get tags.</p>
46
47
  <p>Get the tags that are defined for the project.</p>
47
48
 
49
+
50
+ `<https://www.elastic.co/docs/api/doc/elasticsearch-serverless/operation/operation-project-tags>`_
51
+
52
+ :param project_routing: A Lucene query using project metadata tags used to filter
53
+ which projects are returned in the response, such as _alias:_origin or _alias:*pr*.
48
54
  """
49
55
  __path_parts: t.Dict[str, str] = {}
50
56
  __path = "/_project/tags"
@@ -57,9 +63,11 @@ class ProjectClient(NamespacedClient):
57
63
  __query["human"] = human
58
64
  if pretty is not None:
59
65
  __query["pretty"] = pretty
66
+ if project_routing is not None:
67
+ __query["project_routing"] = project_routing
60
68
  __headers = {"accept": "application/json"}
61
69
  return self.perform_request( # type: ignore[return-value]
62
- "GET",
70
+ "POST",
63
71
  __path,
64
72
  params=__query,
65
73
  headers=__headers,
@@ -0,0 +1,264 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ import typing as t
19
+
20
+ from elastic_transport import ObjectApiResponse
21
+
22
+ from ._base import NamespacedClient
23
+ from .utils import (
24
+ SKIP_IN_PATH,
25
+ Stability,
26
+ _availability_warning,
27
+ _quote,
28
+ _rewrite_parameters,
29
+ )
30
+
31
+
32
+ class ProjectRoutingClient(NamespacedClient):
33
+
34
+ @_rewrite_parameters(
35
+ body_name="expressions",
36
+ )
37
+ @_availability_warning(Stability.EXPERIMENTAL)
38
+ def create(
39
+ self,
40
+ *,
41
+ name: str,
42
+ expressions: t.Optional[t.Mapping[str, t.Any]] = None,
43
+ body: t.Optional[t.Mapping[str, t.Any]] = None,
44
+ error_trace: t.Optional[bool] = None,
45
+ filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
46
+ human: t.Optional[bool] = None,
47
+ pretty: t.Optional[bool] = None,
48
+ ) -> ObjectApiResponse[t.Any]:
49
+ """
50
+ .. raw:: html
51
+
52
+ <p>Create of update a single named project routing expression.</p>
53
+ <p>Create of update a single named project routing expression.</p>
54
+
55
+
56
+ :param name: The name of project routing expression
57
+ :param expressions:
58
+ """
59
+ if name in SKIP_IN_PATH:
60
+ raise ValueError("Empty value passed for parameter 'name'")
61
+ if expressions is None and body is None:
62
+ raise ValueError(
63
+ "Empty value passed for parameters 'expressions' and 'body', one of them should be set."
64
+ )
65
+ elif expressions is not None and body is not None:
66
+ raise ValueError("Cannot set both 'expressions' and 'body'")
67
+ __path_parts: t.Dict[str, str] = {"name": _quote(name)}
68
+ __path = f'/_project_routing/{__path_parts["name"]}'
69
+ __query: t.Dict[str, t.Any] = {}
70
+ if error_trace is not None:
71
+ __query["error_trace"] = error_trace
72
+ if filter_path is not None:
73
+ __query["filter_path"] = filter_path
74
+ if human is not None:
75
+ __query["human"] = human
76
+ if pretty is not None:
77
+ __query["pretty"] = pretty
78
+ __body = expressions if expressions is not None else body
79
+ __headers = {"accept": "application/json", "content-type": "application/json"}
80
+ return self.perform_request( # type: ignore[return-value]
81
+ "PUT",
82
+ __path,
83
+ params=__query,
84
+ headers=__headers,
85
+ body=__body,
86
+ endpoint_id="project_routing.create",
87
+ path_parts=__path_parts,
88
+ )
89
+
90
+ @_rewrite_parameters(
91
+ body_name="expressions",
92
+ )
93
+ @_availability_warning(Stability.EXPERIMENTAL)
94
+ def create_many(
95
+ self,
96
+ *,
97
+ expressions: t.Optional[t.Mapping[str, t.Mapping[str, t.Any]]] = None,
98
+ body: t.Optional[t.Mapping[str, t.Mapping[str, t.Any]]] = None,
99
+ error_trace: t.Optional[bool] = None,
100
+ filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
101
+ human: t.Optional[bool] = None,
102
+ pretty: t.Optional[bool] = None,
103
+ ) -> ObjectApiResponse[t.Any]:
104
+ """
105
+ .. raw:: html
106
+
107
+ <p>Create of update named project routing expressions.</p>
108
+ <p>Create or update named project routing expressions.</p>
109
+
110
+
111
+ :param expressions:
112
+ """
113
+ if expressions is None and body is None:
114
+ raise ValueError(
115
+ "Empty value passed for parameters 'expressions' and 'body', one of them should be set."
116
+ )
117
+ elif expressions is not None and body is not None:
118
+ raise ValueError("Cannot set both 'expressions' and 'body'")
119
+ __path_parts: t.Dict[str, str] = {}
120
+ __path = "/_project_routing"
121
+ __query: t.Dict[str, t.Any] = {}
122
+ if error_trace is not None:
123
+ __query["error_trace"] = error_trace
124
+ if filter_path is not None:
125
+ __query["filter_path"] = filter_path
126
+ if human is not None:
127
+ __query["human"] = human
128
+ if pretty is not None:
129
+ __query["pretty"] = pretty
130
+ __body = expressions if expressions is not None else body
131
+ __headers = {"accept": "application/json", "content-type": "application/json"}
132
+ return self.perform_request( # type: ignore[return-value]
133
+ "PUT",
134
+ __path,
135
+ params=__query,
136
+ headers=__headers,
137
+ body=__body,
138
+ endpoint_id="project_routing.create_many",
139
+ path_parts=__path_parts,
140
+ )
141
+
142
+ @_rewrite_parameters()
143
+ @_availability_warning(Stability.EXPERIMENTAL)
144
+ def delete(
145
+ self,
146
+ *,
147
+ name: str,
148
+ error_trace: t.Optional[bool] = None,
149
+ filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
150
+ human: t.Optional[bool] = None,
151
+ pretty: t.Optional[bool] = None,
152
+ ) -> ObjectApiResponse[t.Any]:
153
+ """
154
+ .. raw:: html
155
+
156
+ <p>Delete named project routing expressions.</p>
157
+ <p>Delete named project routing expressions.</p>
158
+
159
+
160
+ :param name: The name of project routing expression
161
+ """
162
+ if name in SKIP_IN_PATH:
163
+ raise ValueError("Empty value passed for parameter 'name'")
164
+ __path_parts: t.Dict[str, str] = {"name": _quote(name)}
165
+ __path = f'/_project_routing/{__path_parts["name"]}'
166
+ __query: t.Dict[str, t.Any] = {}
167
+ if error_trace is not None:
168
+ __query["error_trace"] = error_trace
169
+ if filter_path is not None:
170
+ __query["filter_path"] = filter_path
171
+ if human is not None:
172
+ __query["human"] = human
173
+ if pretty is not None:
174
+ __query["pretty"] = pretty
175
+ __headers = {"accept": "application/json"}
176
+ return self.perform_request( # type: ignore[return-value]
177
+ "DELETE",
178
+ __path,
179
+ params=__query,
180
+ headers=__headers,
181
+ endpoint_id="project_routing.delete",
182
+ path_parts=__path_parts,
183
+ )
184
+
185
+ @_rewrite_parameters()
186
+ @_availability_warning(Stability.EXPERIMENTAL)
187
+ def get(
188
+ self,
189
+ *,
190
+ name: str,
191
+ error_trace: t.Optional[bool] = None,
192
+ filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
193
+ human: t.Optional[bool] = None,
194
+ pretty: t.Optional[bool] = None,
195
+ ) -> ObjectApiResponse[t.Any]:
196
+ """
197
+ .. raw:: html
198
+
199
+ <p>Get named project routing expressions.</p>
200
+ <p>Get named project routing expressions.</p>
201
+
202
+
203
+ :param name: The name of project routing expression
204
+ """
205
+ if name in SKIP_IN_PATH:
206
+ raise ValueError("Empty value passed for parameter 'name'")
207
+ __path_parts: t.Dict[str, str] = {"name": _quote(name)}
208
+ __path = f'/_project_routing/{__path_parts["name"]}'
209
+ __query: t.Dict[str, t.Any] = {}
210
+ if error_trace is not None:
211
+ __query["error_trace"] = error_trace
212
+ if filter_path is not None:
213
+ __query["filter_path"] = filter_path
214
+ if human is not None:
215
+ __query["human"] = human
216
+ if pretty is not None:
217
+ __query["pretty"] = pretty
218
+ __headers = {"accept": "application/json"}
219
+ return self.perform_request( # type: ignore[return-value]
220
+ "GET",
221
+ __path,
222
+ params=__query,
223
+ headers=__headers,
224
+ endpoint_id="project_routing.get",
225
+ path_parts=__path_parts,
226
+ )
227
+
228
+ @_rewrite_parameters()
229
+ @_availability_warning(Stability.EXPERIMENTAL)
230
+ def get_many(
231
+ self,
232
+ *,
233
+ error_trace: t.Optional[bool] = None,
234
+ filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
235
+ human: t.Optional[bool] = None,
236
+ pretty: t.Optional[bool] = None,
237
+ ) -> ObjectApiResponse[t.Any]:
238
+ """
239
+ .. raw:: html
240
+
241
+ <p>Get named project routing expressions.</p>
242
+ <p>Get named project routing expressions.</p>
243
+
244
+ """
245
+ __path_parts: t.Dict[str, str] = {}
246
+ __path = "/_project_routing"
247
+ __query: t.Dict[str, t.Any] = {}
248
+ if error_trace is not None:
249
+ __query["error_trace"] = error_trace
250
+ if filter_path is not None:
251
+ __query["filter_path"] = filter_path
252
+ if human is not None:
253
+ __query["human"] = human
254
+ if pretty is not None:
255
+ __query["pretty"] = pretty
256
+ __headers = {"accept": "application/json"}
257
+ return self.perform_request( # type: ignore[return-value]
258
+ "GET",
259
+ __path,
260
+ params=__query,
261
+ headers=__headers,
262
+ endpoint_id="project_routing.get_many",
263
+ path_parts=__path_parts,
264
+ )
@@ -477,7 +477,7 @@ class SecurityClient(NamespacedClient):
477
477
  def clear_cached_privileges(
478
478
  self,
479
479
  *,
480
- application: str,
480
+ application: t.Union[str, t.Sequence[str]],
481
481
  error_trace: t.Optional[bool] = None,
482
482
  filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
483
483
  human: t.Optional[bool] = None,
@@ -775,13 +775,20 @@ class SecurityClient(NamespacedClient):
775
775
  )
776
776
 
777
777
  @_rewrite_parameters(
778
- body_fields=("access", "name", "expiration", "metadata"),
778
+ body_fields=(
779
+ "access",
780
+ "name",
781
+ "certificate_identity",
782
+ "expiration",
783
+ "metadata",
784
+ ),
779
785
  )
780
786
  def create_cross_cluster_api_key(
781
787
  self,
782
788
  *,
783
789
  access: t.Optional[t.Mapping[str, t.Any]] = None,
784
790
  name: t.Optional[str] = None,
791
+ certificate_identity: t.Optional[str] = None,
785
792
  error_trace: t.Optional[bool] = None,
786
793
  expiration: t.Optional[t.Union[str, t.Literal[-1], t.Literal[0]]] = None,
787
794
  filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
@@ -814,6 +821,10 @@ class SecurityClient(NamespacedClient):
814
821
  automatically converts the access specification to a role descriptor which
815
822
  has relevant privileges assigned accordingly.
816
823
  :param name: Specifies the name for this API key.
824
+ :param certificate_identity: The certificate identity to associate with this
825
+ API key. This field is used to restrict the API key to connections authenticated
826
+ by a specific TLS certificate. The value should match the certificate's distinguished
827
+ name (DN) pattern.
817
828
  :param expiration: Expiration time for the API key. By default, API keys never
818
829
  expire.
819
830
  :param metadata: Arbitrary metadata that you want to associate with the API key.
@@ -841,6 +852,8 @@ class SecurityClient(NamespacedClient):
841
852
  __body["access"] = access
842
853
  if name is not None:
843
854
  __body["name"] = name
855
+ if certificate_identity is not None:
856
+ __body["certificate_identity"] = certificate_identity
844
857
  if expiration is not None:
845
858
  __body["expiration"] = expiration
846
859
  if metadata is not None:
@@ -4474,13 +4487,14 @@ class SecurityClient(NamespacedClient):
4474
4487
  )
4475
4488
 
4476
4489
  @_rewrite_parameters(
4477
- body_fields=("access", "expiration", "metadata"),
4490
+ body_fields=("access", "certificate_identity", "expiration", "metadata"),
4478
4491
  )
4479
4492
  def update_cross_cluster_api_key(
4480
4493
  self,
4481
4494
  *,
4482
4495
  id: str,
4483
4496
  access: t.Optional[t.Mapping[str, t.Any]] = None,
4497
+ certificate_identity: t.Optional[str] = None,
4484
4498
  error_trace: t.Optional[bool] = None,
4485
4499
  expiration: t.Optional[t.Union[str, t.Literal[-1], t.Literal[0]]] = None,
4486
4500
  filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
@@ -4513,6 +4527,13 @@ class SecurityClient(NamespacedClient):
4513
4527
  of permissions for cross cluster search and cross cluster replication. At
4514
4528
  least one of them must be specified. When specified, the new access assignment
4515
4529
  fully replaces the previously assigned access.
4530
+ :param certificate_identity: The certificate identity to associate with this
4531
+ API key. This field is used to restrict the API key to connections authenticated
4532
+ by a specific TLS certificate. The value should match the certificate's distinguished
4533
+ name (DN) pattern. When specified, this fully replaces any previously assigned
4534
+ certificate identity. To clear an existing certificate identity, explicitly
4535
+ set this field to `null`. When omitted, the existing certificate identity
4536
+ remains unchanged.
4516
4537
  :param expiration: The expiration time for the API key. By default, API keys
4517
4538
  never expire. This property can be omitted to leave the value unchanged.
4518
4539
  :param metadata: Arbitrary metadata that you want to associate with the API key.
@@ -4539,6 +4560,8 @@ class SecurityClient(NamespacedClient):
4539
4560
  if not __body:
4540
4561
  if access is not None:
4541
4562
  __body["access"] = access
4563
+ if certificate_identity is not None:
4564
+ __body["certificate_identity"] = certificate_identity
4542
4565
  if expiration is not None:
4543
4566
  __body["expiration"] = expiration
4544
4567
  if metadata is not None:
@@ -397,7 +397,7 @@ class SnapshotClient(NamespacedClient):
397
397
  self,
398
398
  *,
399
399
  repository: str,
400
- snapshot: str,
400
+ snapshot: t.Union[str, t.Sequence[str]],
401
401
  error_trace: t.Optional[bool] = None,
402
402
  filter_path: t.Optional[t.Union[str, t.Sequence[str]]] = None,
403
403
  human: t.Optional[bool] = None,
@@ -253,6 +253,7 @@ class SqlClient(NamespacedClient):
253
253
  "keep_on_completion",
254
254
  "page_timeout",
255
255
  "params",
256
+ "project_routing",
256
257
  "query",
257
258
  "request_timeout",
258
259
  "runtime_mappings",
@@ -333,10 +334,10 @@ class SqlClient(NamespacedClient):
333
334
  is no longer available. Subsequent scroll requests prolong the lifetime of
334
335
  the scroll cursor by the duration of `page_timeout` in the scroll request.
335
336
  :param params: The values for parameters in the query.
336
- :param project_routing: Specifies a subset of projects to target for the search
337
- using project metadata tags in a subset of Lucene query syntax. Allowed Lucene
338
- queries: the _alias tag and a single value (possibly wildcarded). Examples:
339
- _alias:my-project _alias:_origin _alias:*pr* Supported in serverless only.
337
+ :param project_routing: Specifies a subset of projects to target using project
338
+ metadata tags in a subset of Lucene query syntax. Allowed Lucene queries:
339
+ the _alias tag and a single value (possibly wildcarded). Examples: _alias:my-project
340
+ _alias:_origin _alias:*pr* Supported in serverless only.
340
341
  :param query: The SQL query to run.
341
342
  :param request_timeout: The timeout before the request fails.
342
343
  :param runtime_mappings: One or more runtime fields for the search request. These
@@ -362,8 +363,6 @@ class SqlClient(NamespacedClient):
362
363
  __query["human"] = human
363
364
  if pretty is not None:
364
365
  __query["pretty"] = pretty
365
- if project_routing is not None:
366
- __query["project_routing"] = project_routing
367
366
  if not __body:
368
367
  if allow_partial_search_results is not None:
369
368
  __body["allow_partial_search_results"] = allow_partial_search_results
@@ -389,6 +388,8 @@ class SqlClient(NamespacedClient):
389
388
  __body["page_timeout"] = page_timeout
390
389
  if params is not None:
391
390
  __body["params"] = params
391
+ if project_routing is not None:
392
+ __body["project_routing"] = project_routing
392
393
  if query is not None:
393
394
  __body["query"] = query
394
395
  if request_timeout is not None:
@@ -15,7 +15,6 @@
15
15
  # specific language governing permissions and limitations
16
16
  # under the License.
17
17
 
18
-
19
18
  import typing as t
20
19
 
21
20
  from elastic_transport import ObjectApiResponse, TextApiResponse
@@ -31,7 +31,7 @@ class TextStructureClient(NamespacedClient):
31
31
  *,
32
32
  field: str,
33
33
  index: str,
34
- column_names: t.Optional[str] = None,
34
+ column_names: t.Optional[t.Union[str, t.Sequence[str]]] = None,
35
35
  delimiter: t.Optional[str] = None,
36
36
  documents_to_sample: t.Optional[int] = None,
37
37
  ecs_compatibility: t.Optional[t.Union[str, t.Literal["disabled", "v1"]]] = None,
@@ -217,7 +217,7 @@ class TextStructureClient(NamespacedClient):
217
217
  self,
218
218
  *,
219
219
  messages: t.Optional[t.Sequence[str]] = None,
220
- column_names: t.Optional[str] = None,
220
+ column_names: t.Optional[t.Union[str, t.Sequence[str]]] = None,
221
221
  delimiter: t.Optional[str] = None,
222
222
  ecs_compatibility: t.Optional[t.Union[str, t.Literal["disabled", "v1"]]] = None,
223
223
  error_trace: t.Optional[bool] = None,
@@ -398,7 +398,7 @@ class TextStructureClient(NamespacedClient):
398
398
  text_files: t.Optional[t.Sequence[t.Any]] = None,
399
399
  body: t.Optional[t.Sequence[t.Any]] = None,
400
400
  charset: t.Optional[str] = None,
401
- column_names: t.Optional[str] = None,
401
+ column_names: t.Optional[t.Union[str, t.Sequence[str]]] = None,
402
402
  delimiter: t.Optional[str] = None,
403
403
  ecs_compatibility: t.Optional[str] = None,
404
404
  explain: t.Optional[bool] = None,
elasticsearch/_version.py CHANGED
@@ -15,5 +15,5 @@
15
15
  # specific language governing permissions and limitations
16
16
  # under the License.
17
17
 
18
- __versionstr__ = "9.2.1"
19
- __es_specification_commit__ = "4ab58cf013706c9104d18daafae4361cf7351a55"
18
+ __versionstr__ = "9.3.0"
19
+ __es_specification_commit__ = "f051200486a5a1d415cc04f07f6bd150395d7661"
@@ -53,6 +53,7 @@ from .field import (
53
53
  DenseVector,
54
54
  Double,
55
55
  DoubleRange,
56
+ ExponentialHistogram,
56
57
  Field,
57
58
  Flattened,
58
59
  Float,
@@ -73,6 +74,7 @@ from .field import (
73
74
  MatchOnlyText,
74
75
  Murmur3,
75
76
  Nested,
77
+ NumpyDenseVector,
76
78
  Object,
77
79
  Passthrough,
78
80
  Percolator,
@@ -156,6 +158,7 @@ __all__ = [
156
158
  "E",
157
159
  "ElasticsearchDslException",
158
160
  "EmptySearch",
161
+ "ExponentialHistogram",
159
162
  "Facet",
160
163
  "FacetedResponse",
161
164
  "FacetedSearch",
@@ -189,6 +192,7 @@ __all__ = [
189
192
  "Murmur3",
190
193
  "Nested",
191
194
  "NestedFacet",
195
+ "NumpyDenseVector",
192
196
  "Object",
193
197
  "Passthrough",
194
198
  "Percolator",
elasticsearch/dsl/aggs.py CHANGED
@@ -1516,9 +1516,9 @@ class GeoLine(Agg[_R]):
1516
1516
  ordered by the chosen sort field.
1517
1517
 
1518
1518
  :arg point: (required) The name of the geo_point field.
1519
- :arg sort: (required) The name of the numeric field to use as the sort
1520
- key for ordering the points. When the `geo_line` aggregation is
1521
- nested inside a `time_series` aggregation, this field defaults to
1519
+ :arg sort: The name of the numeric field to use as the sort key for
1520
+ ordering the points. When the `geo_line` aggregation is nested
1521
+ inside a `time_series` aggregation, this field defaults to
1522
1522
  `@timestamp`, and any other value will result in error.
1523
1523
  :arg include_sort: When `true`, returns an additional array of the
1524
1524
  sort values in the feature properties.
@@ -1855,9 +1855,9 @@ class Inference(Pipeline[_R]):
1855
1855
  class Line(Agg[_R]):
1856
1856
  """
1857
1857
  :arg point: (required) The name of the geo_point field.
1858
- :arg sort: (required) The name of the numeric field to use as the sort
1859
- key for ordering the points. When the `geo_line` aggregation is
1860
- nested inside a `time_series` aggregation, this field defaults to
1858
+ :arg sort: The name of the numeric field to use as the sort key for
1859
+ ordering the points. When the `geo_line` aggregation is nested
1860
+ inside a `time_series` aggregation, this field defaults to
1861
1861
  `@timestamp`, and any other value will result in error.
1862
1862
  :arg include_sort: When `true`, returns an additional array of the
1863
1863
  sort values in the feature properties.