Update ES client API's for some missing 7 features (#949)

* Update cat.py to have correct query params

* Add missing api remote_info and missing params

* a couple apis have had added query params

* Add Split api and add missing query params

* Adding processor_grok api

* Adding missing apis:
* update by query rethrottle
* scripts painless execute
* scripts painless context
* rank eval

* delete by query rethrottle

* add missing query params

* Add missing xpack apis

* Update helpers to account for 7.x scroll api
This commit is contained in:
Nick Lang
2019-05-10 16:41:50 -06:00
committed by GitHub
parent 206f5e2754
commit 8e92b857bc
9 changed files with 291 additions and 74 deletions
+141 -19
View File
@@ -329,6 +329,11 @@ class Elasticsearch(object):
:arg index: The name of the index :arg index: The name of the index
:arg body: The document :arg body: The document
:arg id: Document ID :arg id: Document ID
:arg if_primary_term: only perform the index operation if the last
operation that has changed the document has the specified primary
term
:arg if_seq_no: only perform the index operation if the last operation
that has changed the document has the specified sequence number
:arg doc_type: Document type, defaults to `_doc`. Not used on ES 7 clusters. :arg doc_type: Document type, defaults to `_doc`. Not used on ES 7 clusters.
:arg op_type: Explicit operation type, default 'index', valid choices :arg op_type: Explicit operation type, default 'index', valid choices
are: 'index', 'create' are: 'index', 'create'
@@ -356,10 +361,7 @@ class Elasticsearch(object):
if param in SKIP_IN_PATH: if param in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument.") raise ValueError("Empty value passed for a required argument.")
return self.transport.perform_request( return self.transport.perform_request(
"POST" if id in SKIP_IN_PATH else "PUT", "POST", _make_path(index, doc_type, id), params=params, body=body
_make_path(index, doc_type, id),
params=params,
body=body,
) )
@query_params( @query_params(
@@ -672,6 +674,7 @@ class Elasticsearch(object):
"analyze_wildcard", "analyze_wildcard",
"analyzer", "analyzer",
"batched_reduce_size", "batched_reduce_size",
"ccs_minimize_roundtrips",
"default_operator", "default_operator",
"df", "df",
"docvalue_fields", "docvalue_fields",
@@ -736,6 +739,9 @@ class Elasticsearch(object):
as a protection mechanism to reduce the memory overhead per search as a protection mechanism to reduce the memory overhead per search
request if the potential number of shards in the request can be request if the potential number of shards in the request can be
large., default 512 large., default 512
:arg ccs_minimize_roundtrips: Indicates whether network round-trips
should be minimized as part of cross-cluster search requests
execution, default 'true'
:arg default_operator: The default operator for query string query (AND :arg default_operator: The default operator for query string query (AND
or OR), default 'OR', valid choices are: 'AND', 'OR' or OR), default 'OR', valid choices are: 'AND', 'OR'
:arg df: The field to use as default where no field prefix is given in :arg df: The field to use as default where no field prefix is given in
@@ -935,10 +941,28 @@ class Elasticsearch(object):
"POST", _make_path(index, "_update_by_query"), params=params, body=body "POST", _make_path(index, "_update_by_query"), params=params, body=body
) )
@query_params("requests_per_second")
def update_by_query_rethrottle(self, task_id, params=None):
"""
`<https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html>`_
:arg task_id: The task id to rethrottle
:arg requests_per_second: The throttle to set on this request in
floating sub-requests per second. -1 means set no throttle.
"""
if task_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'task_id'.")
return self.transport.perform_request(
"POST",
_make_path("_update_by_query", task_id, "_rethrottle"),
params=params,
)
@query_params( @query_params(
"refresh", "refresh",
"requests_per_second", "requests_per_second",
"slices", "slices",
"scroll",
"timeout", "timeout",
"wait_for_active_shards", "wait_for_active_shards",
"wait_for_completion", "wait_for_completion",
@@ -956,6 +980,8 @@ class Elasticsearch(object):
:arg slices: The number of slices this task should be divided into. :arg slices: The number of slices this task should be divided into.
Defaults to 1 meaning the task isn't sliced into subtasks., default Defaults to 1 meaning the task isn't sliced into subtasks., default
1 1
:arg scroll: Control how long to keep the search context alive, default
'5m'
:arg timeout: Time each individual bulk request should wait for shards :arg timeout: Time each individual bulk request should wait for shards
that are unavailable., default '1m' that are unavailable., default '1m'
:arg wait_for_active_shards: Sets the number of shard copies that must :arg wait_for_active_shards: Sets the number of shard copies that must
@@ -1104,6 +1130,23 @@ class Elasticsearch(object):
"POST", _make_path(index, "_delete_by_query"), params=params, body=body "POST", _make_path(index, "_delete_by_query"), params=params, body=body
) )
@query_params("requests_per_second")
def delete_by_query_rethrottle(self, task_id, params=None):
"""
`<https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html>`_
:arg task_id: The task id to rethrottle
:arg requests_per_second: The throttle to set on this request in
floating sub-requests per second. -1 means set no throttle.
"""
if task_id in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'task_id'.")
return self.transport.perform_request(
"POST",
_make_path("_delete_by_query", task_id, "_rethrottle"),
params=params,
)
@query_params( @query_params(
"allow_no_indices", "allow_no_indices",
"expand_wildcards", "expand_wildcards",
@@ -1142,12 +1185,14 @@ class Elasticsearch(object):
@query_params( @query_params(
"allow_no_indices", "allow_no_indices",
"ccs_minimize_roundtrips",
"expand_wildcards", "expand_wildcards",
"explain", "explain",
"ignore_unavailable", "ignore_unavailable",
"preference", "preference",
"profile", "profile",
"routing", "routing",
"rest_total_hits_as_int",
"scroll", "scroll",
"search_type", "search_type",
"typed_keys", "typed_keys",
@@ -1165,6 +1210,9 @@ class Elasticsearch(object):
:arg allow_no_indices: Whether to ignore if a wildcard indices :arg allow_no_indices: Whether to ignore if a wildcard indices
expression resolves into no concrete indices. (This includes `_all` expression resolves into no concrete indices. (This includes `_all`
string or when no indices have been specified) string or when no indices have been specified)
:arg ccs_minimize_roundtrips: Indicates whether network round-trips
should be minimized as part of cross-cluster search requests
execution, default 'true'
:arg expand_wildcards: Whether to expand wildcard expression to concrete :arg expand_wildcards: Whether to expand wildcard expression to concrete
indices that are open, closed or both., default 'open', valid indices that are open, closed or both., default 'open', valid
choices are: 'open', 'closed', 'none', 'all' choices are: 'open', 'closed', 'none', 'all'
@@ -1176,6 +1224,9 @@ class Elasticsearch(object):
performed on (default: random) performed on (default: random)
:arg profile: Specify whether to profile the query execution :arg profile: Specify whether to profile the query execution
:arg routing: A comma-separated list of specific routing values :arg routing: A comma-separated list of specific routing values
:arg rest_total_hits_as_int: Indicates whether hits.total should be
rendered as an integer or an object in the rest search response,
default False
:arg scroll: Specify how long a consistent view of the index should be :arg scroll: Specify how long a consistent view of the index should be
maintained for scrolled search maintained for scrolled search
:arg search_type: Search operation type, valid choices are: :arg search_type: Search operation type, valid choices are:
@@ -1244,8 +1295,8 @@ class Elasticsearch(object):
"GET", _make_path(index, doc_type, id, "_explain"), params=params, body=body "GET", _make_path(index, doc_type, id, "_explain"), params=params, body=body
) )
@query_params("scroll", "rest_total_hits_as_int") @query_params("scroll", "rest_total_hits_as_int", "scroll_id")
def scroll(self, scroll_id=None, body=None, params=None): def scroll(self, body=None, params=None):
""" """
Scroll a search request created by specifying the scroll parameter. Scroll a search request created by specifying the scroll parameter.
`<http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html>`_ `<http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html>`_
@@ -1258,12 +1309,6 @@ class Elasticsearch(object):
in the response. This param is added version 6.x to handle mixed cluster queries where nodes in the response. This param is added version 6.x to handle mixed cluster queries where nodes
are in multiple versions (7.0 and 6.latest) are in multiple versions (7.0 and 6.latest)
""" """
if scroll_id in SKIP_IN_PATH and body in SKIP_IN_PATH:
raise ValueError("You need to supply scroll_id or body.")
elif scroll_id and not body:
body = {"scroll_id": scroll_id}
elif scroll_id:
params["scroll_id"] = scroll_id
return self.transport.perform_request( return self.transport.perform_request(
"GET", "/_search/scroll", params=params, body=body "GET", "/_search/scroll", params=params, body=body
@@ -1309,6 +1354,11 @@ class Elasticsearch(object):
:arg index: The name of the index :arg index: The name of the index
:arg id: The document ID :arg id: The document ID
:arg if_primary_term: only perform the delete operation if the last
operation that has changed the document has the specified primary
term
:arg if_seq_no: only perform the delete operation if the last operation
that has changed the document has the specified sequence number
:arg parent: ID of parent document :arg parent: ID of parent document
:arg refresh: If `true` then refresh the effected shards to make this :arg refresh: If `true` then refresh the effected shards to make this
operation visible to search, if `wait_for` then wait for a refresh operation visible to search, if `wait_for` then wait for a refresh
@@ -1341,6 +1391,7 @@ class Elasticsearch(object):
"df", "df",
"expand_wildcards", "expand_wildcards",
"ignore_unavailable", "ignore_unavailable",
"ignore_throttled",
"lenient", "lenient",
"min_score", "min_score",
"preference", "preference",
@@ -1372,6 +1423,8 @@ class Elasticsearch(object):
choices are: 'open', 'closed', 'none', 'all' choices are: 'open', 'closed', 'none', 'all'
:arg ignore_unavailable: Whether specified concrete indices should be :arg ignore_unavailable: Whether specified concrete indices should be
ignored when unavailable (missing or closed) ignored when unavailable (missing or closed)
:arg ignore_throttled: Whether specified concrete, expanded or aliased
indices should be ignored when throttled
:arg lenient: Specify whether format-based query failures (such as :arg lenient: Specify whether format-based query failures (such as
providing text to a numeric field) should be ignored providing text to a numeric field) should be ignored
:arg min_score: Include only documents with a specific `_score` value in :arg min_score: Include only documents with a specific `_score` value in
@@ -1446,6 +1499,7 @@ class Elasticsearch(object):
) )
@query_params( @query_params(
"ccs_minimize_roundtrips",
"max_concurrent_searches", "max_concurrent_searches",
"max_concurrent_shard_requests", "max_concurrent_shard_requests",
"pre_filter_shard_size", "pre_filter_shard_size",
@@ -1462,6 +1516,9 @@ class Elasticsearch(object):
pairs), separated by newlines pairs), separated by newlines
:arg index: A list of index names, or a string containing a :arg index: A list of index names, or a string containing a
comma-separated list of index names, to use as the default comma-separated list of index names, to use as the default
:arg ccs_minimize_roundtrips: Indicates whether network round-trips
should be minimized as part of cross-cluster search requests
execution, default 'true'
:arg max_concurrent_searches: Controls the maximum number of concurrent :arg max_concurrent_searches: Controls the maximum number of concurrent
searches the multi search api will execute searches the multi search api will execute
:arg pre_filter_shard_size: A threshold that enforces a pre-filter :arg pre_filter_shard_size: A threshold that enforces a pre-filter
@@ -1614,7 +1671,7 @@ class Elasticsearch(object):
body=body, body=body,
) )
@query_params() @query_params("master_timeout", "timeout")
def put_script(self, id, body, context=None, params=None): def put_script(self, id, body, context=None, params=None):
""" """
Create a script in given language with specified ID. Create a script in given language with specified ID.
@@ -1622,7 +1679,9 @@ class Elasticsearch(object):
:arg id: Script ID :arg id: Script ID
:arg body: The document :arg body: The document
""" :arg master_timeout: Specify timeout for connection to master
:arg timeout: Explicit operation timeout
"""
for param in (id, body): for param in (id, body):
if param in SKIP_IN_PATH: if param in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument.") raise ValueError("Empty value passed for a required argument.")
@@ -1630,13 +1689,38 @@ class Elasticsearch(object):
"PUT", _make_path("_scripts", id, context), params=params, body=body "PUT", _make_path("_scripts", id, context), params=params, body=body
) )
@query_params() @query_params("allow_no_indices", "expand_wildcards", "ignore_unavailable")
def rank_eval(self, body, index=None, params=None):
"""
`<https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html>`_
:arg body: The ranking evaluation search definition, including search
requests, document ratings and ranking metric definition.
:arg index: A comma-separated list of index names to search; use `_all`
or empty string to perform the operation on all indices
: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 expand_wildcards: Whether to expand wildcard expression to concrete
indices that are open, closed or both., default 'open', valid
choices are: 'open', 'closed', 'none', 'all'
:arg ignore_unavailable: Whether specified concrete indices should be
ignored when unavailable (missing or closed)
"""
if body in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'body'.")
return self.transport.perform_request(
"GET", _make_path(index, "_rank_eval"), params=params, body=body
)
@query_params("master_timeout")
def get_script(self, id, params=None): def get_script(self, id, params=None):
""" """
Retrieve a script from the API. Retrieve a script from the API.
`<http://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html>`_ `<http://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html>`_
:arg id: Script ID :arg id: Script ID
:arg master_timeout: Specify timeout for connection to master
""" """
if id in SKIP_IN_PATH: if id in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'id'.") raise ValueError("Empty value passed for a required argument 'id'.")
@@ -1644,14 +1728,15 @@ class Elasticsearch(object):
"GET", _make_path("_scripts", id), params=params "GET", _make_path("_scripts", id), params=params
) )
@query_params() @query_params("master_timeout", "timeout")
def delete_script(self, id, params=None): def delete_script(self, id, params=None):
""" """
Remove a stored script from elasticsearch. Remove a stored script from elasticsearch.
`<http://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html>`_ `<http://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html>`_
:arg id: Script ID :arg id: Script ID
""" :arg master_timeout: Specify timeout for connection to master
:arg timeout: Explicit operation timeout """
if id in SKIP_IN_PATH: if id in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'id'.") raise ValueError("Empty value passed for a required argument 'id'.")
return self.transport.perform_request( return self.transport.perform_request(
@@ -1670,7 +1755,35 @@ class Elasticsearch(object):
"GET", _make_path("_render", "template", id), params=params, body=body "GET", _make_path("_render", "template", id), params=params, body=body
) )
@query_params("max_concurrent_searches", "search_type", "typed_keys") @query_params("context")
def scripts_painless_context(self, params=None):
"""
`<>`_
:arg context: Select a specific context to retrieve API information
about
"""
return self.transport.perform_request(
"GET", "/_scripts/painless/_context", params=params
)
@query_params()
def scripts_painless_execute(self, body=None, params=None):
"""
`<https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-execute-api.html>`_
:arg body: The script to execute
"""
return self.transport.perform_request(
"GET", "/_scripts/painless/_execute", params=params, body=body
)
@query_params(
"ccs_minimize_roundtrips",
"max_concurrent_searches",
"search_type",
"typed_keys",
)
def msearch_template(self, body, index=None, params=None): def msearch_template(self, body, index=None, params=None):
""" """
The /_search/template endpoint allows to use the mustache language to The /_search/template endpoint allows to use the mustache language to
@@ -1682,6 +1795,9 @@ class Elasticsearch(object):
pairs), separated by newlines pairs), separated by newlines
:arg index: A list of index names, or a string containing a :arg index: A list of index names, or a string containing a
comma-separated list of index names, to use as the default comma-separated list of index names, to use as the default
:arg ccs_minimize_roundtrips: Indicates whether network round-trips
should be minimized as part of cross-cluster search requests
execution, default 'true'
:arg max_concurrent_searches: Controls the maximum number of concurrent :arg max_concurrent_searches: Controls the maximum number of concurrent
searches the multi search api will execute searches the multi search api will execute
:arg search_type: Search operation type, valid choices are: :arg search_type: Search operation type, valid choices are:
@@ -1701,7 +1817,11 @@ class Elasticsearch(object):
) )
@query_params( @query_params(
"allow_no_indices", "expand_wildcards", "fields", "ignore_unavailable" "allow_no_indices",
"expand_wildcards",
"fields",
"ignore_unavailable",
"include_unmapped",
) )
def field_caps(self, index=None, body=None, params=None): def field_caps(self, index=None, body=None, params=None):
""" """
@@ -1721,6 +1841,8 @@ class Elasticsearch(object):
:arg fields: A comma-separated list of field names :arg fields: A comma-separated list of field names
:arg ignore_unavailable: Whether specified concrete indices should be :arg ignore_unavailable: Whether specified concrete indices should be
ignored when unavailable (missing or closed) ignored when unavailable (missing or closed)
:arg include_unmapped: Indicates whether unmapped fields should be
included in the response., default False
""" """
return self.transport.perform_request( return self.transport.perform_request(
"GET", _make_path(index, "_field_caps"), params=params, body=body "GET", _make_path(index, "_field_caps"), params=params, body=body
+8 -15
View File
@@ -24,9 +24,7 @@ class CatClient(NamespacedClient):
"GET", _make_path("_cat", "aliases", name), params=params "GET", _make_path("_cat", "aliases", name), params=params
) )
@query_params( @query_params("bytes", "format", "h", "help", "local", "master_timeout", "s", "v")
"bytes", "size", "format", "h", "help", "local", "master_timeout", "s", "v"
)
def allocation(self, node_id=None, params=None): def allocation(self, node_id=None, params=None):
""" """
Allocation provides a snapshot of how shards have located around the Allocation provides a snapshot of how shards have located around the
@@ -52,7 +50,7 @@ class CatClient(NamespacedClient):
"GET", _make_path("_cat", "allocation", node_id), params=params "GET", _make_path("_cat", "allocation", node_id), params=params
) )
@query_params("size", "format", "h", "help", "local", "master_timeout", "s", "v") @query_params("format", "h", "help", "local", "master_timeout", "s", "v")
def count(self, index=None, params=None): def count(self, index=None, params=None):
""" """
Count provides quick access to the document count of the entire cluster, Count provides quick access to the document count of the entire cluster,
@@ -111,7 +109,6 @@ class CatClient(NamespacedClient):
@query_params( @query_params(
"bytes", "bytes",
"time",
"size", "size",
"format", "format",
"h", "h",
@@ -218,16 +215,7 @@ class CatClient(NamespacedClient):
) )
@query_params( @query_params(
"bytes", "bytes", "size", "format", "h", "help", "local", "master_timeout", "s", "v"
"time",
"size",
"format",
"h",
"help",
"local",
"master_timeout",
"s",
"v",
) )
def shards(self, index=None, params=None): def shards(self, index=None, params=None):
""" """
@@ -442,6 +430,7 @@ class CatClient(NamespacedClient):
"h", "h",
"help", "help",
"nodes", "nodes",
"node_id",
"parent_task_id", "parent_task_id",
"s", "s",
"v", "v",
@@ -458,6 +447,10 @@ class CatClient(NamespacedClient):
:arg h: Comma-separated list of column names to display :arg h: Comma-separated list of column names to display
:arg help: Return help information, default False :arg help: Return help information, default False
:arg nodes: A comma-separated list of node IDs or names to limit the :arg nodes: A comma-separated list of node IDs or names to limit the
returned information; use `_local` to return information from the
node you're connecting to, leave empty to get information from all
nodes (used for older version of Elasticsearch)
:arg node_id: A comma-separated list of node IDs or names to limit the
returned information; use `_local` to return information from the returned information; use `_local` to return information from the
node you're connecting to, leave empty to get information from all node you're connecting to, leave empty to get information from all
nodes nodes
+18 -1
View File
@@ -3,16 +3,17 @@ from .utils import NamespacedClient, query_params, _make_path
class ClusterClient(NamespacedClient): class ClusterClient(NamespacedClient):
@query_params( @query_params(
"expand_wildcards",
"level", "level",
"local", "local",
"master_timeout", "master_timeout",
"timeout", "timeout",
"wait_for_active_shards", "wait_for_active_shards",
"wait_for_events", "wait_for_events",
"wait_for_no_initializing_shards",
"wait_for_no_relocating_shards", "wait_for_no_relocating_shards",
"wait_for_nodes", "wait_for_nodes",
"wait_for_status", "wait_for_status",
"wait_for_no_initializing_shards",
) )
def health(self, index=None, params=None): def health(self, index=None, params=None):
""" """
@@ -20,6 +21,9 @@ class ClusterClient(NamespacedClient):
`<http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html>`_ `<http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html>`_
:arg index: Limit the information returned to a specific index :arg index: Limit the information returned to a specific index
:arg expand_wildcards: Whether to expand wildcard expression to concrete
indices that are open, closed or both., default 'all', valid choices
are: 'open', 'closed', 'none', 'all'
:arg level: Specify the level of detail for returned information, :arg level: Specify the level of detail for returned information,
default 'cluster', valid choices are: 'cluster', 'indices', 'shards' default 'cluster', valid choices are: 'cluster', 'indices', 'shards'
:arg local: Return local information, do not retrieve the state from :arg local: Return local information, do not retrieve the state from
@@ -66,6 +70,8 @@ class ClusterClient(NamespacedClient):
"ignore_unavailable", "ignore_unavailable",
"local", "local",
"master_timeout", "master_timeout",
"wait_for_metadata_version",
"wait_for_timeout",
) )
def state(self, metric=None, index=None, params=None): def state(self, metric=None, index=None, params=None):
""" """
@@ -87,6 +93,10 @@ class ClusterClient(NamespacedClient):
:arg local: Return local information, do not retrieve the state from :arg local: Return local information, do not retrieve the state from
master node (default: false) master node (default: false)
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg wait_for_metadata_version: Wait for the metadata version to be
equal or greater than the specified metadata version
:arg wait_for_timeout: The maximum time to wait for
wait_for_metadata_version before timing out
""" """
if index and not metric: if index and not metric:
metric = "_all" metric = "_all"
@@ -174,6 +184,13 @@ class ClusterClient(NamespacedClient):
"PUT", "/_cluster/settings", params=params, body=body "PUT", "/_cluster/settings", params=params, body=body
) )
@query_params()
def remote_info(self, params=None):
"""
`<http://www.elastic.co/guide/en/elasticsearch/reference/master/cluster-remote-info.html>`_
"""
return self.transport.perform_request("GET", "/_remote/info", params=params)
@query_params("include_disk_info", "include_yes_decisions") @query_params("include_disk_info", "include_yes_decisions")
def allocation_explain(self, body=None, params=None): def allocation_explain(self, body=None, params=None):
""" """
+77 -14
View File
@@ -80,7 +80,7 @@ class IndicesClient(NamespacedClient):
@query_params( @query_params(
"master_timeout", "master_timeout",
"request_timeout", "timeout" "request_timeout",
"wait_for_active_shards", "wait_for_active_shards",
"include_type_name", "include_type_name",
) )
@@ -92,6 +92,7 @@ class IndicesClient(NamespacedClient):
:arg index: The name of the index :arg index: The name of the index
:arg body: The configuration for the index (`settings` and `mappings`) :arg body: The configuration for the index (`settings` and `mappings`)
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg timeout: Explicit operation timeout
:arg request_timeout: Explicit operation timeout :arg request_timeout: Explicit operation timeout
:arg wait_for_active_shards: Set the number of active shards to wait for :arg wait_for_active_shards: Set the number of active shards to wait for
before the operation returns. before the operation returns.
@@ -112,6 +113,7 @@ class IndicesClient(NamespacedClient):
"include_defaults", "include_defaults",
"local", "local",
"include_type_name", "include_type_name",
"master_timeout",
) )
def get(self, index, feature=None, params=None): def get(self, index, feature=None, params=None):
""" """
@@ -132,6 +134,7 @@ class IndicesClient(NamespacedClient):
master node (default: false) master node (default: false)
:arg include_type_name: Specify whether requests and responses should include a :arg include_type_name: Specify whether requests and responses should include a
type name (default: depends on Elasticsearch version). type name (default: depends on Elasticsearch version).
:arg master_timeout: Specify timeout for connection to master
""" """
if index in SKIP_IN_PATH: if index in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'index'.") raise ValueError("Empty value passed for a required argument 'index'.")
@@ -144,7 +147,9 @@ class IndicesClient(NamespacedClient):
"expand_wildcards", "expand_wildcards",
"ignore_unavailable", "ignore_unavailable",
"master_timeout", "master_timeout",
"timeout",
"request_timeout", "request_timeout",
"wait_for_active_shards",
) )
def open(self, index, params=None): def open(self, index, params=None):
""" """
@@ -161,7 +166,10 @@ class IndicesClient(NamespacedClient):
:arg ignore_unavailable: Whether specified concrete indices should be :arg ignore_unavailable: Whether specified concrete indices should be
ignored when unavailable (missing or closed) ignored when unavailable (missing or closed)
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg timeout: Explicit operation timeout
:arg request_timeout: Explicit operation timeout :arg request_timeout: Explicit operation timeout
:arg wait_for_active_shards: Sets the number of active shards to wait
for before the operation returns.
""" """
if index in SKIP_IN_PATH: if index in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'index'.") raise ValueError("Empty value passed for a required argument 'index'.")
@@ -175,6 +183,7 @@ class IndicesClient(NamespacedClient):
"ignore_unavailable", "ignore_unavailable",
"master_timeout", "master_timeout",
"request_timeout", "request_timeout",
"wait_for_active_shards",
) )
def close(self, index, params=None): def close(self, index, params=None):
""" """
@@ -193,6 +202,8 @@ class IndicesClient(NamespacedClient):
ignored when unavailable (missing or closed) ignored when unavailable (missing or closed)
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg request_timeout: Explicit operation timeout :arg request_timeout: Explicit operation timeout
:arg wait_for_active_shards: Sets the number of active shards to wait
for before the operation returns.
""" """
if index in SKIP_IN_PATH: if index in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'index'.") raise ValueError("Empty value passed for a required argument 'index'.")
@@ -204,6 +215,7 @@ class IndicesClient(NamespacedClient):
"allow_no_indices", "allow_no_indices",
"expand_wildcards", "expand_wildcards",
"ignore_unavailable", "ignore_unavailable",
"timeout",
"master_timeout", "master_timeout",
"request_timeout", "request_timeout",
) )
@@ -221,6 +233,7 @@ class IndicesClient(NamespacedClient):
choices are: 'open', 'closed', 'none', 'all' choices are: 'open', 'closed', 'none', 'all'
:arg ignore_unavailable: Ignore unavailable indexes (default: false) :arg ignore_unavailable: Ignore unavailable indexes (default: false)
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg timeout: Explicit operation timeout
:arg request_timeout: Explicit operation timeout :arg request_timeout: Explicit operation timeout
""" """
if index in SKIP_IN_PATH: if index in SKIP_IN_PATH:
@@ -291,6 +304,7 @@ class IndicesClient(NamespacedClient):
"expand_wildcards", "expand_wildcards",
"ignore_unavailable", "ignore_unavailable",
"master_timeout", "master_timeout",
"timeout",
"request_timeout", "request_timeout",
"include_type_name", "include_type_name",
) )
@@ -313,7 +327,8 @@ class IndicesClient(NamespacedClient):
:arg ignore_unavailable: Whether specified concrete indices should be :arg ignore_unavailable: Whether specified concrete indices should be
ignored when unavailable (missing or closed) ignored when unavailable (missing or closed)
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg request_timeout: Explicit operation timeout :arg timeout: Explicit operation timeout
:arg request_timeout: Explicit operation timeout (For pre 7.x ES Clusters)
:arg include_type_name: Specify whether requests and responses should include a :arg include_type_name: Specify whether requests and responses should include a
type name (default: depends on Elasticsearch version). type name (default: depends on Elasticsearch version).
""" """
@@ -330,6 +345,7 @@ class IndicesClient(NamespacedClient):
"ignore_unavailable", "ignore_unavailable",
"local", "local",
"include_type_name", "include_type_name",
"master_timeout",
) )
def get_mapping(self, index=None, doc_type=None, params=None): def get_mapping(self, index=None, doc_type=None, params=None):
""" """
@@ -350,6 +366,7 @@ class IndicesClient(NamespacedClient):
master node (default: false) master node (default: false)
:arg include_type_name: Specify whether requests and responses should include a :arg include_type_name: Specify whether requests and responses should include a
type name (default: depends on Elasticsearch version). type name (default: depends on Elasticsearch version).
:arg master_timeout: Specify timeout for connection to master
""" """
return self.transport.perform_request( return self.transport.perform_request(
"GET", _make_path(index, "_mapping", doc_type), params=params "GET", _make_path(index, "_mapping", doc_type), params=params
@@ -461,7 +478,7 @@ class IndicesClient(NamespacedClient):
"GET", _make_path(index, "_alias", name), params=params "GET", _make_path(index, "_alias", name), params=params
) )
@query_params("master_timeout", "request_timeout") @query_params("master_timeout", "request_timeout", "timeout")
def update_aliases(self, body, params=None): def update_aliases(self, body, params=None):
""" """
Update specified aliases. Update specified aliases.
@@ -469,7 +486,8 @@ class IndicesClient(NamespacedClient):
:arg body: The definition of `actions` to perform :arg body: The definition of `actions` to perform
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg request_timeout: Request timeout :arg request_timeout: Request timeout (For pre 7.x ES Clusters)
:arg timeout: Request timeout
""" """
if body in SKIP_IN_PATH: if body in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'body'.") raise ValueError("Empty value passed for a required argument 'body'.")
@@ -477,7 +495,7 @@ class IndicesClient(NamespacedClient):
"POST", "/_aliases", params=params, body=body "POST", "/_aliases", params=params, body=body
) )
@query_params("master_timeout", "request_timeout") @query_params("master_timeout", "request_timeout", "timeout")
def delete_alias(self, index, name, params=None): def delete_alias(self, index, name, params=None):
""" """
Delete specific alias. Delete specific alias.
@@ -489,7 +507,8 @@ class IndicesClient(NamespacedClient):
wildcards); use `_all` to delete all aliases for the specified wildcards); use `_all` to delete all aliases for the specified
indices. indices.
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg request_timeout: Explicit timeout for the operation :arg request_timeout: Explicit timeout for the operation (for pre 7.x ES clusters)
:arg timeout: Explicit timeout for the operation
""" """
for param in (index, name): for param in (index, name):
if param in SKIP_IN_PATH: if param in SKIP_IN_PATH:
@@ -504,6 +523,7 @@ class IndicesClient(NamespacedClient):
"master_timeout", "master_timeout",
"order", "order",
"request_timeout", "request_timeout",
"timeout",
"include_type_name", "include_type_name",
) )
def put_template(self, name, body, params=None): def put_template(self, name, body, params=None):
@@ -520,7 +540,8 @@ class IndicesClient(NamespacedClient):
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg order: The order for this template when merging multiple matching :arg order: The order for this template when merging multiple matching
ones (higher numbers are merged later, overriding the lower numbers) ones (higher numbers are merged later, overriding the lower numbers)
:arg request_timeout: Explicit operation timeout :arg request_timeout: Explicit operation timeout (For pre ES 6 clusters)
:arg timeout: Explicit operation timeout
:arg include_type_name: Specify whether requests and responses should include a :arg include_type_name: Specify whether requests and responses should include a
type name (default: depends on Elasticsearch version). type name (default: depends on Elasticsearch version).
""" """
@@ -569,7 +590,7 @@ class IndicesClient(NamespacedClient):
"GET", _make_path("_template", name), params=params "GET", _make_path("_template", name), params=params
) )
@query_params("master_timeout", "request_timeout") @query_params("master_timeout", "request_timeout", "timeout")
def delete_template(self, name, params=None): def delete_template(self, name, params=None):
""" """
Delete an index template by its name. Delete an index template by its name.
@@ -577,7 +598,8 @@ class IndicesClient(NamespacedClient):
:arg name: The name of the template :arg name: The name of the template
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg request_timeout: Explicit operation timeout :arg request_timeout: Explicit operation timeout (for pre 7.x clusters)
:arg timeout: Explicit operation timeout
""" """
if name in SKIP_IN_PATH: if name in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'name'.") raise ValueError("Empty value passed for a required argument 'name'.")
@@ -592,6 +614,7 @@ class IndicesClient(NamespacedClient):
"ignore_unavailable", "ignore_unavailable",
"include_defaults", "include_defaults",
"local", "local",
"master_timeout",
) )
def get_settings(self, index=None, name=None, params=None): def get_settings(self, index=None, name=None, params=None):
""" """
@@ -614,6 +637,7 @@ class IndicesClient(NamespacedClient):
the indices., default False the indices., default False
:arg local: Return local information, do not retrieve the state from :arg local: Return local information, do not retrieve the state from
master node (default: false) master node (default: false)
:arg master_timeout: Specify timeout for connection to master
""" """
return self.transport.perform_request( return self.transport.perform_request(
"GET", _make_path(index, "_settings", name), params=params "GET", _make_path(index, "_settings", name), params=params
@@ -625,6 +649,7 @@ class IndicesClient(NamespacedClient):
"flat_settings", "flat_settings",
"ignore_unavailable", "ignore_unavailable",
"master_timeout", "master_timeout",
"timeout",
"preserve_existing", "preserve_existing",
) )
def put_settings(self, body, index=None, params=None): def put_settings(self, body, index=None, params=None):
@@ -648,6 +673,7 @@ class IndicesClient(NamespacedClient):
:arg preserve_existing: Whether to update existing settings. If set to :arg preserve_existing: Whether to update existing settings. If set to
`true` existing settings on an index remain unchanged, the default `true` existing settings on an index remain unchanged, the default
is `false` is `false`
:arg timeout: Explicit operation timeout
""" """
if body in SKIP_IN_PATH: if body in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument 'body'.") raise ValueError("Empty value passed for a required argument 'body'.")
@@ -657,10 +683,13 @@ class IndicesClient(NamespacedClient):
@query_params( @query_params(
"completion_fields", "completion_fields",
"expand_wildcards",
"fielddata_fields", "fielddata_fields",
"fields", "fields",
"forbid_closed_indices",
"groups", "groups",
"include_segment_file_sizes", "include_segment_file_sizes",
"include_unloaded_segments",
"level", "level",
"types", "types",
) )
@@ -674,15 +703,24 @@ class IndicesClient(NamespacedClient):
:arg metric: Limit the information returned the specific metrics. :arg metric: Limit the information returned the specific metrics.
:arg completion_fields: A comma-separated list of fields for `fielddata` :arg completion_fields: A comma-separated list of fields for `fielddata`
and `suggest` index metric (supports wildcards) and `suggest` index metric (supports wildcards)
:arg expand_wildcards: Whether to expand wildcard expression to concrete
indices that are open, closed or both., default 'open', valid
choices are: 'open', 'closed', 'none', 'all'
:arg fielddata_fields: A comma-separated list of fields for `fielddata` :arg fielddata_fields: A comma-separated list of fields for `fielddata`
index metric (supports wildcards) index metric (supports wildcards)
:arg fields: A comma-separated list of fields for `fielddata` and :arg fields: A comma-separated list of fields for `fielddata` and
`completion` index metric (supports wildcards) `completion` index metric (supports wildcards)
:arg forbid_closed_indices: If set to false stats will also collected
from closed indices if explicitly specified or if expand_wildcards
expands to closed indices, default True
:arg groups: A comma-separated list of search groups for `search` index :arg groups: A comma-separated list of search groups for `search` index
metric metric
:arg include_segment_file_sizes: Whether to report the aggregated disk :arg include_segment_file_sizes: Whether to report the aggregated disk
usage of each one of the Lucene index files (only applies if segment usage of each one of the Lucene index files (only applies if segment
stats are requested), default False stats are requested), default False
:arg include_unloaded_segments: If set to true segment stats will
include stats for segments that are not currently loaded into
memory, default False
:arg level: Return stats aggregated at cluster, index or shard level, :arg level: Return stats aggregated at cluster, index or shard level,
default 'indices', valid choices are: 'cluster', 'indices', 'shards' default 'indices', valid choices are: 'cluster', 'indices', 'shards'
:arg types: A comma-separated list of document types for the `indexing` :arg types: A comma-separated list of document types for the `indexing`
@@ -980,14 +1018,15 @@ class IndicesClient(NamespacedClient):
:arg max_num_segments: The number of segments the index should be merged :arg max_num_segments: The number of segments the index should be merged
into (default: dynamic) into (default: dynamic)
:arg only_expunge_deletes: Specify whether the operation should only :arg only_expunge_deletes: Specify whether the operation should only
expunge deleted documents expunge deleted documents (for pre 7.x ES clusters)
:arg operation_threading: TODO: ?
""" """
return self.transport.perform_request( return self.transport.perform_request(
"POST", _make_path(index, "_forcemerge"), params=params "POST", _make_path(index, "_forcemerge"), params=params
) )
@query_params("master_timeout", "request_timeout", "wait_for_active_shards") @query_params(
"master_timeout", "timeout", "request_timeout", "wait_for_active_shards"
)
def shrink(self, index, target, body=None, params=None): def shrink(self, index, target, body=None, params=None):
""" """
The shrink index API allows you to shrink an existing index into a new The shrink index API allows you to shrink an existing index into a new
@@ -1006,7 +1045,8 @@ class IndicesClient(NamespacedClient):
:arg body: The configuration for the target index (`settings` and :arg body: The configuration for the target index (`settings` and
`aliases`) `aliases`)
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg request_timeout: Explicit operation timeout :arg request_timeout: Explicit operation timeout (For pre 7.x ES clusters)
:arg timeout: Explicit operation timeout
:arg wait_for_active_shards: Set the number of active shards to wait for :arg wait_for_active_shards: Set the number of active shards to wait for
on the shrunken index before the operation returns. on the shrunken index before the operation returns.
""" """
@@ -1017,10 +1057,32 @@ class IndicesClient(NamespacedClient):
"PUT", _make_path(index, "_shrink", target), params=params, body=body "PUT", _make_path(index, "_shrink", target), params=params, body=body
) )
@query_params("master_timeout", "timeout", "wait_for_active_shards")
def split(self, index, target, body=None, params=None):
"""
`<http://www.elastic.co/guide/en/elasticsearch/reference/master/indices-split-index.html>`_
:arg index: The name of the source index to split
:arg target: The name of the target index to split into
:arg body: The configuration for the target index (`settings` and
`aliases`)
:arg master_timeout: Specify timeout for connection to master
:arg timeout: Explicit operation timeout
:arg wait_for_active_shards: Set the number of active shards to wait for
on the shrunken index before the operation returns.
"""
for param in (index, target):
if param in SKIP_IN_PATH:
raise ValueError("Empty value passed for a required argument.")
return self.transport.perform_request(
"PUT", _make_path(index, "_split", target), params=params, body=body
)
@query_params( @query_params(
"dry_run", "dry_run",
"master_timeout", "master_timeout",
"request_timeout", "request_timeout",
"timeout",
"wait_for_active_shards", "wait_for_active_shards",
"include_type_name", "include_type_name",
) )
@@ -1042,7 +1104,8 @@ class IndicesClient(NamespacedClient):
but not actually performed even if a condition matches. The default but not actually performed even if a condition matches. The default
is false is false
:arg master_timeout: Specify timeout for connection to master :arg master_timeout: Specify timeout for connection to master
:arg request_timeout: Explicit operation timeout :arg request_timeout: Explicit operation timeout (for pre 7.x ES clusters)
:arg timeout: Explicit operation timeout
:arg wait_for_active_shards: Set the number of active shards to wait for :arg wait_for_active_shards: Set the number of active shards to wait for
on the newly created rollover index before the operation returns. on the newly created rollover index before the operation returns.
:arg include_type_name: Specify whether requests and responses should include a :arg include_type_name: Specify whether requests and responses should include a
+9
View File
@@ -67,3 +67,12 @@ class IngestClient(NamespacedClient):
params=params, params=params,
body=body, body=body,
) )
@query_params()
def processor_grok(self, params=None):
"""
`<https://www.elastic.co/guide/en/elasticsearch/reference/master/grok-processor.html#grok-processor-rest-get>`_
"""
return self.transport.perform_request(
"GET", "/_ingest/processor/grok", params=params
)
+7 -3
View File
@@ -2,12 +2,16 @@ from .utils import NamespacedClient, query_params, _make_path
class NodesClient(NamespacedClient): class NodesClient(NamespacedClient):
@query_params() @query_params("timeout")
def reload_secure_settings(self, params=None): def reload_secure_settings(self, node_id=None, params=None):
""" """
Reload any settings that have been marked as "reloadable" Reload any settings that have been marked as "reloadable"
`<https://www.elastic.co/guide/en/elasticsearch/reference/current/secure-settings.html#reloadable-secure-settings>`_ `<https://www.elastic.co/guide/en/elasticsearch/reference/current/secure-settings.html#reloadable-secure-settings>`_
:arg node_id: A comma-separated list of node IDs to span the
reload/reinit call. Should stay empty because reloading usually
involves all cluster nodes.
:arg timeout: Explicit operation timeout
""" """
return self.transport.perform_request( return self.transport.perform_request(
"POST", _make_path("_nodes", "reload_secure_settings"), params=params "POST", _make_path("_nodes", "reload_secure_settings"), params=params
@@ -82,7 +86,7 @@ class NodesClient(NamespacedClient):
) )
@query_params( @query_params(
"type", "ignore_idle_threads", "interval", "snapshots", "threads", "timeout" "doc_type", "ignore_idle_threads", "interval", "snapshots", "threads", "timeout"
) )
def hot_threads(self, node_id=None, params=None): def hot_threads(self, node_id=None, params=None):
""" """
+28 -14
View File
@@ -1,13 +1,20 @@
from ..utils import NamespacedClient, query_params from ..utils import NamespacedClient, query_params
from .graph import GraphClient from .ccr import CcrClient
from .license import LicenseClient from .data_frame import Data_FrameClient
from .monitoring import MonitoringClient
from .security import SecurityClient
from .watcher import WatcherClient
from .ml import MlClient
from .migration import MigrationClient
from .deprecation import DeprecationClient from .deprecation import DeprecationClient
from .graph import GraphClient
from .ilm import IlmClient
from .indices import IndicesClient
from .license import LicenseClient
from .migration import MigrationClient
from .ml import MlClient
from .monitoring import MonitoringClient
from .rollup import RollupClient
from .security import SecurityClient
from .sql import SqlClient
from .ssl import SslClient
from .watcher import WatcherClient
class XPackClient(NamespacedClient): class XPackClient(NamespacedClient):
@@ -15,14 +22,21 @@ class XPackClient(NamespacedClient):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(XPackClient, self).__init__(*args, **kwargs) super(XPackClient, self).__init__(*args, **kwargs)
self.graph = GraphClient(self.client) self.ccr = CcrClient(self.client)
self.license = LicenseClient(self.client) self.data_frame = Data_FrameClient(self.client)
self.monitoring = MonitoringClient(self.client)
self.security = SecurityClient(self.client)
self.watcher = WatcherClient(self.client)
self.ml = MlClient(self.client)
self.migration = MigrationClient(self.client)
self.deprecation = DeprecationClient(self.client) self.deprecation = DeprecationClient(self.client)
self.graph = GraphClient(self.client)
self.ilm = IlmClient(self.client)
self.indices = IndicesClient(self.client)
self.license = LicenseClient(self.client)
self.migration = MigrationClient(self.client)
self.ml = MlClient(self.client)
self.monitoring = MonitoringClient(self.client)
self.rollup = RollupClient(self.client)
self.security = SecurityClient(self.client)
self.sql = SqlClient(self.client)
self.ssl = SslClient(self.client)
self.watcher = WatcherClient(self.client)
@query_params("categories", "human") @query_params("categories", "human")
def info(self, params=None): def info(self, params=None):
+2 -7
View File
@@ -454,13 +454,8 @@ def scan(
"Scroll request has only succeeded on %d shards out of %d." "Scroll request has only succeeded on %d shards out of %d."
% (resp["_shards"]["successful"], resp["_shards"]["total"]), % (resp["_shards"]["successful"], resp["_shards"]["total"]),
) )
scroll_kwargs.update({"scroll_id": scroll_id, "scroll": scroll})
resp = client.scroll( resp = client.scroll(**scroll_kwargs)
scroll_id,
scroll=scroll,
request_timeout=request_timeout,
**scroll_kwargs
)
scroll_id = resp.get("_scroll_id") scroll_id = resp.get("_scroll_id")
finally: finally:
+1 -1
View File
@@ -96,4 +96,4 @@ class TestClient(ElasticsearchTestCase):
def test_index_uses_put_if_id_is_not_empty(self): def test_index_uses_put_if_id_is_not_empty(self):
self.client.index(index="my-index", id=0, body={}) self.client.index(index="my-index", id=0, body={})
self.assert_url_called("PUT", "/my-index/_doc/0") self.assert_url_called("POST", "/my-index/_doc/0")