elastic_enterprise_search/_async/client/app_search.py (1,912 lines of code) (raw):
# Licensed to Elasticsearch B.V. under one or more contributor
# license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright
# ownership. Elasticsearch B.V. licenses this file to you under
# the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import typing as t
from elastic_transport import ObjectApiResponse
from ..._utils import SKIP_IN_PATH, _quote, _rewrite_parameters
from ._base import BaseClient
class AsyncAppSearch(BaseClient):
@_rewrite_parameters(body_name="body", ignore_deprecated_options={"body", "params"})
async def search_es_search(
self,
*,
engine_name: str,
params: t.Optional[t.Mapping[str, t.Any]] = None,
body: t.Optional[t.Mapping[str, t.Any]] = None,
analytics_query: t.Optional[str] = None,
analytics_tags: t.Optional[t.Union[str, t.Sequence[str]]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Execute the provided Elasticsearch search query against an App Search Engine
`<https://www.elastic.co/guide/en/app-search/current/elasticsearch-search-api-reference.html>`_
:param engine_name: Name of the engine
:param params: Query parameters for the Elasticsearch Search request.
:param body: Body parameters for the Elasticsearch Search request.
:param analytics_query: The search query associated with this request when recording search analytics.
:param analytics_tags: The tags to apply to the query when recording search analytics.
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if params is not None and any(not isinstance(x, str) for x in params.values()):
raise TypeError("Values for 'params' parameter must be of type 'str'")
__headers = {"accept": "application/json", "content-type": "application/json"}
if analytics_query is not None:
__headers["X-Enterprise-Search-Analytics"] = analytics_query
if analytics_tags is not None:
if isinstance(analytics_tags, str):
analytics_tags = (analytics_tags,)
__headers["X-Enterprise-Search-Analytics-Tags"] = ",".join(analytics_tags)
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v0/engines/{_quote(engine_name)}/elasticsearch/_search",
params=params,
body=body,
headers=__headers,
)
# AUTO-GENERATED-API-DEFINITIONS #
@_rewrite_parameters()
async def get_adaptive_relevance_settings(
self,
*,
engine_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Retrieve adaptive relevance settings
`<https://www.elastic.co/guide/en/app-search/current/adaptive-relevance-api-reference.html#adaptive-relevance-api-get-engine-adaptive-relevance-settings>`_
:param engine_name: Name of the engine
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v0/engines/{_quote(engine_name)}/adaptive_relevance/settings",
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def put_adaptive_relevance_settings(
self,
*,
engine_name: str,
curation: t.Mapping[str, t.Any],
) -> ObjectApiResponse[t.Any]:
"""
Update adaptive relevance settings
`<https://www.elastic.co/guide/en/app-search/current/adaptive-relevance-api-reference.html#adaptive-relevance-api-put-engine-adaptive-relevance-settings>`_
:param engine_name: Name of the engine
:param curation:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if curation is None:
raise ValueError("Empty value passed for parameter 'curation'")
__body: t.Dict[str, t.Any] = {}
if curation is not None:
__body["curation"] = curation
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"PUT",
f"/api/as/v0/engines/{_quote(engine_name)}/adaptive_relevance/settings",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def list_adaptive_relevance_suggestions(
self,
*,
engine_name: str,
current_page: t.Optional[int] = None,
filters: t.Optional[t.Mapping[str, t.Any]] = None,
page_size: t.Optional[int] = None,
) -> ObjectApiResponse[t.Any]:
"""
Retrieve adaptive relevance
`<https://www.elastic.co/guide/en/app-search/current/adaptive-relevance-api-reference.html#adaptive-relevance-api-get-engine-adaptive-relevance-suggestions>`_
:param engine_name: Name of the engine
:param current_page:
:param filters:
:param page_size:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__body: t.Dict[str, t.Any] = {}
if current_page is not None:
__body.setdefault("page", {})
__body["page"]["current"] = current_page
if filters is not None:
__body["filters"] = filters
if page_size is not None:
__body.setdefault("page", {})
__body["page"]["size"] = page_size
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v0/engines/{_quote(engine_name)}/adaptive_relevance/suggestions",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_name="body",
)
async def put_adaptive_relevance_suggestions(
self,
*,
engine_name: str,
body: t.Union[
t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]
],
) -> ObjectApiResponse[t.Any]:
"""
Update adaptive relevance
`<https://www.elastic.co/guide/en/app-search/current/adaptive-relevance-api-reference.html#adaptive-relevance-api-put-engine-adaptive-relevance-suggestions>`_
:param engine_name: Name of the engine
:param body:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if body is None:
raise ValueError("Empty value passed for parameter 'body'")
__body = body
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"PUT",
f"/api/as/v0/engines/{_quote(engine_name)}/adaptive_relevance/suggestions",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def get_adaptive_relevance_suggestions(
self,
*,
engine_name: str,
search_suggestion_query: str,
current_page: t.Optional[int] = None,
filters: t.Optional[t.Mapping[str, t.Any]] = None,
page_size: t.Optional[int] = None,
) -> ObjectApiResponse[t.Any]:
"""
Retrieve adaptive relevance for a single query
`<https://www.elastic.co/guide/en/app-search/current/adaptive-relevance-api-reference.html#adaptive-relevance-api-get-engine-adaptive-relevance-suggestions-query>`_
:param engine_name: Name of the engine
:param search_suggestion_query: Query to obtain suggestions
:param current_page:
:param filters:
:param page_size:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if search_suggestion_query in SKIP_IN_PATH:
raise ValueError(
"Empty value passed for parameter 'search_suggestion_query'"
)
__body: t.Dict[str, t.Any] = {}
if current_page is not None:
__body.setdefault("page", {})
__body["page"]["current"] = current_page
if filters is not None:
__body["filters"] = filters
if page_size is not None:
__body.setdefault("page", {})
__body["page"]["size"] = page_size
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v0/engines/{_quote(engine_name)}/adaptive_relevance/suggestions/{_quote(search_suggestion_query)}",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def refresh_adaptive_relevance_update_process(
self,
*,
engine_name: str,
adaptive_relevance_suggestion_type: t.Union["t.Literal['curation']", str],
) -> ObjectApiResponse[t.Any]:
"""
Update suggestions process refresh
`<https://www.elastic.co/guide/en/app-search/current/adaptive-relevance-api-reference.html#adaptive-relevance-api-post-engine-adaptive-relevance-suggestions-update-process-refresh>`_
:param engine_name: Name of the engine
:param adaptive_relevance_suggestion_type: Adaptive relevance suggestion type
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if adaptive_relevance_suggestion_type in SKIP_IN_PATH:
raise ValueError(
"Empty value passed for parameter 'adaptive_relevance_suggestion_type'"
)
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v0/engines/{_quote(engine_name)}/adaptive_relevance/update_process/{_quote(adaptive_relevance_suggestion_type)}/refresh",
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def get_top_clicks_analytics(
self,
*,
engine_name: str,
current_page: t.Optional[int] = None,
filters: t.Optional[t.Mapping[str, t.Any]] = None,
page_size: t.Optional[int] = None,
query: t.Optional[str] = None,
) -> ObjectApiResponse[t.Any]:
"""
Returns the number of clicks received by a document in descending order
`<https://www.elastic.co/guide/en/app-search/current/clicks.html>`_
:param engine_name: Name of the engine
:param current_page:
:param filters:
:param page_size:
:param query:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__body: t.Dict[str, t.Any] = {}
if current_page is not None:
__body.setdefault("page", {})
__body["page"]["current"] = current_page
if filters is not None:
__body["filters"] = filters
if page_size is not None:
__body.setdefault("page", {})
__body["page"]["size"] = page_size
if query is not None:
__body["query"] = query
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/analytics/clicks",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def get_count_analytics(
self,
*,
engine_name: str,
filters: t.Optional[t.Mapping[str, t.Any]] = None,
interval: t.Optional[str] = None,
) -> ObjectApiResponse[t.Any]:
"""
Returns the number of clicks and total number of queries over a period
`<https://www.elastic.co/guide/en/app-search/current/counts.html>`_
:param engine_name: Name of the engine
:param filters:
:param interval:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__body: t.Dict[str, t.Any] = {}
if filters is not None:
__body["filters"] = filters
if interval is not None:
__body["interval"] = interval
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/analytics/counts",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def get_top_queries_analytics(
self,
*,
engine_name: str,
current_page: t.Optional[int] = None,
filters: t.Optional[t.Mapping[str, t.Any]] = None,
page_size: t.Optional[int] = None,
) -> ObjectApiResponse[t.Any]:
"""
Returns queries analytics by usage count
`<https://www.elastic.co/guide/en/app-search/current/queries.html#queries-top-queries>`_
:param engine_name: Name of the engine
:param current_page:
:param filters:
:param page_size:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__body: t.Dict[str, t.Any] = {}
if current_page is not None:
__body.setdefault("page", {})
__body["page"]["current"] = current_page
if filters is not None:
__body["filters"] = filters
if page_size is not None:
__body.setdefault("page", {})
__body["page"]["size"] = page_size
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/analytics/queries",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def log_clickthrough(
self,
*,
engine_name: str,
document_id: str,
query: str,
request_id: t.Optional[str] = None,
tags: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Tracks results that were clicked after a query
`<https://www.elastic.co/guide/en/app-search/current/clickthrough.html>`_
:param engine_name: Name of the engine
:param document_id:
:param query:
:param request_id:
:param tags:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if document_id is None:
raise ValueError("Empty value passed for parameter 'document_id'")
if query is None:
raise ValueError("Empty value passed for parameter 'query'")
__body: t.Dict[str, t.Any] = {}
if document_id is not None:
__body["document_id"] = document_id
if query is not None:
__body["query"] = query
if request_id is not None:
__body["request_id"] = request_id
if tags is not None:
__body["tags"] = tags
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/click",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_name="body",
)
async def get_crawler_url_extraction_result(
self,
*,
engine_name: str,
body: str,
) -> ObjectApiResponse[t.Any]:
"""
Performs an HTTP request to a given URL and extracts content from the page using
standard App Search Crawler extraction pipeline.
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-post-crawler-extract-url>`_
:param engine_name: Name of the engine
:param body:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if body is None:
raise ValueError("Empty value passed for parameter 'body'")
__body = body
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/extract_url",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def create_crawler_crawl_request(
self,
*,
engine_name: str,
overrides: t.Mapping[str, t.Any],
) -> ObjectApiResponse[t.Any]:
"""
Creates a request to perform a crawl of a given engine with the Crawler.
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-post-crawler-crawl-requests>`_
:param engine_name: Name of the engine
:param overrides:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if overrides is None:
raise ValueError("Empty value passed for parameter 'overrides'")
__body: t.Dict[str, t.Any] = {}
if overrides is not None:
__body["overrides"] = overrides
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/crawl_requests",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def list_crawler_crawl_requests(
self,
*,
engine_name: str,
current_page: t.Optional[int] = None,
page_size: t.Optional[int] = None,
) -> ObjectApiResponse[t.Any]:
"""
Returns a list of latest crawl requests for a given engine.
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-crawl-requests>`_
:param engine_name: Name of the engine
:param current_page: The page to fetch. Defaults to 1
:param page_size: The number of results per page
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__query: t.Dict[str, t.Any] = {}
if current_page is not None:
__query["page[current]"] = current_page
if page_size is not None:
__query["page[size]"] = page_size
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/crawl_requests",
params=__query,
headers=__headers,
)
@_rewrite_parameters()
async def get_crawler_crawl_request(
self,
*,
engine_name: str,
crawl_request_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Returns crawl request details.
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-crawl-requests-id>`_
:param engine_name: Name of the engine
:param crawl_request_id: Crawl Request ID
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if crawl_request_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'crawl_request_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/crawl_requests/{_quote(crawl_request_id)}",
headers=__headers,
)
@_rewrite_parameters()
async def get_crawler_active_crawl_request(
self,
*,
engine_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Returns active crawl request details.
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-crawl-requests-active>`_
:param engine_name: Name of the engine
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/crawl_requests/active",
headers=__headers,
)
@_rewrite_parameters()
async def delete_crawler_active_crawl_request(
self,
*,
engine_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Cancels an active crawl request, stopping a running crawl if needed.
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-post-crawler-crawl-requests-active-cancel>`_
:param engine_name: Name of the engine
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/crawl_requests/active/cancel",
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def create_crawler_crawl_rule(
self,
*,
engine_name: str,
domain_id: str,
order: int,
pattern: str,
policy: t.Union["t.Literal['allow', 'deny']", str],
rule: t.Union["t.Literal['begins', 'contains', 'ends', 'regex']", str],
) -> ObjectApiResponse[t.Any]:
"""
Creates a crawl rule for a given engine and domain
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-post-crawl-rules>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
:param order:
:param pattern:
:param policy:
:param rule:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
if order is None:
raise ValueError("Empty value passed for parameter 'order'")
if pattern is None:
raise ValueError("Empty value passed for parameter 'pattern'")
if policy is None:
raise ValueError("Empty value passed for parameter 'policy'")
if rule is None:
raise ValueError("Empty value passed for parameter 'rule'")
__body: t.Dict[str, t.Any] = {}
if order is not None:
__body["order"] = order
if pattern is not None:
__body["pattern"] = pattern
if policy is not None:
__body["policy"] = policy
if rule is not None:
__body["rule"] = rule
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}/crawl_rules",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def put_crawler_crawl_rule(
self,
*,
engine_name: str,
domain_id: str,
crawl_rule_id: str,
order: int,
pattern: str,
policy: t.Union["t.Literal['allow', 'deny']", str],
rule: t.Union["t.Literal['begins', 'contains', 'ends', 'regex']", str],
) -> ObjectApiResponse[t.Any]:
"""
Updates crawl rule configuration
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-put-crawl-rule>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
:param crawl_rule_id: Crawl Rule ID
:param order:
:param pattern:
:param policy:
:param rule:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
if crawl_rule_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'crawl_rule_id'")
if order is None:
raise ValueError("Empty value passed for parameter 'order'")
if pattern is None:
raise ValueError("Empty value passed for parameter 'pattern'")
if policy is None:
raise ValueError("Empty value passed for parameter 'policy'")
if rule is None:
raise ValueError("Empty value passed for parameter 'rule'")
__body: t.Dict[str, t.Any] = {}
if order is not None:
__body["order"] = order
if pattern is not None:
__body["pattern"] = pattern
if policy is not None:
__body["policy"] = policy
if rule is not None:
__body["rule"] = rule
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"PUT",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}/crawl_rules/{_quote(crawl_rule_id)}",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def delete_crawler_crawl_rule(
self,
*,
engine_name: str,
domain_id: str,
crawl_rule_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Deletes a crawl rule from a given domain
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-delete-crawl-rule>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
:param crawl_rule_id: Crawl Rule ID
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
if crawl_rule_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'crawl_rule_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"DELETE",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}/crawl_rules/{_quote(crawl_rule_id)}",
headers=__headers,
)
@_rewrite_parameters()
async def get_crawler_crawl_schedule(
self,
*,
engine_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Returns the current crawl schedule for a given engine
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-crawl-schedule>`_
:param engine_name: Name of the engine
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/crawl_schedule",
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def put_crawler_crawl_schedule(
self,
*,
engine_name: str,
frequency: int,
unit: t.Union["t.Literal['day', 'hour', 'month', 'week']", str],
) -> ObjectApiResponse[t.Any]:
"""
Sets up a crawl schedule for a given engine
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-put-crawler-crawl-schedule>`_
:param engine_name: Name of the engine
:param frequency:
:param unit:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if frequency is None:
raise ValueError("Empty value passed for parameter 'frequency'")
if unit is None:
raise ValueError("Empty value passed for parameter 'unit'")
__body: t.Dict[str, t.Any] = {}
if frequency is not None:
__body["frequency"] = frequency
if unit is not None:
__body["unit"] = unit
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"PUT",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/crawl_schedule",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def delete_crawler_crawl_schedule(
self,
*,
engine_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Deletes a crawl schedule for a given engine
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-delete-crawler-crawl-schedule>`_
:param engine_name: Name of the engine
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"DELETE",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/crawl_schedule",
headers=__headers,
)
@_rewrite_parameters()
async def get_crawler_process_crawl_denied_urls(
self,
*,
engine_name: str,
process_crawl_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Provides a sample list of urls identified for deletion by the given process crawl
id.
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-process-crawls-id-denied-urls>`_
:param engine_name: Name of the engine
:param process_crawl_id: Process Crawl identifier
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if process_crawl_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'process_crawl_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/process_crawls/{_quote(process_crawl_id)}/denied_urls",
headers=__headers,
)
@_rewrite_parameters()
async def list_crawler_domains(
self,
*,
engine_name: str,
current_page: t.Optional[int] = None,
page_size: t.Optional[int] = None,
) -> ObjectApiResponse[t.Any]:
"""
Returns a list of crawler domains
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-domain>`_
:param engine_name: Name of the engine
:param current_page: The page to fetch. Defaults to 1
:param page_size: The number of results per page
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__query: t.Dict[str, t.Any] = {}
if current_page is not None:
__query["page[current]"] = current_page
if page_size is not None:
__query["page[size]"] = page_size
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains",
params=__query,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def create_crawler_domain(
self,
*,
engine_name: str,
crawl_rules: t.Optional[
t.Union[t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]]
] = None,
entry_points: t.Optional[
t.Union[t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]]
] = None,
name: t.Optional[str] = None,
sitemaps: t.Optional[
t.Union[t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]]
] = None,
) -> ObjectApiResponse[t.Any]:
"""
Creates a crawler domain configuration for a given engine
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-post-crawler-domains>`_
:param engine_name: Name of the engine
:param crawl_rules:
:param entry_points:
:param name:
:param sitemaps:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__body: t.Dict[str, t.Any] = {}
if crawl_rules is not None:
__body["crawl_rules"] = crawl_rules
if entry_points is not None:
__body["entry_points"] = entry_points
if name is not None:
__body["name"] = name
if sitemaps is not None:
__body["sitemaps"] = sitemaps
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def get_crawler_domain(
self,
*,
engine_name: str,
domain_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Returns crawler domain configuration details
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-domain>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}",
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def put_crawler_domain(
self,
*,
engine_name: str,
domain_id: str,
crawl_rules: t.Optional[
t.Union[t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]]
] = None,
entry_points: t.Optional[
t.Union[t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]]
] = None,
name: t.Optional[str] = None,
sitemaps: t.Optional[
t.Union[t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]]
] = None,
) -> ObjectApiResponse[t.Any]:
"""
Updates crawler domain configuration for a given domain
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-put-crawler-domain>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
:param crawl_rules:
:param entry_points:
:param name:
:param sitemaps:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
__body: t.Dict[str, t.Any] = {}
if crawl_rules is not None:
__body["crawl_rules"] = crawl_rules
if entry_points is not None:
__body["entry_points"] = entry_points
if name is not None:
__body["name"] = name
if sitemaps is not None:
__body["sitemaps"] = sitemaps
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"PUT",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def delete_crawler_domain(
self,
*,
engine_name: str,
domain_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Deletes crawler domain configuration for a given domain
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-delete-crawler-domain>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"DELETE",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}",
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def create_crawler_entry_point(
self,
*,
engine_name: str,
domain_id: str,
value: str,
) -> ObjectApiResponse[t.Any]:
"""
Creates a crawler domain entry point for a given engine and domain
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-post-entry-points>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
:param value:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
if value is None:
raise ValueError("Empty value passed for parameter 'value'")
__body: t.Dict[str, t.Any] = {}
if value is not None:
__body["value"] = value
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}/entry_points",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def put_crawler_entry_point(
self,
*,
engine_name: str,
domain_id: str,
entry_point_id: str,
value: str,
) -> ObjectApiResponse[t.Any]:
"""
Updates a crawler entry point with a new value
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-put-entry-point>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
:param entry_point_id: Crawler Entry Point identifier
:param value:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
if entry_point_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'entry_point_id'")
if value is None:
raise ValueError("Empty value passed for parameter 'value'")
__body: t.Dict[str, t.Any] = {}
if value is not None:
__body["value"] = value
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"PUT",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}/entry_points/{_quote(entry_point_id)}",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def delete_crawler_entry_point(
self,
*,
engine_name: str,
domain_id: str,
entry_point_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Deletes a crawler entry point
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-delete-crawler-domain>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
:param entry_point_id: Crawler Entry Point identifier
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
if entry_point_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'entry_point_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"DELETE",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}/entry_points/{_quote(entry_point_id)}",
headers=__headers,
)
@_rewrite_parameters()
async def get_crawler_metrics(
self,
) -> ObjectApiResponse[t.Any]:
"""
Retrieves a momentary snapshot of key crawler metrics, including global and node-level
crawler health
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html>`_
"""
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET", "/api/as/v1/crawler/metrics", headers=__headers
)
@_rewrite_parameters()
async def get_crawler_overview(
self,
*,
engine_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Retrieves crawler configuration overview of a given engine, including configured
domains
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler>`_
:param engine_name: Name of the engine
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler",
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def create_crawler_process_crawl(
self,
*,
engine_name: str,
domains: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
dry_run: t.Optional[bool] = None,
) -> ObjectApiResponse[t.Any]:
"""
Queues a task to reprocess crawled documents with current crawl configuration
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-post-crawler-process-crawls>`_
:param engine_name: Name of the engine
:param domains:
:param dry_run:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__body: t.Dict[str, t.Any] = {}
if domains is not None:
__body["domains"] = domains
if dry_run is not None:
__body["dry_run"] = dry_run
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/process_crawls",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def list_crawler_process_crawls(
self,
*,
engine_name: str,
current_page: t.Optional[int] = None,
page_size: t.Optional[int] = None,
) -> ObjectApiResponse[t.Any]:
"""
Returns a list of latest process crawls for a given engine
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-process-crawls>`_
:param engine_name: Name of the engine
:param current_page: The page to fetch. Defaults to 1
:param page_size: The number of results per page
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__query: t.Dict[str, t.Any] = {}
if current_page is not None:
__query["page[current]"] = current_page
if page_size is not None:
__query["page[size]"] = page_size
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/process_crawls",
params=__query,
headers=__headers,
)
@_rewrite_parameters()
async def get_crawler_process_crawl(
self,
*,
engine_name: str,
process_crawl_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Returns process crawl details.
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-process-crawls-id>`_
:param engine_name: Name of the engine
:param process_crawl_id: Process Crawl identifier
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if process_crawl_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'process_crawl_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/process_crawls/{_quote(process_crawl_id)}",
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def create_crawler_sitemap(
self,
*,
engine_name: str,
domain_id: str,
url: str,
) -> ObjectApiResponse[t.Any]:
"""
Creates a crawler sitemap configuration for a given engine and domain
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-post-sitemaps>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
:param url:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
if url is None:
raise ValueError("Empty value passed for parameter 'url'")
__body: t.Dict[str, t.Any] = {}
if url is not None:
__body["url"] = url
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}/sitemaps",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def put_crawler_sitemap(
self,
*,
engine_name: str,
domain_id: str,
sitemap_id: str,
url: str,
) -> ObjectApiResponse[t.Any]:
"""
Updates sitemap configuration
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-put-sitemap>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
:param sitemap_id: Sitemap ID
:param url:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
if sitemap_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'sitemap_id'")
if url is None:
raise ValueError("Empty value passed for parameter 'url'")
__body: t.Dict[str, t.Any] = {}
if url is not None:
__body["url"] = url
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"PUT",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}/sitemaps/{_quote(sitemap_id)}",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def delete_crawler_sitemap(
self,
*,
engine_name: str,
domain_id: str,
sitemap_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Deletes a sitemap from a given domain
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-delete-sitemap>`_
:param engine_name: Name of the engine
:param domain_id: Crawler Domain ID
:param sitemap_id: Sitemap ID
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if domain_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'domain_id'")
if sitemap_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'sitemap_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"DELETE",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/domains/{_quote(domain_id)}/sitemaps/{_quote(sitemap_id)}",
headers=__headers,
)
@_rewrite_parameters(
body_name="body",
)
async def get_crawler_url_tracing_result(
self,
*,
engine_name: str,
body: str,
) -> ObjectApiResponse[t.Any]:
"""
Returns information about the history of a given URL with the App Search Crawler.
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-post-crawler-trace-url>`_
:param engine_name: Name of the engine
:param body:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if body is None:
raise ValueError("Empty value passed for parameter 'body'")
__body = body
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/trace_url",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_name="body",
)
async def get_crawler_url_validation_result(
self,
*,
engine_name: str,
body: str,
) -> ObjectApiResponse[t.Any]:
"""
Performs a number of checks on a given URL to make sure it is ready to be crawled
and ingested into App Search.
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-post-crawler-validate-url>`_
:param engine_name: Name of the engine
:param body:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if body is None:
raise ValueError("Empty value passed for parameter 'body'")
__body = body
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/crawler/validate_url",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_name="body",
)
async def get_crawler_domain_validation_result(
self,
*,
body: str,
) -> ObjectApiResponse[t.Any]:
"""
Performs a number of checks on a given domain name to make sure it is ready to
be crawled and ingested into App Search.
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-post-crawler-validate-domain>`_
:param body:
"""
if body is None:
raise ValueError("Empty value passed for parameter 'body'")
__body = body
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST", "/api/as/v1/crawler/validate_url", body=__body, headers=__headers
)
@_rewrite_parameters()
async def get_crawler_user_agent(
self,
) -> ObjectApiResponse[t.Any]:
"""
Retrieves the currently configured value for the User-Agent header used for all
Crawler HTTP requests
`<https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-user-agent>`_
"""
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET", "/api/as/v1/crawler/user_agent", headers=__headers
)
@_rewrite_parameters()
async def list_api_keys(
self,
*,
current_page: t.Optional[int] = None,
page_size: t.Optional[int] = None,
) -> ObjectApiResponse[t.Any]:
"""
List the details of all API keys
`<https://www.elastic.co/guide/en/app-search/current/credentials.html#credentials-all>`_
:param current_page: The page to fetch. Defaults to 1
:param page_size: The number of results per page
"""
__query: t.Dict[str, t.Any] = {}
if current_page is not None:
__query["page[current]"] = current_page
if page_size is not None:
__query["page[size]"] = page_size
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET", "/api/as/v1/credentials", params=__query, headers=__headers
)
@_rewrite_parameters(
body_fields=True,
)
async def create_api_key(
self,
*,
name: str,
type: t.Union["t.Literal['admin', 'private', 'search']", str],
access_all_engines: t.Optional[bool] = None,
engines: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
read: t.Optional[bool] = None,
write: t.Optional[bool] = None,
) -> ObjectApiResponse[t.Any]:
"""
Creates an App Search API key
`<https://www.elastic.co/guide/en/app-search/current/credentials.html#credentials-create>`_
:param name:
:param type:
:param access_all_engines:
:param engines:
:param read:
:param write:
"""
if name is None:
raise ValueError("Empty value passed for parameter 'name'")
if type is None:
raise ValueError("Empty value passed for parameter 'type'")
__body: t.Dict[str, t.Any] = {}
if name is not None:
__body["name"] = name
if type is not None:
__body["type"] = type
if access_all_engines is not None:
__body["access_all_engines"] = access_all_engines
if engines is not None:
__body["engines"] = engines
if read is not None:
__body["read"] = read
if write is not None:
__body["write"] = write
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST", "/api/as/v1/credentials", body=__body, headers=__headers
)
@_rewrite_parameters()
async def get_api_key(
self,
*,
api_key_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Retrieves details of an API key
`<https://www.elastic.co/guide/en/app-search/current/credentials.html#credentials-single>`_
:param api_key_name: Name of an API key
"""
if api_key_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'api_key_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET", f"/api/as/v1/credentials/{_quote(api_key_name)}", headers=__headers
)
@_rewrite_parameters(
body_fields=True,
)
async def put_api_key(
self,
*,
api_key_name: str,
name: str,
type: t.Union["t.Literal['admin', 'private', 'search']", str],
access_all_engines: t.Optional[bool] = None,
engines: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
read: t.Optional[bool] = None,
write: t.Optional[bool] = None,
) -> ObjectApiResponse[t.Any]:
"""
Updates an API key
`<https://www.elastic.co/guide/en/app-search/current/credentials.html#credentials-update>`_
:param api_key_name: Name of an API key
:param name:
:param type:
:param access_all_engines:
:param engines:
:param read:
:param write:
"""
if api_key_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'api_key_name'")
if name is None:
raise ValueError("Empty value passed for parameter 'name'")
if type is None:
raise ValueError("Empty value passed for parameter 'type'")
__body: t.Dict[str, t.Any] = {}
if name is not None:
__body["name"] = name
if type is not None:
__body["type"] = type
if access_all_engines is not None:
__body["access_all_engines"] = access_all_engines
if engines is not None:
__body["engines"] = engines
if read is not None:
__body["read"] = read
if write is not None:
__body["write"] = write
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"PUT",
f"/api/as/v1/credentials/{_quote(api_key_name)}",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def delete_api_key(
self,
*,
api_key_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Deletes a given API key
`<https://www.elastic.co/guide/en/app-search/current/credentials.html#credentials-destroy>`_
:param api_key_name: Name of an API key
"""
if api_key_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'api_key_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"DELETE",
f"/api/as/v1/credentials/{_quote(api_key_name)}",
headers=__headers,
)
@_rewrite_parameters()
async def list_curations(
self,
*,
engine_name: str,
current_page: t.Optional[int] = None,
page_size: t.Optional[int] = None,
) -> ObjectApiResponse[t.Any]:
"""
Retrieve available curations for the given engine
`<https://www.elastic.co/guide/en/app-search/current/curations.html#curations-read>`_
:param engine_name: Name of the engine
:param current_page: The page to fetch. Defaults to 1
:param page_size: The number of results per page
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__query: t.Dict[str, t.Any] = {}
if current_page is not None:
__query["page[current]"] = current_page
if page_size is not None:
__query["page[size]"] = page_size
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/curations",
params=__query,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def create_curation(
self,
*,
engine_name: str,
queries: t.Union[t.List[str], t.Tuple[str, ...]],
hidden: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
promoted: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
suggestion: t.Optional[t.Mapping[str, t.Any]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Create a new curation for the engine
`<https://www.elastic.co/guide/en/app-search/current/curations.html#curations-create>`_
:param engine_name: Name of the engine
:param queries:
:param hidden:
:param promoted:
:param suggestion:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if queries is None:
raise ValueError("Empty value passed for parameter 'queries'")
__body: t.Dict[str, t.Any] = {}
if queries is not None:
__body["queries"] = queries
if hidden is not None:
__body["hidden"] = hidden
if promoted is not None:
__body["promoted"] = promoted
if suggestion is not None:
__body["suggestion"] = suggestion
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/curations",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def get_curation(
self,
*,
engine_name: str,
curation_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Retrieves a curation by ID
`<https://www.elastic.co/guide/en/app-search/current/curations.html#curations-read>`_
:param engine_name: Name of the engine
:param curation_id: Curation ID
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if curation_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'curation_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/curations/{_quote(curation_id)}",
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def put_curation(
self,
*,
engine_name: str,
curation_id: str,
queries: t.Union[t.List[str], t.Tuple[str, ...]],
hidden: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
promoted: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
suggestion: t.Optional[t.Mapping[str, t.Any]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Updates an existing curation
`<https://www.elastic.co/guide/en/app-search/current/curations.html#curations-update>`_
:param engine_name: Name of the engine
:param curation_id: Curation ID
:param queries:
:param hidden:
:param promoted:
:param suggestion:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if curation_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'curation_id'")
if queries is None:
raise ValueError("Empty value passed for parameter 'queries'")
__body: t.Dict[str, t.Any] = {}
if queries is not None:
__body["queries"] = queries
if hidden is not None:
__body["hidden"] = hidden
if promoted is not None:
__body["promoted"] = promoted
if suggestion is not None:
__body["suggestion"] = suggestion
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"PUT",
f"/api/as/v1/engines/{_quote(engine_name)}/curations/{_quote(curation_id)}",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def delete_curation(
self,
*,
engine_name: str,
curation_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Deletes a curation set by ID
`<https://www.elastic.co/guide/en/app-search/current/curations.html#curations-destroy>`_
:param engine_name: Name of the engine
:param curation_id: Curation ID
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if curation_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'curation_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"DELETE",
f"/api/as/v1/engines/{_quote(engine_name)}/curations/{_quote(curation_id)}",
headers=__headers,
)
@_rewrite_parameters()
async def get_documents(
self,
*,
engine_name: str,
document_ids: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Retrieves one or more documents by id
`<https://www.elastic.co/guide/en/app-search/current/documents.html#documents-get>`_
:param engine_name: Name of the engine
:param document_ids: List of Document IDs to fetch
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__query: t.Dict[str, t.Any] = {}
if document_ids is not None:
__query["ids[]"] = document_ids
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/documents",
params=__query,
headers=__headers,
)
@_rewrite_parameters(
body_name="documents",
)
async def index_documents(
self,
*,
engine_name: str,
documents: t.Optional[
t.Union[t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]]
] = None,
) -> ObjectApiResponse[t.Any]:
"""
Create or update documents
`<https://www.elastic.co/guide/en/app-search/current/documents.html#documents-create>`_
:param engine_name: Name of the engine
:param documents:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if documents is not None:
__body = documents
else:
__body = None
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/documents",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_name="document_ids",
)
async def delete_documents(
self,
*,
engine_name: str,
document_ids: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Deletes documents for given Document IDs
`<https://www.elastic.co/guide/en/app-search/current/documents.html#documents-delete>`_
:param engine_name: Name of the engine
:param document_ids:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if document_ids is not None:
__body = document_ids
else:
__body = None
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"DELETE",
f"/api/as/v1/engines/{_quote(engine_name)}/documents",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_name="documents",
)
async def put_documents(
self,
*,
engine_name: str,
documents: t.Optional[
t.Union[t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]]
] = None,
) -> ObjectApiResponse[t.Any]:
"""
Update specific document fields by id and field
`<https://www.elastic.co/guide/en/app-search/current/documents.html#documents-partial>`_
:param engine_name: Name of the engine
:param documents:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if documents is not None:
__body = documents
else:
__body = None
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"PATCH",
f"/api/as/v1/engines/{_quote(engine_name)}/documents",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def list_documents(
self,
*,
engine_name: str,
current_page: t.Optional[int] = None,
page_size: t.Optional[int] = None,
) -> ObjectApiResponse[t.Any]:
"""
Lists up to 10,000 documents
`<https://www.elastic.co/guide/en/app-search/current/documents.html#documents-list>`_
:param engine_name: Name of the engine
:param current_page: The page to fetch. Defaults to 1
:param page_size: The number of results per page
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__query: t.Dict[str, t.Any] = {}
if current_page is not None:
__query["page[current]"] = current_page
if page_size is not None:
__query["page[size]"] = page_size
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/documents/list",
params=__query,
headers=__headers,
)
@_rewrite_parameters()
async def list_engines(
self,
*,
current_page: t.Optional[int] = None,
page_size: t.Optional[int] = None,
) -> ObjectApiResponse[t.Any]:
"""
Retrieves all engines with optional pagination support
`<https://www.elastic.co/guide/en/app-search/current/engines.html#engines-list>`_
:param current_page: The page to fetch. Defaults to 1
:param page_size: The number of results per page
"""
__query: t.Dict[str, t.Any] = {}
if current_page is not None:
__query["page[current]"] = current_page
if page_size is not None:
__query["page[size]"] = page_size
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET", "/api/as/v1/engines", params=__query, headers=__headers
)
@_rewrite_parameters(
body_fields=True,
)
async def create_engine(
self,
*,
engine_name: str,
index_create_settings_override: t.Optional[t.Mapping[str, t.Any]] = None,
language: t.Optional[
t.Union[
"t.Literal['da', 'de', 'en', 'es', 'fr', 'it', 'ja', 'ko', 'nl', 'pt', 'pt-br', 'ru', 'th', 'zh']",
str,
]
] = None,
source_engines: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
type: t.Optional[t.Union["t.Literal['default', 'meta']", str]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Creates an App Search Engine
`<https://www.elastic.co/guide/en/app-search/current/engines.html#engines-create>`_
:param engine_name:
:param index_create_settings_override:
:param language:
:param source_engines:
:param type:
"""
if engine_name is None:
raise ValueError("Empty value passed for parameter 'engine_name'")
__body: t.Dict[str, t.Any] = {}
if engine_name is not None:
__body["name"] = engine_name
if index_create_settings_override is not None:
__body["index_create_settings_override"] = index_create_settings_override
if language is not None:
__body["language"] = language
if source_engines is not None:
__body["source_engines"] = source_engines
if type is not None:
__body["type"] = type
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST", "/api/as/v1/engines", body=__body, headers=__headers
)
@_rewrite_parameters()
async def get_engine(
self,
*,
engine_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Retrieves details of a given engine by its name
`<https://www.elastic.co/guide/en/app-search/current/engines.html#engines-get>`_
:param engine_name: Name of the engine
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET", f"/api/as/v1/engines/{_quote(engine_name)}", headers=__headers
)
@_rewrite_parameters()
async def delete_engine(
self,
*,
engine_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Delete an engine by name
`<https://www.elastic.co/guide/en/app-search/current/engines.html#engines-delete>`_
:param engine_name: Name of the engine
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"DELETE", f"/api/as/v1/engines/{_quote(engine_name)}", headers=__headers
)
@_rewrite_parameters(
body_name="source_engines",
)
async def delete_meta_engine_source(
self,
*,
engine_name: str,
source_engines: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Deletes a source engine from a given meta engine
`<https://www.elastic.co/guide/en/app-search/current/meta-engines.html#meta-engines-remove-source-engines>`_
:param engine_name: Name of the engine
:param source_engines:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if source_engines is not None:
__body = source_engines
else:
__body = None
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"DELETE",
f"/api/as/v1/engines/{_quote(engine_name)}/source_engines",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_name="source_engines",
)
async def add_meta_engine_source(
self,
*,
engine_name: str,
source_engines: t.Optional[t.Union[t.List[str], t.Tuple[str, ...]]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Adds a source engine to a given meta engine
`<https://www.elastic.co/guide/en/app-search/current/meta-engines.html#meta-engines-add-source-engines>`_
:param engine_name: Name of the engine
:param source_engines:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if source_engines is not None:
__body = source_engines
else:
__body = None
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/source_engines",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def get_api_logs(
self,
*,
engine_name: str,
filters: t.Mapping[str, t.Any],
page: t.Optional[t.Mapping[str, t.Any]] = None,
query: t.Optional[str] = None,
sort_direction: t.Optional[t.Union["t.Literal['asc', 'desc']", str]] = None,
) -> ObjectApiResponse[t.Any]:
"""
The API Log displays API request and response data at the Engine level
`<https://www.elastic.co/guide/en/app-search/current/api-logs.html>`_
:param engine_name: Name of the engine
:param filters:
:param page:
:param query:
:param sort_direction:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if filters is None:
raise ValueError("Empty value passed for parameter 'filters'")
__body: t.Dict[str, t.Any] = {}
if filters is not None:
__body["filters"] = filters
if page is not None:
__body["page"] = page
if query is not None:
__body["query"] = query
if sort_direction is not None:
__body["sort_direction"] = sort_direction
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/logs/api",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def query_suggestion(
self,
*,
engine_name: str,
query: t.Optional[str] = None,
size: t.Optional[int] = None,
types: t.Optional[t.Mapping[str, t.Any]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Provide relevant query suggestions for incomplete queries
`<https://www.elastic.co/guide/en/app-search/current/query-suggestion.html>`_
:param engine_name: Name of the engine
:param query:
:param size:
:param types:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__body: t.Dict[str, t.Any] = {}
if query is not None:
__body["query"] = query
if size is not None:
__body["size"] = size
if types is not None:
__body["types"] = types
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/query_suggestion",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def get_schema(
self,
*,
engine_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Retrieve current schema for the engine
`<https://www.elastic.co/guide/en/app-search/current/schema.html#schema-read>`_
:param engine_name: Name of the engine
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET", f"/api/as/v1/engines/{_quote(engine_name)}/schema", headers=__headers
)
@_rewrite_parameters(
body_name="schema",
)
async def put_schema(
self,
*,
engine_name: str,
schema: t.Optional[t.Mapping[str, t.Any]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Update schema for the current engine
`<https://www.elastic.co/guide/en/app-search/current/schema.html#schema-patch>`_
:param engine_name: Name of the engine
:param schema:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if schema is not None:
__body = schema
else:
__body = None
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/schema",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def search(
self,
*,
engine_name: str,
query: str,
analytics: t.Optional[t.Mapping[str, t.Any]] = None,
boosts: t.Optional[t.Mapping[str, t.Any]] = None,
current_page: t.Optional[int] = None,
facets: t.Optional[t.Mapping[str, t.Any]] = None,
filters: t.Optional[t.Mapping[str, t.Any]] = None,
group: t.Optional[t.Mapping[str, t.Any]] = None,
page_size: t.Optional[int] = None,
result_fields: t.Optional[t.Mapping[str, t.Any]] = None,
search_fields: t.Optional[t.Mapping[str, t.Any]] = None,
sort: t.Optional[
t.Union[t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]]
] = None,
) -> ObjectApiResponse[t.Any]:
"""
Submit a search and receive a set of results with meta data
`<https://www.elastic.co/guide/en/app-search/current/search.html>`_
:param engine_name: Name of the engine
:param query:
:param analytics:
:param boosts:
:param current_page:
:param facets:
:param filters:
:param group:
:param page_size:
:param result_fields:
:param search_fields:
:param sort:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if query is None:
raise ValueError("Empty value passed for parameter 'query'")
__body: t.Dict[str, t.Any] = {}
if query is not None:
__body["query"] = query
if analytics is not None:
__body["analytics"] = analytics
if boosts is not None:
__body["boosts"] = boosts
if current_page is not None:
__body.setdefault("page", {})
__body["page"]["current"] = current_page
if facets is not None:
__body["facets"] = facets
if filters is not None:
__body["filters"] = filters
if group is not None:
__body["group"] = group
if page_size is not None:
__body.setdefault("page", {})
__body["page"]["size"] = page_size
if result_fields is not None:
__body["result_fields"] = result_fields
if search_fields is not None:
__body["search_fields"] = search_fields
if sort is not None:
__body["sort"] = sort
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/search",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def multi_search(
self,
*,
engine_name: str,
queries: t.Union[
t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]
],
) -> ObjectApiResponse[t.Any]:
"""
Submit a multi search query and receive a set of results with meta data
`<https://www.elastic.co/guide/en/app-search/current/multi-search.html>`_
:param engine_name: Name of the engine
:param queries:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if queries is None:
raise ValueError("Empty value passed for parameter 'queries'")
__body: t.Dict[str, t.Any] = {}
if queries is not None:
__body["queries"] = queries
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/multi_search",
body=__body,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def search_explain(
self,
*,
engine_name: str,
query: str,
analytics: t.Optional[t.Mapping[str, t.Any]] = None,
boosts: t.Optional[t.Mapping[str, t.Any]] = None,
current_page: t.Optional[int] = None,
facets: t.Optional[t.Mapping[str, t.Any]] = None,
filters: t.Optional[t.Mapping[str, t.Any]] = None,
group: t.Optional[t.Mapping[str, t.Any]] = None,
page_size: t.Optional[int] = None,
result_fields: t.Optional[t.Mapping[str, t.Any]] = None,
search_fields: t.Optional[t.Mapping[str, t.Any]] = None,
sort: t.Optional[
t.Union[t.List[t.Mapping[str, t.Any]], t.Tuple[t.Mapping[str, t.Any], ...]]
] = None,
) -> ObjectApiResponse[t.Any]:
"""
Submit a search and retrieve an Elasticsearch query
`<https://www.elastic.co/guide/en/app-search/current/search-explain.html>`_
:param engine_name: Name of the engine
:param query:
:param analytics:
:param boosts:
:param current_page:
:param facets:
:param filters:
:param group:
:param page_size:
:param result_fields:
:param search_fields:
:param sort:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if query is None:
raise ValueError("Empty value passed for parameter 'query'")
__body: t.Dict[str, t.Any] = {}
if query is not None:
__body["query"] = query
if analytics is not None:
__body["analytics"] = analytics
if boosts is not None:
__body["boosts"] = boosts
if current_page is not None:
__body.setdefault("page", {})
__body["page"]["current"] = current_page
if facets is not None:
__body["facets"] = facets
if filters is not None:
__body["filters"] = filters
if group is not None:
__body["group"] = group
if page_size is not None:
__body.setdefault("page", {})
__body["page"]["size"] = page_size
if result_fields is not None:
__body["result_fields"] = result_fields
if search_fields is not None:
__body["search_fields"] = search_fields
if sort is not None:
__body["sort"] = sort
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/search_explain",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def get_search_settings(
self,
*,
engine_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Retrieve current search settings for the engine
`<https://www.elastic.co/guide/en/app-search/current/search-settings.html#search-settings-show>`_
:param engine_name: Name of the engine
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/search_settings",
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def put_search_settings(
self,
*,
engine_name: str,
boosts: t.Optional[t.Mapping[str, t.Any]] = None,
precision: t.Optional[int] = None,
precision_enabled: t.Optional[bool] = None,
result_fields: t.Optional[t.Mapping[str, t.Any]] = None,
search_fields: t.Optional[t.Mapping[str, t.Any]] = None,
) -> ObjectApiResponse[t.Any]:
"""
Updates search settings for the engine
`<https://www.elastic.co/guide/en/app-search/current/search-settings.html#search-settings-update>`_
:param engine_name: Name of the engine
:param boosts:
:param precision:
:param precision_enabled:
:param result_fields:
:param search_fields:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__body: t.Dict[str, t.Any] = {}
if boosts is not None:
__body["boosts"] = boosts
if precision is not None:
__body["precision"] = precision
if precision_enabled is not None:
__body["precision_enabled"] = precision_enabled
if result_fields is not None:
__body["result_fields"] = result_fields
if search_fields is not None:
__body["search_fields"] = search_fields
__headers = {"accept": "application/json"}
if __body is not None:
__headers["content-type"] = "application/json"
return await self.perform_request( # type: ignore[return-value]
"PUT",
f"/api/as/v1/engines/{_quote(engine_name)}/search_settings",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def reset_search_settings(
self,
*,
engine_name: str,
) -> ObjectApiResponse[t.Any]:
"""
Resets search settings for the engine
`<https://www.elastic.co/guide/en/app-search/current/search-settings.html#search-settings-reset>`_
:param engine_name: Name of the engine
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/search_settings/reset",
headers=__headers,
)
@_rewrite_parameters()
async def list_synonym_sets(
self,
*,
engine_name: str,
current_page: t.Optional[int] = None,
page_size: t.Optional[int] = None,
) -> ObjectApiResponse[t.Any]:
"""
Retrieves all available synonym sets for the engine
`<https://www.elastic.co/guide/en/app-search/current/synonyms.html#synonyms-get>`_
:param engine_name: Name of the engine
:param current_page: The page to fetch. Defaults to 1
:param page_size: The number of results per page
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
__query: t.Dict[str, t.Any] = {}
if current_page is not None:
__query["page[current]"] = current_page
if page_size is not None:
__query["page[size]"] = page_size
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/synonyms",
params=__query,
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def create_synonym_set(
self,
*,
engine_name: str,
synonyms: t.Union[t.List[str], t.Tuple[str, ...]],
) -> ObjectApiResponse[t.Any]:
"""
Creates a new synonym set for the engine
`<https://www.elastic.co/guide/en/app-search/current/synonyms.html#synonyms-create>`_
:param engine_name: Name of the engine
:param synonyms:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if synonyms is None:
raise ValueError("Empty value passed for parameter 'synonyms'")
__body: t.Dict[str, t.Any] = {}
if synonyms is not None:
__body["synonyms"] = synonyms
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"POST",
f"/api/as/v1/engines/{_quote(engine_name)}/synonyms",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def get_synonym_set(
self,
*,
engine_name: str,
synonym_set_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Retrieves a synonym set by ID
`<https://www.elastic.co/guide/en/app-search/current/synonyms.html#synonyms-list-one>`_
:param engine_name: Name of the engine
:param synonym_set_id: Synonym Set ID
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if synonym_set_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'synonym_set_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"GET",
f"/api/as/v1/engines/{_quote(engine_name)}/synonyms/{_quote(synonym_set_id)}",
headers=__headers,
)
@_rewrite_parameters(
body_fields=True,
)
async def put_synonym_set(
self,
*,
engine_name: str,
synonym_set_id: str,
synonyms: t.Union[t.List[str], t.Tuple[str, ...]],
) -> ObjectApiResponse[t.Any]:
"""
Updates a synonym set by ID
`<https://www.elastic.co/guide/en/app-search/current/synonyms.html#synonyms-update>`_
:param engine_name: Name of the engine
:param synonym_set_id: Synonym Set ID
:param synonyms:
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if synonym_set_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'synonym_set_id'")
if synonyms is None:
raise ValueError("Empty value passed for parameter 'synonyms'")
__body: t.Dict[str, t.Any] = {}
if synonyms is not None:
__body["synonyms"] = synonyms
__headers = {"accept": "application/json", "content-type": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"PUT",
f"/api/as/v1/engines/{_quote(engine_name)}/synonyms/{_quote(synonym_set_id)}",
body=__body,
headers=__headers,
)
@_rewrite_parameters()
async def delete_synonym_set(
self,
*,
engine_name: str,
synonym_set_id: str,
) -> ObjectApiResponse[t.Any]:
"""
Deletes a synonym set by ID
`<https://www.elastic.co/guide/en/app-search/current/synonyms.html#synonyms-delete>`_
:param engine_name: Name of the engine
:param synonym_set_id: Synonym Set ID
"""
if engine_name in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'engine_name'")
if synonym_set_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for parameter 'synonym_set_id'")
__headers = {"accept": "application/json"}
return await self.perform_request( # type: ignore[return-value]
"DELETE",
f"/api/as/v1/engines/{_quote(engine_name)}/synonyms/{_quote(synonym_set_id)}",
headers=__headers,
)