API Reference / API Methods / Indexing / Save objects
Required API Key: any key with the addObject ACL
Method signature
$index->saveObjects(array objects);
$index->saveObjects(array objects, [
  // All the following parameters are optional
  'autoGenerateObjectIDIfNotExist' => boolean,
  'objectIDKey' => string
  // + any requestOptions
]);


// update a single object
$index->saveObject(array object)
$index->saveObject(array object, [
  // All the following parameters are optional
  'autoGenerateObjectIDIfNotExist' => boolean,
  'objectIDKey' => string
  // + any requestOptions
]);

About this method # A

We released a new version of the PHP API client in public beta. Read the beta documentation for more information.

Add new objects to an index or replace existing objects with an updated set of attributes.

The save method is used to redefine the entire set of an object’s attributes (except its objectID). In other words, it fully replaces an existing object.

The saveObject and saveObjects methods replace addObject and addObjects respectively. For more information, check the upgrade guide for your API client.

This method differs from partial update objects in a significant way:

  • With saveObjects, you define an object’s full set of attributes. Attributes not specified will no longer exist. For example, if an existing object contains the author attribute, but you don’t define it in your update call, it removes the author attribute from that object.
  • In contrast, when using partialUpdateObjects, you can single out one or more attributes and either create or update their content. If you don’t define an existing attribute in your update call, it doesn’t impact it.

To ensure good performance, saveObjects automatically splits your records into batches of 1,000 objects. If you’re indexing many records and have a stable, high-speed internet connection, you can increase the batch size to send more records per request and shorten your indexing time.

When updating large numbers of objects, or large sizes, be aware of the rate limit. You’ll know you’ve reached the rate limit when you start receiving errors on your indexing operations. To resolve rate limiting errors, you need to wait before sending any further indexing operations.

Saving objects is a single transactional operation. If there’s an error saving one of your objects, none of the objects are added to your index.

This method also has a singular version.

Examples # A

Replace all attributes from existing objects#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$res = $index->saveObjects(
  [
    [
      'objectID'  => 'myID1',
      'firstname' => 'Jimmie',
      'lastname'  => 'Barninger'
    ],
    [
      'objectID'  => 'myID2',
      'firstname' => 'Warren',
      'lastname'  => 'Speach'
    ]
  ]
);

Replace all attributes of a single object#

1
2
3
4
5
6
7
8
$index->saveObject(
  [
    'firstname' => 'Jimmie',
    'lastname'  => 'Barninger',
    'city'      => 'New York',
    'objectID'  => 'myID'
  ]
);

Replace all attributes from existing objects and send extra HTTP headers#

1
2
3
4
$objects = [/* objects */];
$index->saveObjects($objects, [
  'X-Forwarded-For' => '94.228.178.246'
]);

Override the default batch size#

1
2
3
4
5
6
7
$config = new SearchConfig([
    'appId' => 'AJ0P3S7DWQ',
    'apiKey' => 'YourWriteAPIKey',
    'batchSize' => 999999,
]);

$client = SearchClient::createWithConfig($config);

Parameters # A

objects #
type: list of object
Required

A list of objects to save.

autoGenerateObjectIDIfNotExist #
type: boolean
default: false
Optional

When false, if any of the objects doesn’t contain an objectID, the method throws an error. When true, if any of the objects doesn’t contain an objectID, the engine automatically assigns one.

objectIDKey #
type: string
Optional

If specified, for each record, the objectID is set from the value of the specified key.

Only available for PHP.

requestOptions #
type: key-value mapping
default: No request options
Optional

A mapping of requestOptions to send along with the query. In addition to sending extra HTTP headers or setting timeouts, you can use requestOptions to set autoGenerateObjectIDIfNotExist, when using this method.

objects âž” object #

An objectID needs to be specified for each object.

  • If the objectID exists, the record is replaced
  • If the objectID doesn’t exist, a record will be created

Response # A

This section shows the JSON response returned by the API. Since each language encapsulates this response inside objects specific to that language and/or implementation, the actual type in your language might differ from what’s written here. You can view the response in the logs (using the getLogs method).

JSON format#

Save objects#

1
2
3
4
5
6
7
{
  "objectIDs": [
    "myObjectID1",
    "myObjectID2"
  ],
  "taskID": 678,
}

Save object#

1
2
3
4
{
  "objectID": "myObjectID1",
  "taskID": 678,
}
objectIDs #
list

List of objectIDs of the saved objects in order. This property is only returned when using save objects.

objectID #
string

The objectID of the saved object. This property is only returned when using save object.

taskID #
integer

The taskID used with the waitTask method.

Did you find this page helpful?
PHP v3