diff --git a/opensearchpy/client/__init__.py b/opensearchpy/client/__init__.py index b6475eee..0dfafab7 100644 --- a/opensearchpy/client/__init__.py +++ b/opensearchpy/client/__init__.py @@ -339,7 +339,72 @@ def create( "PUT", path, params=params, headers=headers, body=body ) - + @query_params( + "if_primary_term", + "if_seq_no", + "op_type", + "pipeline", + "refresh", + "require_alias", + "routing", + "timeout", + "version", + "version_type", + "wait_for_active_shards", + ) + def index( + self, + index: Any, + body: Any, + id: Any = None, + params: Any = None, + headers: Any = None, + ) -> Any: + """ + Creates or updates a document in an index. + + + :arg index: Index name. + :arg body: The document + :arg id: Document ID. + :arg if_primary_term: only perform the operation if the last + operation that has changed the document has the specified primary term. + :arg if_seq_no: only perform the operation if the last operation + that has changed the document has the specified sequence number. + :arg op_type: Explicit operation type. Defaults to `index` for + requests with an explicit document ID, and to `create` for requests + without an explicit document ID. Valid choices are index, create. + :arg pipeline: The pipeline id to preprocess incoming documents + with. + :arg refresh: If `true` then refresh the affected shards to make + this operation visible to search, if `wait_for` then wait for a refresh + to make this operation visible to search, if `false` (the default) then + do nothing with refreshes. Valid choices are true, false, wait_for. + :arg require_alias: When true, requires destination to be an + alias. Default is false. + :arg routing: Routing value. + :arg timeout: Operation timeout. + :arg version: Explicit version number for concurrency control. + :arg version_type: Specific version type. Valid choices are + internal, external, external_gte, force. + :arg wait_for_active_shards: Sets the number of shard copies + that must be active before proceeding with the operation. Defaults to 1, + meaning the primary shard only. Set to `all` for all shard copies, + otherwise set to any non-negative value less than or equal to the total + number of copies for the shard (number of replicas + 1). Default is 1. + """ + for param in (index, body): + if param in SKIP_IN_PATH: + raise ValueError("Empty value passed for a required argument.") + + return self.transport.perform_request( + "POST" if id in SKIP_IN_PATH else "PUT", + _make_path(index, "_doc", id), + params=params, + headers=headers, + body=body, + ) + @query_params( "_source", "_source_excludes",