Batch document operation

Batch document operation #

Provides a efficient way to perform multiple index, create, delete, and update operations in a single request.

Examples #

POST /_bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }

The API returns the following result:

{
  "took": 30,
  "errors": false,
  "items": [
    {
      "index": {
        "_namespace": "default",
        "_collection": "test",
        "result": "created",
        ...
      }
    },
    {
      "delete": {
        "_namespace": "default",
        "_collection": "test",
        "result": "not_found",
        ...
      }
    },
    {
      "create": {
        "_namespace": "default",
        "_collection": "test",
        "result": "created",
        ...
      }
    },
    {
      "update": {
        "_namespace": "default",
        "_collection": "test",
        "result": "updated",
        ...
      }
    }
  ]
}

Request #

POST /_bulk
POST /<target>/_bulk

Path parameters #

  • <target>
    (Required, string) Name of the collection to target.

Request body #

The actions are specified in the request body using a newline delimited JSON (NDJSON) structure:

action_and_meta_data\n
optional_source\n
action_and_meta_data\n
optional_source\n
....
action_and_meta_data\n
optional_source\n

The index and create actions expect a source on the next line, and have the same semantics as the standard API: create fails if a document with the same ID already exists in the target, index adds or replaces a document as necessary.

update expects that the partial doc, upsert, and script and its options are specified on the next line.

delete does not expect a source on the next line and has the same semantics as the standard delete API.

Because this format uses literal \n’s as delimiters, make sure that the JSON actions and sources are not pretty printed.

If you provide a <target> in the request path, it is used for any actions that don’t explicitly specify an _index argument.

create #

Indexes the specified document if it does not already exist. The following line must contain the source data to be indexed.

  • _namespace
    (Optional, string) Name of the namespace to perform the action on.
  • _collection
    (Optional, string) Name of the collection to perform the action on. This parameter is required if a <target> is not specified in the request path.
  • _index
    (Optional, string) A shortcut to specify the namespace and collection in [<namespace>:]<collection> syntax. This parameter conflicts with <_namespace> and <_collection>.
  • _id
    (Optional, string) The document ID. If no ID is specified, a document ID is automatically generated.

delete #

Removes the specified document from the index.

  • _namespace
    (Optional, string) Name of the namespace to perform the action on.
  • _collection
    (Optional, string) Name of the collection to perform the action on. This parameter is required if a <target> is not specified in the request path.
  • _index
    (Optional, string) A shortcut to specify the namespace and collection in [<namespace>:]<collection> syntax. This parameter conflicts with <_namespace> and <_collection>.
  • _id
    (Required, string) The document ID. If no ID is specified, a document ID is automatically generated.

index #

Indexes the specified document. If the document exists, replaces the document and increments the version. The following line must contain the source data to be indexed.

  • _namespace
    (Optional, string) Name of the namespace to perform the action on.
  • _collection
    (Optional, string) Name of the collection to perform the action on. This parameter is required if a <target> is not specified in the request path.
  • _index
    (Optional, string) A shortcut to specify the namespace and collection in [<namespace>:]<collection> syntax. This parameter conflicts with <_namespace> and <_collection>.
  • _id
    (Optional, string) The document ID. If no ID is specified, a document ID is automatically generated.

delete #

Removes the specified document from the index.

  • _namespace
    (Optional, string) Name of the namespace to perform the action on.
  • _collection
    (Optional, string) Name of the collection to perform the action on. This parameter is required if a <target> is not specified in the request path.
  • _index
    (Optional, string) A shortcut to specify the namespace and collection in [<namespace>:]<collection> syntax. This parameter conflicts with <_namespace> and <_collection>.
  • _id
    (Required, string) The document ID. If no ID is specified, a document ID is automatically generated.

doc #

The partial document to index. Required for update operations.

<fields> #

The document source to index. Required for create and index operations.

Calendar August 28, 2024
Edit Edit this page