Save Objects
addObject
ACL
$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
We released a new version of the PHP API client in public beta. Read the beta documentation for more information.
We released a new version of the JavaScript API client in public beta. Read the beta documentation for more information.
We released a new version of the Java API client in public beta. Read the beta documentation for more information.
You’re currently reading the JavaScript API client v4 documentation. Check the migration guide to learn how to upgrade from v3 to v4. You can still access the v3 documentation.
You’re currently reading the Ruby API client v2 documentation. Check the migration guide to learn how to upgrade from v1 to v2. You can still access the v1 documentation.
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 theauthor
attribute, but you don’t define it in your update call, it removes theauthor
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.
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.
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.
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.
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.
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
Read the Algolia CLI documentation for more information.
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' => 'YourApplicationID',
'apiKey' => 'YourWriteAPIKey',
'batchSize' => 999999,
]);
$client = SearchClient::createWithConfig($config);
Parameters
objects
|
type: list of object
Required
A list of objects to save. |
autoGenerateObjectIDIfNotExist
|
type: boolean
default: false
Optional
When |
objectIDKey
|
type: string
Optional
If specified, for each record, the Only available for PHP. |
requestOptions
|
type: key-value mapping
default: No request options
Optional
A mapping of |
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
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. |