1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# Licensed to Elasticsearch B.V under one or more agreements.
# Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
# See the LICENSE file in the project root for more information
from .utils import NamespacedClient, SKIP_IN_PATH, query_params, _make_path
class AsyncSearchClient(NamespacedClient):
@query_params()
async def delete(self, id, params=None, headers=None):
"""
Deletes an async search by ID. If the search is still running, the search
request will be cancelled. Otherwise, the saved search results are deleted.
`<https://www.elastic.co/guide/en/elasticsearch/reference/7.8/async-search.html>`_
:arg id: The async search ID
"""
if id in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'id'.")
return await self.transport.perform_request(
"DELETE", _make_path("_async_search", id), params=params, headers=headers
)
@query_params("keep_alive", "typed_keys", "wait_for_completion_timeout")
async def get(self, id, params=None, headers=None):
"""
Retrieves the results of a previously submitted async search request given its
ID.
`<https://www.elastic.co/guide/en/elasticsearch/reference/7.8/async-search.html>`_
:arg id: The async search ID
:arg keep_alive: Specify the time interval in which the results
(partial or final) for this search will be available
:arg typed_keys: Specify whether aggregation and suggester names
should be prefixed by their respective types in the response
:arg wait_for_completion_timeout: Specify the time that the
request should block waiting for the final response
"""
if id in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'id'.")
return await self.transport.perform_request(
"GET", _make_path("_async_search", id), params=params, headers=headers
)
@query_params(
"_source",
"_source_excludes",
"_source_includes",
"allow_no_indices",
"allow_partial_search_results",
"analyze_wildcard",
"analyzer",
"batched_reduce_size",
"default_operator",
"df",
"docvalue_fields",
"expand_wildcards",
"explain",
"from_",
"ignore_throttled",
"ignore_unavailable",
"keep_alive",
"keep_on_completion",
"lenient",
"max_concurrent_shard_requests",
"preference",
"q",
"request_cache",
"routing",
"search_type",
"seq_no_primary_term",
"size",
"sort",
"stats",
"stored_fields",
"suggest_field",
"suggest_mode",
"suggest_size",
"suggest_text",
"terminate_after",
"timeout",
"track_scores",
"track_total_hits",
"typed_keys",
"version",
"wait_for_completion_timeout",
)
async def submit(self, body=None, index=None, params=None, headers=None):
"""
Executes a search request asynchronously.
`<https://www.elastic.co/guide/en/elasticsearch/reference/7.8/async-search.html>`_
:arg body: The search definition using the Query DSL
:arg index: A comma-separated list of index names to search; use
`_all` or empty string to perform the operation on all indices
:arg _source: True or false to return the _source field or not,
or a list of fields to return
:arg _source_excludes: A list of fields to exclude from the
returned _source field
:arg _source_includes: A list of fields to extract and return
from the _source field
:arg allow_no_indices: Whether to ignore if a wildcard indices
expression resolves into no concrete indices. (This includes `_all`
string or when no indices have been specified)
:arg allow_partial_search_results: Indicate if an error should
be returned if there is a partial search failure or timeout Default:
True
:arg analyze_wildcard: Specify whether wildcard and prefix
queries should be analyzed (default: false)
:arg analyzer: The analyzer to use for the query string
:arg batched_reduce_size: The number of shard results that
should be reduced at once on the coordinating node. This value should be
used as the granularity at which progress results will be made
available. Default: 5
:arg default_operator: The default operator for query string
query (AND or OR) Valid choices: AND, OR Default: OR
:arg df: The field to use as default where no field prefix is
given in the query string
:arg docvalue_fields: A comma-separated list of fields to return
as the docvalue representation of a field for each hit
:arg expand_wildcards: Whether to expand wildcard expression to
concrete indices that are open, closed or both. Valid choices: open,
closed, hidden, none, all Default: open
:arg explain: Specify whether to return detailed information
about score computation as part of a hit
:arg from_: Starting offset (default: 0)
:arg ignore_throttled: Whether specified concrete, expanded or
aliased indices should be ignored when throttled
:arg ignore_unavailable: Whether specified concrete indices
should be ignored when unavailable (missing or closed)
:arg keep_alive: Update the time interval in which the results
(partial or final) for this search will be available Default: 5d
:arg keep_on_completion: Control whether the response should be
stored in the cluster if it completed within the provided
[wait_for_completion] time (default: false)
:arg lenient: Specify whether format-based query failures (such
as providing text to a numeric field) should be ignored
:arg max_concurrent_shard_requests: The number of concurrent
shard requests per node this search executes concurrently. This value
should be used to limit the impact of the search on the cluster in order
to limit the number of concurrent shard requests Default: 5
:arg preference: Specify the node or shard the operation should
be performed on (default: random)
:arg q: Query in the Lucene query string syntax
:arg request_cache: Specify if request cache should be used for
this request or not, defaults to true
:arg routing: A comma-separated list of specific routing values
:arg search_type: Search operation type Valid choices:
query_then_fetch, dfs_query_then_fetch
:arg seq_no_primary_term: Specify whether to return sequence
number and primary term of the last modification of each hit
:arg size: Number of hits to return (default: 10)
:arg sort: A comma-separated list of <field>:<direction> pairs
:arg stats: Specific 'tag' of the request for logging and
statistical purposes
:arg stored_fields: A comma-separated list of stored fields to
return as part of a hit
:arg suggest_field: Specify which field to use for suggestions
:arg suggest_mode: Specify suggest mode Valid choices: missing,
popular, always Default: missing
:arg suggest_size: How many suggestions to return in response
:arg suggest_text: The source text for which the suggestions
should be returned
:arg terminate_after: The maximum number of documents to collect
for each shard, upon reaching which the query execution will terminate
early.
:arg timeout: Explicit operation timeout
:arg track_scores: Whether to calculate and return scores even
if they are not used for sorting
:arg track_total_hits: Indicate if the number of documents that
match the query should be tracked
:arg typed_keys: Specify whether aggregation and suggester names
should be prefixed by their respective types in the response
:arg version: Specify whether to return document version as part
of a hit
:arg wait_for_completion_timeout: Specify the time that the
request should block waiting for the final response Default: 1s
"""
# from is a reserved word so it cannot be used, use from_ instead
if "from_" in params:
params["from"] = params.pop("from_")
return await self.transport.perform_request(
"POST",
_make_path(index, "_async_search"),
params=params,
headers=headers,
body=body,
)