elasticsearch 8.15.0__py3-none-any.whl → 8.16.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.
- elasticsearch/_async/client/__init__.py +202 -117
- elasticsearch/_async/client/async_search.py +25 -25
- elasticsearch/_async/client/autoscaling.py +24 -11
- elasticsearch/_async/client/cat.py +75 -66
- elasticsearch/_async/client/ccr.py +13 -13
- elasticsearch/_async/client/cluster.py +40 -37
- elasticsearch/_async/client/connector.py +112 -51
- elasticsearch/_async/client/dangling_indices.py +27 -12
- elasticsearch/_async/client/enrich.py +10 -10
- elasticsearch/_async/client/eql.py +4 -4
- elasticsearch/_async/client/esql.py +42 -4
- elasticsearch/_async/client/features.py +4 -3
- elasticsearch/_async/client/fleet.py +10 -2
- elasticsearch/_async/client/graph.py +1 -1
- elasticsearch/_async/client/ilm.py +16 -12
- elasticsearch/_async/client/indices.py +189 -108
- elasticsearch/_async/client/inference.py +15 -5
- elasticsearch/_async/client/ingest.py +200 -9
- 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 +294 -291
- elasticsearch/_async/client/monitoring.py +1 -1
- elasticsearch/_async/client/nodes.py +16 -8
- elasticsearch/_async/client/query_rules.py +61 -8
- elasticsearch/_async/client/rollup.py +23 -9
- elasticsearch/_async/client/search_application.py +35 -16
- elasticsearch/_async/client/searchable_snapshots.py +13 -5
- elasticsearch/_async/client/security.py +371 -180
- elasticsearch/_async/client/slm.py +9 -9
- elasticsearch/_async/client/snapshot.py +97 -12
- elasticsearch/_async/client/sql.py +11 -7
- elasticsearch/_async/client/ssl.py +18 -3
- elasticsearch/_async/client/synonyms.py +10 -8
- elasticsearch/_async/client/tasks.py +19 -9
- elasticsearch/_async/client/text_structure.py +2 -2
- elasticsearch/_async/client/transform.py +78 -72
- elasticsearch/_async/client/utils.py +4 -0
- elasticsearch/_async/client/watcher.py +11 -11
- elasticsearch/_async/client/xpack.py +5 -3
- elasticsearch/_async/helpers.py +19 -10
- elasticsearch/_otel.py +23 -1
- elasticsearch/_sync/client/__init__.py +202 -117
- elasticsearch/_sync/client/async_search.py +25 -25
- elasticsearch/_sync/client/autoscaling.py +24 -11
- elasticsearch/_sync/client/cat.py +75 -66
- elasticsearch/_sync/client/ccr.py +13 -13
- elasticsearch/_sync/client/cluster.py +40 -37
- elasticsearch/_sync/client/connector.py +112 -51
- elasticsearch/_sync/client/dangling_indices.py +27 -12
- elasticsearch/_sync/client/enrich.py +10 -10
- elasticsearch/_sync/client/eql.py +4 -4
- elasticsearch/_sync/client/esql.py +42 -4
- elasticsearch/_sync/client/features.py +4 -3
- elasticsearch/_sync/client/fleet.py +10 -2
- elasticsearch/_sync/client/graph.py +1 -1
- elasticsearch/_sync/client/ilm.py +16 -12
- elasticsearch/_sync/client/indices.py +189 -108
- elasticsearch/_sync/client/inference.py +15 -5
- elasticsearch/_sync/client/ingest.py +200 -9
- 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 +294 -291
- elasticsearch/_sync/client/monitoring.py +1 -1
- elasticsearch/_sync/client/nodes.py +16 -8
- elasticsearch/_sync/client/query_rules.py +61 -8
- elasticsearch/_sync/client/rollup.py +23 -9
- elasticsearch/_sync/client/search_application.py +35 -16
- elasticsearch/_sync/client/searchable_snapshots.py +13 -5
- elasticsearch/_sync/client/security.py +371 -180
- elasticsearch/_sync/client/slm.py +9 -9
- elasticsearch/_sync/client/snapshot.py +97 -12
- elasticsearch/_sync/client/sql.py +11 -7
- elasticsearch/_sync/client/ssl.py +18 -3
- elasticsearch/_sync/client/synonyms.py +10 -8
- elasticsearch/_sync/client/tasks.py +19 -9
- elasticsearch/_sync/client/text_structure.py +2 -2
- elasticsearch/_sync/client/transform.py +78 -72
- elasticsearch/_sync/client/utils.py +40 -0
- elasticsearch/_sync/client/watcher.py +11 -11
- elasticsearch/_sync/client/xpack.py +5 -3
- elasticsearch/_version.py +1 -1
- elasticsearch/exceptions.py +4 -0
- elasticsearch/helpers/actions.py +134 -111
- elasticsearch/helpers/errors.py +12 -4
- elasticsearch/helpers/vectorstore/_async/strategies.py +30 -9
- elasticsearch/helpers/vectorstore/_sync/strategies.py +30 -9
- {elasticsearch-8.15.0.dist-info → elasticsearch-8.16.0.dist-info}/METADATA +6 -7
- elasticsearch-8.16.0.dist-info/RECORD +117 -0
- {elasticsearch-8.15.0.dist-info → elasticsearch-8.16.0.dist-info}/WHEEL +1 -1
- elasticsearch-8.15.0.dist-info/RECORD +0 -117
- {elasticsearch-8.15.0.dist-info → elasticsearch-8.16.0.dist-info}/licenses/LICENSE +0 -0
- {elasticsearch-8.15.0.dist-info → elasticsearch-8.16.0.dist-info}/licenses/NOTICE +0 -0
elasticsearch/helpers/actions.py
CHANGED
|
@@ -34,6 +34,8 @@ from typing import (
|
|
|
34
34
|
Union,
|
|
35
35
|
)
|
|
36
36
|
|
|
37
|
+
from elastic_transport import OpenTelemetrySpan
|
|
38
|
+
|
|
37
39
|
from .. import Elasticsearch
|
|
38
40
|
from ..compat import to_bytes
|
|
39
41
|
from ..exceptions import ApiError, NotFoundError, TransportError
|
|
@@ -322,6 +324,7 @@ def _process_bulk_chunk(
|
|
|
322
324
|
Tuple[_TYPE_BULK_ACTION_HEADER, _TYPE_BULK_ACTION_BODY],
|
|
323
325
|
]
|
|
324
326
|
],
|
|
327
|
+
otel_span: OpenTelemetrySpan,
|
|
325
328
|
raise_on_exception: bool = True,
|
|
326
329
|
raise_on_error: bool = True,
|
|
327
330
|
ignore_status: Union[int, Collection[int]] = (),
|
|
@@ -331,28 +334,29 @@ def _process_bulk_chunk(
|
|
|
331
334
|
"""
|
|
332
335
|
Send a bulk request to elasticsearch and process the output.
|
|
333
336
|
"""
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
337
|
+
with client._otel.use_span(otel_span):
|
|
338
|
+
if isinstance(ignore_status, int):
|
|
339
|
+
ignore_status = (ignore_status,)
|
|
340
|
+
|
|
341
|
+
try:
|
|
342
|
+
# send the actual request
|
|
343
|
+
resp = client.bulk(*args, operations=bulk_actions, **kwargs) # type: ignore[arg-type]
|
|
344
|
+
except ApiError as e:
|
|
345
|
+
gen = _process_bulk_chunk_error(
|
|
346
|
+
error=e,
|
|
347
|
+
bulk_data=bulk_data,
|
|
348
|
+
ignore_status=ignore_status,
|
|
349
|
+
raise_on_exception=raise_on_exception,
|
|
350
|
+
raise_on_error=raise_on_error,
|
|
351
|
+
)
|
|
352
|
+
else:
|
|
353
|
+
gen = _process_bulk_chunk_success(
|
|
354
|
+
resp=resp.body,
|
|
355
|
+
bulk_data=bulk_data,
|
|
356
|
+
ignore_status=ignore_status,
|
|
357
|
+
raise_on_error=raise_on_error,
|
|
358
|
+
)
|
|
359
|
+
yield from gen
|
|
356
360
|
|
|
357
361
|
|
|
358
362
|
def streaming_bulk(
|
|
@@ -370,6 +374,8 @@ def streaming_bulk(
|
|
|
370
374
|
max_backoff: float = 600,
|
|
371
375
|
yield_ok: bool = True,
|
|
372
376
|
ignore_status: Union[int, Collection[int]] = (),
|
|
377
|
+
retry_on_status: Union[int, Collection[int]] = (429,),
|
|
378
|
+
span_name: str = "helpers.streaming_bulk",
|
|
373
379
|
*args: Any,
|
|
374
380
|
**kwargs: Any,
|
|
375
381
|
) -> Iterable[Tuple[bool, Dict[str, Any]]]:
|
|
@@ -381,10 +387,11 @@ def streaming_bulk(
|
|
|
381
387
|
entire input is consumed and sent.
|
|
382
388
|
|
|
383
389
|
If you specify ``max_retries`` it will also retry any documents that were
|
|
384
|
-
rejected with a ``429`` status code.
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
390
|
+
rejected with a ``429`` status code. Use ``retry_on_status`` to
|
|
391
|
+
configure which status codes will be retried. To do this it will wait
|
|
392
|
+
(**by calling time.sleep which will block**) for ``initial_backoff`` seconds
|
|
393
|
+
and then, every subsequent rejection for the same chunk, for double the time
|
|
394
|
+
every time up to ``max_backoff`` seconds.
|
|
388
395
|
|
|
389
396
|
:arg client: instance of :class:`~elasticsearch.Elasticsearch` to use
|
|
390
397
|
:arg actions: iterable containing the actions to be executed
|
|
@@ -397,8 +404,11 @@ def streaming_bulk(
|
|
|
397
404
|
:arg expand_action_callback: callback executed on each action passed in,
|
|
398
405
|
should return a tuple containing the action line and the data line
|
|
399
406
|
(`None` if data line should be omitted).
|
|
407
|
+
:arg retry_on_status: HTTP status code that will trigger a retry.
|
|
408
|
+
(if `None` is specified only status 429 will retry).
|
|
400
409
|
:arg max_retries: maximum number of times a document will be retried when
|
|
401
|
-
``429`` is received,
|
|
410
|
+
retry_on_status (defaulting to ``429``) is received,
|
|
411
|
+
set to 0 (default) for no retries
|
|
402
412
|
:arg initial_backoff: number of seconds we should wait before the first
|
|
403
413
|
retry. Any subsequent retries will be powers of ``initial_backoff *
|
|
404
414
|
2**retry_number``
|
|
@@ -406,73 +416,82 @@ def streaming_bulk(
|
|
|
406
416
|
:arg yield_ok: if set to False will skip successful documents in the output
|
|
407
417
|
:arg ignore_status: list of HTTP status code that you want to ignore
|
|
408
418
|
"""
|
|
409
|
-
|
|
410
|
-
|
|
419
|
+
with client._otel.helpers_span(span_name) as otel_span:
|
|
420
|
+
client = client.options()
|
|
421
|
+
client._client_meta = (("h", "bp"),)
|
|
411
422
|
|
|
412
|
-
|
|
423
|
+
if isinstance(retry_on_status, int):
|
|
424
|
+
retry_on_status = (retry_on_status,)
|
|
413
425
|
|
|
414
|
-
|
|
415
|
-
Union[
|
|
416
|
-
Tuple[_TYPE_BULK_ACTION_HEADER],
|
|
417
|
-
Tuple[_TYPE_BULK_ACTION_HEADER, _TYPE_BULK_ACTION_BODY],
|
|
418
|
-
]
|
|
419
|
-
]
|
|
420
|
-
bulk_actions: List[bytes]
|
|
421
|
-
for bulk_data, bulk_actions in _chunk_actions(
|
|
422
|
-
map(expand_action_callback, actions), chunk_size, max_chunk_bytes, serializer
|
|
423
|
-
):
|
|
424
|
-
for attempt in range(max_retries + 1):
|
|
425
|
-
to_retry: List[bytes] = []
|
|
426
|
-
to_retry_data: List[
|
|
427
|
-
Union[
|
|
428
|
-
Tuple[_TYPE_BULK_ACTION_HEADER],
|
|
429
|
-
Tuple[_TYPE_BULK_ACTION_HEADER, _TYPE_BULK_ACTION_BODY],
|
|
430
|
-
]
|
|
431
|
-
] = []
|
|
432
|
-
if attempt:
|
|
433
|
-
time.sleep(min(max_backoff, initial_backoff * 2 ** (attempt - 1)))
|
|
426
|
+
serializer = client.transport.serializers.get_serializer("application/json")
|
|
434
427
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
428
|
+
bulk_data: List[
|
|
429
|
+
Union[
|
|
430
|
+
Tuple[_TYPE_BULK_ACTION_HEADER],
|
|
431
|
+
Tuple[_TYPE_BULK_ACTION_HEADER, _TYPE_BULK_ACTION_BODY],
|
|
432
|
+
]
|
|
433
|
+
]
|
|
434
|
+
bulk_actions: List[bytes]
|
|
435
|
+
for bulk_data, bulk_actions in _chunk_actions(
|
|
436
|
+
map(expand_action_callback, actions),
|
|
437
|
+
chunk_size,
|
|
438
|
+
max_chunk_bytes,
|
|
439
|
+
serializer,
|
|
440
|
+
):
|
|
441
|
+
for attempt in range(max_retries + 1):
|
|
442
|
+
to_retry: List[bytes] = []
|
|
443
|
+
to_retry_data: List[
|
|
444
|
+
Union[
|
|
445
|
+
Tuple[_TYPE_BULK_ACTION_HEADER],
|
|
446
|
+
Tuple[_TYPE_BULK_ACTION_HEADER, _TYPE_BULK_ACTION_BODY],
|
|
447
|
+
]
|
|
448
|
+
] = []
|
|
449
|
+
if attempt:
|
|
450
|
+
time.sleep(min(max_backoff, initial_backoff * 2 ** (attempt - 1)))
|
|
451
|
+
|
|
452
|
+
try:
|
|
453
|
+
for data, (ok, info) in zip(
|
|
441
454
|
bulk_data,
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
455
|
+
_process_bulk_chunk(
|
|
456
|
+
client,
|
|
457
|
+
bulk_actions,
|
|
458
|
+
bulk_data,
|
|
459
|
+
otel_span,
|
|
460
|
+
raise_on_exception,
|
|
461
|
+
raise_on_error,
|
|
462
|
+
ignore_status,
|
|
463
|
+
*args,
|
|
464
|
+
**kwargs,
|
|
465
|
+
),
|
|
466
|
+
):
|
|
467
|
+
if not ok:
|
|
468
|
+
action, info = info.popitem()
|
|
469
|
+
# retry if retries enabled, we are not in the last attempt,
|
|
470
|
+
# and status in retry_on_status (defaulting to 429)
|
|
471
|
+
if (
|
|
472
|
+
max_retries
|
|
473
|
+
and info["status"] in retry_on_status
|
|
474
|
+
and (attempt + 1) <= max_retries
|
|
475
|
+
):
|
|
476
|
+
# _process_bulk_chunk expects bytes so we need to
|
|
477
|
+
# re-serialize the data
|
|
478
|
+
to_retry.extend(map(serializer.dumps, data))
|
|
479
|
+
to_retry_data.append(data)
|
|
480
|
+
else:
|
|
481
|
+
yield ok, {action: info}
|
|
482
|
+
elif yield_ok:
|
|
483
|
+
yield ok, info
|
|
484
|
+
|
|
485
|
+
except ApiError as e:
|
|
486
|
+
# suppress any status in retry_on_status (429 by default)
|
|
487
|
+
# since we will retry them
|
|
488
|
+
if attempt == max_retries or e.status_code not in retry_on_status:
|
|
489
|
+
raise
|
|
490
|
+
else:
|
|
491
|
+
if not to_retry:
|
|
492
|
+
break
|
|
493
|
+
# retry only subset of documents that didn't succeed
|
|
494
|
+
bulk_actions, bulk_data = to_retry, to_retry_data
|
|
476
495
|
|
|
477
496
|
|
|
478
497
|
def bulk(
|
|
@@ -519,7 +538,7 @@ def bulk(
|
|
|
519
538
|
# make streaming_bulk yield successful results so we can count them
|
|
520
539
|
kwargs["yield_ok"] = True
|
|
521
540
|
for ok, item in streaming_bulk(
|
|
522
|
-
client, actions, ignore_status=ignore_status, *args, **kwargs # type: ignore[misc]
|
|
541
|
+
client, actions, ignore_status=ignore_status, span_name="helpers.bulk", *args, **kwargs # type: ignore[misc]
|
|
523
542
|
):
|
|
524
543
|
# go through request-response pairs and detect failures
|
|
525
544
|
if not ok:
|
|
@@ -589,27 +608,31 @@ def parallel_bulk(
|
|
|
589
608
|
] = Queue(max(queue_size, thread_count))
|
|
590
609
|
self._quick_put = self._inqueue.put
|
|
591
610
|
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
try:
|
|
595
|
-
for result in pool.imap(
|
|
596
|
-
lambda bulk_chunk: list(
|
|
597
|
-
_process_bulk_chunk(
|
|
598
|
-
client,
|
|
599
|
-
bulk_chunk[1],
|
|
600
|
-
bulk_chunk[0],
|
|
601
|
-
ignore_status=ignore_status, # type: ignore[misc]
|
|
602
|
-
*args,
|
|
603
|
-
**kwargs,
|
|
604
|
-
)
|
|
605
|
-
),
|
|
606
|
-
_chunk_actions(expanded_actions, chunk_size, max_chunk_bytes, serializer),
|
|
607
|
-
):
|
|
608
|
-
yield from result
|
|
611
|
+
with client._otel.helpers_span("helpers.parallel_bulk") as otel_span:
|
|
612
|
+
pool = BlockingPool(thread_count)
|
|
609
613
|
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
614
|
+
try:
|
|
615
|
+
for result in pool.imap(
|
|
616
|
+
lambda bulk_chunk: list(
|
|
617
|
+
_process_bulk_chunk(
|
|
618
|
+
client,
|
|
619
|
+
bulk_chunk[1],
|
|
620
|
+
bulk_chunk[0],
|
|
621
|
+
otel_span=otel_span,
|
|
622
|
+
ignore_status=ignore_status, # type: ignore[misc]
|
|
623
|
+
*args,
|
|
624
|
+
**kwargs,
|
|
625
|
+
)
|
|
626
|
+
),
|
|
627
|
+
_chunk_actions(
|
|
628
|
+
expanded_actions, chunk_size, max_chunk_bytes, serializer
|
|
629
|
+
),
|
|
630
|
+
):
|
|
631
|
+
yield from result
|
|
632
|
+
|
|
633
|
+
finally:
|
|
634
|
+
pool.close()
|
|
635
|
+
pool.join()
|
|
613
636
|
|
|
614
637
|
|
|
615
638
|
def scan(
|
elasticsearch/helpers/errors.py
CHANGED
|
@@ -15,18 +15,26 @@
|
|
|
15
15
|
# specific language governing permissions and limitations
|
|
16
16
|
# under the License.
|
|
17
17
|
|
|
18
|
-
from typing import Any, Dict, List
|
|
18
|
+
from typing import Any, Dict, List, Tuple, Type
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class BulkIndexError(Exception):
|
|
22
|
-
def __init__(self, message:
|
|
22
|
+
def __init__(self, message: str, errors: List[Dict[str, Any]]):
|
|
23
23
|
super().__init__(message)
|
|
24
24
|
self.errors: List[Dict[str, Any]] = errors
|
|
25
25
|
|
|
26
|
+
def __reduce__(
|
|
27
|
+
self,
|
|
28
|
+
) -> Tuple[Type["BulkIndexError"], Tuple[str, List[Dict[str, Any]]]]:
|
|
29
|
+
return (self.__class__, (self.args[0], self.errors))
|
|
30
|
+
|
|
26
31
|
|
|
27
32
|
class ScanError(Exception):
|
|
28
33
|
scroll_id: str
|
|
29
34
|
|
|
30
|
-
def __init__(self, scroll_id: str, *args: Any
|
|
31
|
-
super().__init__(*args
|
|
35
|
+
def __init__(self, scroll_id: str, *args: Any) -> None:
|
|
36
|
+
super().__init__(*args)
|
|
32
37
|
self.scroll_id = scroll_id
|
|
38
|
+
|
|
39
|
+
def __reduce__(self) -> Tuple[Type["ScanError"], Tuple[str, str]]:
|
|
40
|
+
return (self.__class__, (self.scroll_id,) + self.args)
|
|
@@ -283,10 +283,9 @@ class AsyncDenseVectorStrategy(AsyncRetrievalStrategy):
|
|
|
283
283
|
) -> Dict[str, Any]:
|
|
284
284
|
# Add a query to the knn query.
|
|
285
285
|
# RRF is used to even the score from the knn query and text query
|
|
286
|
-
# RRF has two optional parameters: {'rank_constant':int, '
|
|
286
|
+
# RRF has two optional parameters: {'rank_constant':int, 'rank_window_size':int}
|
|
287
287
|
# https://www.elastic.co/guide/en/elasticsearch/reference/current/rrf.html
|
|
288
|
-
|
|
289
|
-
"knn": knn,
|
|
288
|
+
standard_query = {
|
|
290
289
|
"query": {
|
|
291
290
|
"bool": {
|
|
292
291
|
"must": [
|
|
@@ -300,14 +299,36 @@ class AsyncDenseVectorStrategy(AsyncRetrievalStrategy):
|
|
|
300
299
|
],
|
|
301
300
|
"filter": filter,
|
|
302
301
|
}
|
|
303
|
-
}
|
|
302
|
+
}
|
|
304
303
|
}
|
|
305
304
|
|
|
306
|
-
if
|
|
307
|
-
query_body
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
305
|
+
if self.rrf is False:
|
|
306
|
+
query_body = {
|
|
307
|
+
"knn": knn,
|
|
308
|
+
**standard_query,
|
|
309
|
+
}
|
|
310
|
+
else:
|
|
311
|
+
rrf_options = {}
|
|
312
|
+
if isinstance(self.rrf, Dict):
|
|
313
|
+
if "rank_constant" in self.rrf:
|
|
314
|
+
rrf_options["rank_constant"] = self.rrf["rank_constant"]
|
|
315
|
+
if "window_size" in self.rrf:
|
|
316
|
+
# 'window_size' was renamed to 'rank_window_size', but we support
|
|
317
|
+
# the older name for backwards compatibility
|
|
318
|
+
rrf_options["rank_window_size"] = self.rrf["window_size"]
|
|
319
|
+
if "rank_window_size" in self.rrf:
|
|
320
|
+
rrf_options["rank_window_size"] = self.rrf["rank_window_size"]
|
|
321
|
+
query_body = {
|
|
322
|
+
"retriever": {
|
|
323
|
+
"rrf": {
|
|
324
|
+
"retrievers": [
|
|
325
|
+
{"standard": standard_query},
|
|
326
|
+
{"knn": knn},
|
|
327
|
+
],
|
|
328
|
+
**rrf_options,
|
|
329
|
+
},
|
|
330
|
+
},
|
|
331
|
+
}
|
|
311
332
|
return query_body
|
|
312
333
|
|
|
313
334
|
def needs_inference(self) -> bool:
|
|
@@ -283,10 +283,9 @@ class DenseVectorStrategy(RetrievalStrategy):
|
|
|
283
283
|
) -> Dict[str, Any]:
|
|
284
284
|
# Add a query to the knn query.
|
|
285
285
|
# RRF is used to even the score from the knn query and text query
|
|
286
|
-
# RRF has two optional parameters: {'rank_constant':int, '
|
|
286
|
+
# RRF has two optional parameters: {'rank_constant':int, 'rank_window_size':int}
|
|
287
287
|
# https://www.elastic.co/guide/en/elasticsearch/reference/current/rrf.html
|
|
288
|
-
|
|
289
|
-
"knn": knn,
|
|
288
|
+
standard_query = {
|
|
290
289
|
"query": {
|
|
291
290
|
"bool": {
|
|
292
291
|
"must": [
|
|
@@ -300,14 +299,36 @@ class DenseVectorStrategy(RetrievalStrategy):
|
|
|
300
299
|
],
|
|
301
300
|
"filter": filter,
|
|
302
301
|
}
|
|
303
|
-
}
|
|
302
|
+
}
|
|
304
303
|
}
|
|
305
304
|
|
|
306
|
-
if
|
|
307
|
-
query_body
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
305
|
+
if self.rrf is False:
|
|
306
|
+
query_body = {
|
|
307
|
+
"knn": knn,
|
|
308
|
+
**standard_query,
|
|
309
|
+
}
|
|
310
|
+
else:
|
|
311
|
+
rrf_options = {}
|
|
312
|
+
if isinstance(self.rrf, Dict):
|
|
313
|
+
if "rank_constant" in self.rrf:
|
|
314
|
+
rrf_options["rank_constant"] = self.rrf["rank_constant"]
|
|
315
|
+
if "window_size" in self.rrf:
|
|
316
|
+
# 'window_size' was renamed to 'rank_window_size', but we support
|
|
317
|
+
# the older name for backwards compatibility
|
|
318
|
+
rrf_options["rank_window_size"] = self.rrf["window_size"]
|
|
319
|
+
if "rank_window_size" in self.rrf:
|
|
320
|
+
rrf_options["rank_window_size"] = self.rrf["rank_window_size"]
|
|
321
|
+
query_body = {
|
|
322
|
+
"retriever": {
|
|
323
|
+
"rrf": {
|
|
324
|
+
"retrievers": [
|
|
325
|
+
{"standard": standard_query},
|
|
326
|
+
{"knn": knn},
|
|
327
|
+
],
|
|
328
|
+
**rrf_options,
|
|
329
|
+
},
|
|
330
|
+
},
|
|
331
|
+
}
|
|
311
332
|
return query_body
|
|
312
333
|
|
|
313
334
|
def needs_inference(self) -> bool:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: elasticsearch
|
|
3
|
-
Version: 8.
|
|
3
|
+
Version: 8.16.0
|
|
4
4
|
Summary: Python client for Elasticsearch
|
|
5
5
|
Project-URL: Documentation, https://elasticsearch-py.readthedocs.io/
|
|
6
6
|
Project-URL: Homepage, https://github.com/elastic/elasticsearch-py
|
|
@@ -8,9 +8,7 @@ Project-URL: Issue Tracker, https://github.com/elastic/elasticsearch-py/issues
|
|
|
8
8
|
Project-URL: Source Code, https://github.com/elastic/elasticsearch-py
|
|
9
9
|
Author-email: Elastic Client Library Maintainers <client-libs@elastic.co>
|
|
10
10
|
Maintainer-email: Elastic Client Library Maintainers <client-libs@elastic.co>
|
|
11
|
-
License
|
|
12
|
-
License-File: LICENSE
|
|
13
|
-
License-File: NOTICE
|
|
11
|
+
License: Apache-2.0
|
|
14
12
|
Keywords: REST,client,elastic,elasticsearch,index,kibana,mapping,search
|
|
15
13
|
Classifier: Development Status :: 5 - Production/Stable
|
|
16
14
|
Classifier: Intended Audience :: Developers
|
|
@@ -23,10 +21,11 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
23
21
|
Classifier: Programming Language :: Python :: 3.10
|
|
24
22
|
Classifier: Programming Language :: Python :: 3.11
|
|
25
23
|
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
26
25
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
27
26
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
28
27
|
Requires-Python: >=3.8
|
|
29
|
-
Requires-Dist: elastic-transport<9,>=8.
|
|
28
|
+
Requires-Dist: elastic-transport<9,>=8.15.1
|
|
30
29
|
Provides-Extra: async
|
|
31
30
|
Requires-Dist: aiohttp<4,>=3; extra == 'async'
|
|
32
31
|
Provides-Extra: dev
|
|
@@ -48,13 +47,13 @@ Requires-Dist: pytest-cov; extra == 'dev'
|
|
|
48
47
|
Requires-Dist: python-dateutil; extra == 'dev'
|
|
49
48
|
Requires-Dist: pyyaml>=5.4; extra == 'dev'
|
|
50
49
|
Requires-Dist: requests<3,>=2; extra == 'dev'
|
|
51
|
-
Requires-Dist: simsimd; extra == 'dev'
|
|
50
|
+
Requires-Dist: simsimd; (python_version < '3.13') and extra == 'dev'
|
|
52
51
|
Requires-Dist: twine; extra == 'dev'
|
|
53
52
|
Requires-Dist: unasync; extra == 'dev'
|
|
54
53
|
Provides-Extra: docs
|
|
55
54
|
Requires-Dist: sphinx; extra == 'docs'
|
|
56
55
|
Requires-Dist: sphinx-autodoc-typehints; extra == 'docs'
|
|
57
|
-
Requires-Dist: sphinx-rtd-theme; extra == 'docs'
|
|
56
|
+
Requires-Dist: sphinx-rtd-theme>=2.0; extra == 'docs'
|
|
58
57
|
Provides-Extra: orjson
|
|
59
58
|
Requires-Dist: orjson>=3; extra == 'orjson'
|
|
60
59
|
Provides-Extra: pyarrow
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
elasticsearch/__init__.py,sha256=w5YnO16zjOi6loGJ8caUgSXsj3b-Y8OfF0BIddP2BiE,3289
|
|
2
|
+
elasticsearch/_otel.py,sha256=Oidt86g9XzeVrwMsJeV7dGLsyquVMJWfhcRlz43RlGo,4188
|
|
3
|
+
elasticsearch/_utils.py,sha256=Vr_aNG5ddxInE1PgDpCXMYpXBTNUFM9nYrgbw-cjeCc,1419
|
|
4
|
+
elasticsearch/_version.py,sha256=cCncJ6G7egEMKO8B9tVa2tUhTcFqEnR8lddtJz7b2Ag,814
|
|
5
|
+
elasticsearch/client.py,sha256=Zik8KKnpJBvbapk4BhZXC7PZiuZwWqtcmMARDNXMwlA,5213
|
|
6
|
+
elasticsearch/compat.py,sha256=hL3mtqVxWwxeiFbNGADva5XruAwK-A6xcu-vrpnDXFs,2657
|
|
7
|
+
elasticsearch/exceptions.py,sha256=ynpP0TLJxur7x7JQJD-CFtXov0bPImGt234gdlAyv6g,4142
|
|
8
|
+
elasticsearch/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
elasticsearch/serializer.py,sha256=vLhhlU6fAjHXB-z2E5ieBe_XKWx4A0o-lbJY9Bknt70,8059
|
|
10
|
+
elasticsearch/transport.py,sha256=CxKo2USPQ-6q4x8Ckfq_dUFWhA1s98p75ghXc3breJI,2248
|
|
11
|
+
elasticsearch/_async/__init__.py,sha256=TZps9WjF-TaSNzBvW5wUCgXRcbHnvE_9xAynBHsMtSo,787
|
|
12
|
+
elasticsearch/_async/helpers.py,sha256=E-nZfxH4qtEFSm33wy1sJ3kHM5aEwcxIFPiho7AeW5w,22802
|
|
13
|
+
elasticsearch/_async/client/__init__.py,sha256=p9ZTGVSW8aoSntzAYCiXdCHDkUzm_8IXEGoEX2orVLQ,250098
|
|
14
|
+
elasticsearch/_async/client/_base.py,sha256=wDJIs-4Z_fDBF0_XvfCmfSuyL6Oh8I2nSGDZyP91XCU,15531
|
|
15
|
+
elasticsearch/_async/client/async_search.py,sha256=is7Y2c9hx10og5vhrK5vQHK6LYetY2LYhty1bpz1Nso,30504
|
|
16
|
+
elasticsearch/_async/client/autoscaling.py,sha256=rOChE7GopR3lfuRgeygHPmHZ5ngMN-WXR45WEdBuYJM,8895
|
|
17
|
+
elasticsearch/_async/client/cat.py,sha256=VYDAT38C0BjI2-EOXJUdNPXXKeSzjRyDX9zChvWs7CY,138917
|
|
18
|
+
elasticsearch/_async/client/ccr.py,sha256=mEp7DA59ePYU1ufU6ESsfdZX-0IpS858mXtG1CwCLkg,36972
|
|
19
|
+
elasticsearch/_async/client/cluster.py,sha256=FeblXwD7_8SeEnpLpFJzluj7acPlcOmr2qceYwTyW6U,50606
|
|
20
|
+
elasticsearch/_async/client/connector.py,sha256=37-etm0MX5wwJPSAxPWBSp10pablnP_BAAioykh4xNs,61311
|
|
21
|
+
elasticsearch/_async/client/dangling_indices.py,sha256=zDhhAeTUvPl3TVT1EuXMm4RFLXSjNJS5qccnjViQfyA,8354
|
|
22
|
+
elasticsearch/_async/client/enrich.py,sha256=Gww5cfDzTTT-IJsuBRZPjp455ONCxC4oehWjCDGHbQ0,9750
|
|
23
|
+
elasticsearch/_async/client/eql.py,sha256=5G8QvXsSR4dIlspyGFa9ha3dQIklUzjCfUCvSgVGSOk,13138
|
|
24
|
+
elasticsearch/_async/client/esql.py,sha256=VK7y0yzko9iQJM1QTM1mCxnwmivjADVRJ6J9ly5qt_Q,6183
|
|
25
|
+
elasticsearch/_async/client/features.py,sha256=LSLT_dp9K9IiEjhbHjLurdo1sXIxrlMkWbGgdDWxkxM,3629
|
|
26
|
+
elasticsearch/_async/client/fleet.py,sha256=5VY0-h7LCmksa0fzXLFUX34EoNFkugUxNXZBJpa9md4,31300
|
|
27
|
+
elasticsearch/_async/client/graph.py,sha256=4cseN8MymM6nsWuxA__PS-SE4VqAPteTWMI0u2zfZRY,4594
|
|
28
|
+
elasticsearch/_async/client/ilm.py,sha256=xn8FYGihL4xzz0WqNUaTTynhJI3wN4eaKqBI36l6bco,24222
|
|
29
|
+
elasticsearch/_async/client/indices.py,sha256=XpD4A6kIeg1hXxA3GvB84qUhG_TI0dntUE21aAQ8T6o,221453
|
|
30
|
+
elasticsearch/_async/client/inference.py,sha256=_eBRxreOSD4Y39Jntdwqr9BQR8osY5ix1lkdtsCXLoQ,12508
|
|
31
|
+
elasticsearch/_async/client/ingest.py,sha256=omwEgiLAt7obl9FJb8yHMcBtIDImkZJ440A_UIWdAAs,24051
|
|
32
|
+
elasticsearch/_async/client/license.py,sha256=85L9YhnJpwWwXXK_EKnJrB4Jw3iif-dySSz504XF33Q,12956
|
|
33
|
+
elasticsearch/_async/client/logstash.py,sha256=mhnvDiLp9lBQrmiK-5lpuAU3zkde94RwkaemZiCNvTc,6136
|
|
34
|
+
elasticsearch/_async/client/migration.py,sha256=TmqOovsIqd2hgQsr7lPOT5yODY1I2kKotYzRugAZcDE,5331
|
|
35
|
+
elasticsearch/_async/client/ml.py,sha256=gIb3w-GB_9h419m63KDJrtdOodUBwlHJ6X94fPUn1SM,258760
|
|
36
|
+
elasticsearch/_async/client/monitoring.py,sha256=GtoD_JztiOf5s3d3TG4gp2MH67Hsg98GSDG8lK13VHU,3818
|
|
37
|
+
elasticsearch/_async/client/nodes.py,sha256=5vhhl10VdUGeVpoHK2k-HNjtSJ4lZlYvLRfg1zvjF4E,24242
|
|
38
|
+
elasticsearch/_async/client/query_rules.py,sha256=Tryx9Q2jVoLkT_FJ_s7KzLqzHUyvlhGbYV5cc41aENA,16947
|
|
39
|
+
elasticsearch/_async/client/rollup.py,sha256=w2mRQskar9WQF8U2Cgt-GVjImOBc6v4Vde5pBH439Fs,21268
|
|
40
|
+
elasticsearch/_async/client/search_application.py,sha256=wb-DrkJtCL4e1-W4mNggdY4DjWGF7EId93STmmbzvXM,16101
|
|
41
|
+
elasticsearch/_async/client/searchable_snapshots.py,sha256=fvSKFUNQJvxCrevlvaBcznb9GB3L-mTWjfMfHmzuoL0,11788
|
|
42
|
+
elasticsearch/_async/client/security.py,sha256=tawwwaqMFpvdQ3W_JHd2x2--nm-5YJtTEhpZ4kD_9Fg,162146
|
|
43
|
+
elasticsearch/_async/client/shutdown.py,sha256=VLUD0VL065THNNuXB4lrA66aAPb_v2WW5oJfJNlfJcs,11350
|
|
44
|
+
elasticsearch/_async/client/slm.py,sha256=jPHUwg17EMh6Gykll33sNiLK9xBW98kvlBh3xYtW-T4,16120
|
|
45
|
+
elasticsearch/_async/client/snapshot.py,sha256=PCoTFnrs6l3fOGxO2_S79E2GSVfbfxT-Z0Oj9x3PkVk,41082
|
|
46
|
+
elasticsearch/_async/client/sql.py,sha256=OEWS3TEuBYHMMaB5otAEa2ie-aljr-UKJ4ThGHa5_xI,17956
|
|
47
|
+
elasticsearch/_async/client/ssl.py,sha256=52KlTmyJfeU2mqq7h7Ch7d14NdmrpSrL1_kanLaVEm4,3636
|
|
48
|
+
elasticsearch/_async/client/synonyms.py,sha256=4vi7EKdQGM5DZizgf99wwmJJYokTUEkA9QdBiX5MTp0,13851
|
|
49
|
+
elasticsearch/_async/client/tasks.py,sha256=KdJn7yVleLOCeVpuJZQPLEbPSF6nDvSG0J3mPo5jbmc,9315
|
|
50
|
+
elasticsearch/_async/client/text_structure.py,sha256=IU5K1CFDcoed8kJLmJHSdjqfL7Pur9GBeZ5r6jozxHM,12046
|
|
51
|
+
elasticsearch/_async/client/transform.py,sha256=G9sFSqNuh7yC3HYjLSQyoGGYJRHQJdIgZin0IwzSNK4,42542
|
|
52
|
+
elasticsearch/_async/client/utils.py,sha256=h64qW1YcQZoJdEpDiYqkgnD3Q_0r2Y_ltUiNpNzpekI,1449
|
|
53
|
+
elasticsearch/_async/client/watcher.py,sha256=HIBQ8dNRYrK1X52wBJJTSpqBNZyu8EADQmIJ7jjO9yc,26482
|
|
54
|
+
elasticsearch/_async/client/xpack.py,sha256=lnTOOBYxQu8IzLR5OkJh1raEp2SRax_eXBiYcf5FsO4,4628
|
|
55
|
+
elasticsearch/_sync/__init__.py,sha256=TZps9WjF-TaSNzBvW5wUCgXRcbHnvE_9xAynBHsMtSo,787
|
|
56
|
+
elasticsearch/_sync/client/__init__.py,sha256=wVd4Aoy8GvrMcai1TDtEjxyFgvkoiTxgmVIpg7jjMi4,249467
|
|
57
|
+
elasticsearch/_sync/client/_base.py,sha256=LesRKQzvgstEPn-hzoY7PBq_4hAyPCzjGiUggGn-fB8,15461
|
|
58
|
+
elasticsearch/_sync/client/async_search.py,sha256=znGy_0Bh5nQl_y1tWE0UxsxYQlSZu0IuxPOx8hYm2PA,30456
|
|
59
|
+
elasticsearch/_sync/client/autoscaling.py,sha256=MEaVghDLVN8Gv_LH1HoiNXdUAY7c2-Sxla4pCpxZAAU,8847
|
|
60
|
+
elasticsearch/_sync/client/cat.py,sha256=-X9Xat5nTYMVMoUR_KHNK20seuD9enZqR1VX4LoDgGg,138605
|
|
61
|
+
elasticsearch/_sync/client/ccr.py,sha256=vgHVO4OTcl24uEHbAFTAm8LQJuu65AtZwpIY0pOGQiU,36816
|
|
62
|
+
elasticsearch/_sync/client/cluster.py,sha256=TGMf8eGKnqF7PiOvzaHl3hbvOu0e0rygSQ6qwvRfbZA,50414
|
|
63
|
+
elasticsearch/_sync/client/connector.py,sha256=9yaeSJErNQRYukWFCWsauF3BjAi-_UZIge-PhBtEoXk,61011
|
|
64
|
+
elasticsearch/_sync/client/dangling_indices.py,sha256=FmL09mX2gkcT_IkPCd7QXlm2YfyN42twwWIfq0tnQKw,8318
|
|
65
|
+
elasticsearch/_sync/client/enrich.py,sha256=0dIcKN-QXa8zR52Z_wc0hmGR2DJw1UsY2fhaCKjRP1Q,9690
|
|
66
|
+
elasticsearch/_sync/client/eql.py,sha256=9sy4NhvcQhKpahHtHM_mpFfLoQ1dClyywmh8RY6cHfs,13090
|
|
67
|
+
elasticsearch/_sync/client/esql.py,sha256=_7ePOiPm__rGcQ-buZ41nS3ef8UGGdfsJIQe5XnYU4w,6171
|
|
68
|
+
elasticsearch/_sync/client/features.py,sha256=XZT8skOz9qeLTVegheBUjDtwMy8Q2hklbgGULdXHLOY,3605
|
|
69
|
+
elasticsearch/_sync/client/fleet.py,sha256=PGcQHK2IvRFHFMCqYDnIjqYyorTRAAmEvoMkOVDcSdE,31264
|
|
70
|
+
elasticsearch/_sync/client/graph.py,sha256=hwsCdovvD6HCAqPSAq2o0mclhWQdDwVUHkyYekA0Pyo,4582
|
|
71
|
+
elasticsearch/_sync/client/ilm.py,sha256=QUGI9nESYP-_k0RFW1EPyGtNcouwQRm9b7oUhvDcaKE,24090
|
|
72
|
+
elasticsearch/_sync/client/indices.py,sha256=fr-dPEvQfT2YnIir6LUGl7RKBeuVJ4hlars-y74AgoU,220745
|
|
73
|
+
elasticsearch/_sync/client/inference.py,sha256=4UjB1pRq2C0bJanZyHAFjt8UU7ldI9XgAg7TssZNLuQ,12460
|
|
74
|
+
elasticsearch/_sync/client/ingest.py,sha256=QP3rwvi4nZGOzmZYbe-u00Pq3h_78U_tGwZFoc1Fi4o,23943
|
|
75
|
+
elasticsearch/_sync/client/license.py,sha256=-Mq5H0MjmHtSYWZTUl-mGvFwMiuXyp9Rd_pHecfwdMQ,12872
|
|
76
|
+
elasticsearch/_sync/client/logstash.py,sha256=F1m9DxPJRTlgYqIXE8iQmArMCZQZBvNxjsQOYCUKE48,6100
|
|
77
|
+
elasticsearch/_sync/client/migration.py,sha256=wyk2Bp6xYEtDsq3WXZuDPwcHO6pPSPfJt0mRL7Rb0Fo,5295
|
|
78
|
+
elasticsearch/_sync/client/ml.py,sha256=LL_9TH4w9wWx6W_g7E0P3jMDbrizxLf7EjvpFohqv44,257884
|
|
79
|
+
elasticsearch/_sync/client/monitoring.py,sha256=gy9AbNYG9nNWVf4zDg40eybAcv3u8auhIkjC04nYWDI,3806
|
|
80
|
+
elasticsearch/_sync/client/nodes.py,sha256=P6w5nOuyr-Rrilsch3WcPQavm-Bh8nCvdjW_b0M7lEg,24158
|
|
81
|
+
elasticsearch/_sync/client/query_rules.py,sha256=UK3CvOro7WZFzJxlNR3qP5YCgZK3uagefzTQC0tUkc8,16851
|
|
82
|
+
elasticsearch/_sync/client/rollup.py,sha256=-7HAIIfARW5cpKIqIyNSxbmEtJsFg6NJeTu-XX0gGwE,21172
|
|
83
|
+
elasticsearch/_sync/client/search_application.py,sha256=bDzsaK84y7PpbcUkLHuJxfYVtJ-7C8qakTRaGb43VwU,16005
|
|
84
|
+
elasticsearch/_sync/client/searchable_snapshots.py,sha256=Nx8z61FZhUCsM-coj8_LOTNL0cFpfpF9tddGVC07hwA,11740
|
|
85
|
+
elasticsearch/_sync/client/security.py,sha256=EUjQhtayvu0sCZzKASTUnWCCGIHmeY6zXMvP8oUWkBc,161462
|
|
86
|
+
elasticsearch/_sync/client/shutdown.py,sha256=XmHwRxJTaETA7w2kc4i98WcMYGaQU04h-kXhMmgeSK0,11314
|
|
87
|
+
elasticsearch/_sync/client/slm.py,sha256=hMbs-DtrUm8CgzKdseyOhF1f2iPBf_EMaLzinBBWask,16012
|
|
88
|
+
elasticsearch/_sync/client/snapshot.py,sha256=-NPYxpO0-x9VKWhDW8LXbutduCULXKNkAz4eGlVlo1U,40938
|
|
89
|
+
elasticsearch/_sync/client/sql.py,sha256=-2DfSuoIDCLkE4SOKsBVMMqEhEE_HWbnRVzzh_YCgc4,17884
|
|
90
|
+
elasticsearch/_sync/client/ssl.py,sha256=pd6JrsTEHmEqqM8S7txfsiqObdAy-kzY9YBXUHrgl3o,3624
|
|
91
|
+
elasticsearch/_sync/client/synonyms.py,sha256=bVU13E-7CLor7jiYfH6_nZNtcULnO8Rwba7Sr9wad6o,13767
|
|
92
|
+
elasticsearch/_sync/client/tasks.py,sha256=2ncovB_GIgjBJd7sdqtooxKSN8Nkb7ZR3dQ014r7WWA,9279
|
|
93
|
+
elasticsearch/_sync/client/text_structure.py,sha256=N2ZrBw6Lah8zxDsonn9Rd64Oz-IEHlgzAi5Yrkvskxc,12022
|
|
94
|
+
elasticsearch/_sync/client/transform.py,sha256=CVT0GdBGqBBC0dInHKM5VFkUx3UhNzaNiYIjZ5SMHnQ,42410
|
|
95
|
+
elasticsearch/_sync/client/utils.py,sha256=aPAIUrofb5AXK5YLgHNqrc10csWnHMSdPWKQSUd-EwI,18714
|
|
96
|
+
elasticsearch/_sync/client/watcher.py,sha256=dD81SjUmhT_4N9NPTG9PbHCCMwTQu9pXl4VhFUQJE6Q,26350
|
|
97
|
+
elasticsearch/_sync/client/xpack.py,sha256=brTWkWurtXGHprcp-ZB77Sn4p7KQgq4y33kV9oEKYso,4604
|
|
98
|
+
elasticsearch/helpers/__init__.py,sha256=7X10XwdP_fP1QTHGcOxGbCvl2oBevkz_DjhjXCh_59I,1470
|
|
99
|
+
elasticsearch/helpers/actions.py,sha256=rSK-tfpYtgD8x72tm_Lyv_aDnyEZQXDrKNKKZm8VM2k,32372
|
|
100
|
+
elasticsearch/helpers/errors.py,sha256=5khkK4zbXsk4ry8HDmGfyzlmZI9KSKP-MivCgcPoO5U,1506
|
|
101
|
+
elasticsearch/helpers/vectorstore/__init__.py,sha256=znQOANiaSZOJco_dkBf06wpFMKwK0OoDcNkkS8NMWKE,2192
|
|
102
|
+
elasticsearch/helpers/vectorstore/_utils.py,sha256=xJwCFq7sqUBeq143tfnfm3i4e-ta88s85wKZmPZwJWg,3985
|
|
103
|
+
elasticsearch/helpers/vectorstore/_async/__init__.py,sha256=TZps9WjF-TaSNzBvW5wUCgXRcbHnvE_9xAynBHsMtSo,787
|
|
104
|
+
elasticsearch/helpers/vectorstore/_async/_utils.py,sha256=wYlPKvAT4bflJjULLB2LMjJroAgX6tjoDGBPT6V1gj8,1608
|
|
105
|
+
elasticsearch/helpers/vectorstore/_async/embedding_service.py,sha256=Qv4HsPC4k6J00K4ajhJPFlET6fOTV-l74iDCr4dpZgc,3655
|
|
106
|
+
elasticsearch/helpers/vectorstore/_async/strategies.py,sha256=YpmCiz-skq2uvJhUY_nFpX_L6eRlAawZdA2jvGj30Hs,16210
|
|
107
|
+
elasticsearch/helpers/vectorstore/_async/vectorstore.py,sha256=U9xOnjLjJmLeT8dltKWYvsDD4jkmyH0ybfxR0Bn6-_Y,16707
|
|
108
|
+
elasticsearch/helpers/vectorstore/_sync/__init__.py,sha256=TZps9WjF-TaSNzBvW5wUCgXRcbHnvE_9xAynBHsMtSo,787
|
|
109
|
+
elasticsearch/helpers/vectorstore/_sync/_utils.py,sha256=5pdvNS5XC3wqShjliW9Njl9tVuyI9WMy0cxc5-97K-c,1569
|
|
110
|
+
elasticsearch/helpers/vectorstore/_sync/embedding_service.py,sha256=sAw_WKUcmyqOOJRqnNesZCzn7ZyA91v4NvvQszHIWJ8,3582
|
|
111
|
+
elasticsearch/helpers/vectorstore/_sync/strategies.py,sha256=LfB2_uQMnPkWpe67hnPxeS1h5rLodnYOgk64hp9bs-s,16108
|
|
112
|
+
elasticsearch/helpers/vectorstore/_sync/vectorstore.py,sha256=bTWLhdGkdXHS4SojSFHHAuBTUUC3OBdiyDqgQmHC_sI,16510
|
|
113
|
+
elasticsearch-8.16.0.dist-info/METADATA,sha256=_xGsSZiHcAz5xzEfESCk9QDzOhXdApNOfiEqiZKxrJ0,8757
|
|
114
|
+
elasticsearch-8.16.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
|
115
|
+
elasticsearch-8.16.0.dist-info/licenses/LICENSE,sha256=XfKg2H1sVi8OoRxoisUlMqoo10TKvHmU_wU39ks7MyA,10143
|
|
116
|
+
elasticsearch-8.16.0.dist-info/licenses/NOTICE,sha256=t4IjKAJ_G-0hYaL4AH16CVS_xDel8UXrJVK6x7JDaGA,61
|
|
117
|
+
elasticsearch-8.16.0.dist-info/RECORD,,
|