This documentation is for a deprecated version of Ruby API client .
Some features and settings may be missing or their usage may have changed.
Refer to the documentation for the
latest version of Ruby API client for up-to-date information.
Clears all objects from your index and replaces them with a new set of objects.
Only your objects are replaced: all settings, synonyms, and query rules are untouched.
This method performs an atomic reindex: it replaces all records in an index without any downtime.
This method uses a temporary index. First, it copies your index’s settings, synonyms, and query rules to the temporary index.
Then, it adds the objects you passed to the temporary index. Finally, it replaces your index with the temporary one.
Before replacing all objects, make sure your source index exists. Our API creates a job even when an index doesn’t exist, but because it has no source index, the job won’t be able to end. If you perform a waitTask for this job, or set the safe parameter to true while the source index doesn’t exist, the wait will never resolve.
Using this method can significantly increase your indexing operations count. It costs the number of new records + 2 operations (copySettings and moveIndex). For example, replacing all objects of an index with a new set of a million objects costs one million (and two) operations. Make sure you don’t exceed your record limit, and be careful of the impact on your operations count.
Behind the scenes, using this method will generate a new, temporary index. If the API key used has restricted index access, the API will return an error when attempting this operation. To fix this, make sure your API key has access to yourIndexandyourIndex_tmp_*.
Examples
Replace all objects
Copy
1
2
3
4
5
6
7
8
9
$client=Algolia\AlgoliaSearch\SearchClient::create('YourApplicationID','YourWriteAPIKey');$objects=/* Fetch your objects */;$index=$client->initIndex('your_index_name');$index->replaceAllObjects($objects);
1
2
3
4
5
6
7
8
9
client=Algolia::Client.new({:application_id=>'YourApplicationID',:api_key=>'YourWriteAPIKey'})objects=[]# Fetch your objectsindex=client.init_index('your_index_name')index.replace_all_objects(objects)
1
2
3
4
5
6
7
8
9
constclient=algoliasearch('YourApplicationID','YourWriteAPIKey');constobjects=[];// Fetch your objectsconstindex=client.initIndex('your_index_name');index.replaceAllObjects(objects).then(({objectIDs})=>{console.log(objectIDs);});
1
2
3
4
5
6
client=SearchClient.create('YourApplicationID','YourWriteAPIKey')objects=[]# Fetch your objects
index=client.init_index('your_index_name')index.replace_all_objects(objects)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
structContact:Encodable{letobjectID:ObjectIDletfirstname:Stringletlastname:String}letclient=SearchClient(appID:"YourApplicationID",apiKey:"YourWriteAPIKey")letindex=client.index(withName:"your_index_name")letobjects:[Contact]!=[/*Fetch your objects*/]index.replaceAllObjects(with:objects){resultinifcase.success(letresponse)=result{print("Response: \(response)")}}
1
1
2
3
4
5
varclient=newSearchClient("YourApplicationID","YourWriteAPIKey");varindex=client.InitIndex("your_index_name");varobjects=/* Fetch your objects */;index.ReplaceAllObjects(objects);
1
2
3
4
5
6
7
8
9
10
11
12
13
SearchClientclient=DefaultSearchClient.create("YourApplicationID","YourWriteAPIKey");SearchIndex<Contact>index=client.initIndex("your_index_name",Contact.class);// Fetch your objectsList<Contact>objects=newArrayList<>();// Sync versionindex.replaceAllObjects(objects);// Async versionindex.replaceAllObjectsAsync(objects);
1
2
3
4
5
6
7
8
9
10
11
12
packagemainimport"github.com/algolia/algoliasearch-client-go/v3/algolia/search"funcmain(){client:=search.NewClient("YourApplicationID","YourWriteAPIKey")index:=client.InitIndex("your_index_name")objects:=[]Object{/* Fetch your objects */}res,err:=index.ReplaceAllObjects(objects)}
importalgolia.AlgoliaClientimportalgolia.AlgoliaDsl._importalgolia.responses._importscala.concurrent.duration._importscala.concurrent.duration.FiniteDurationimportscala.concurrent.{Await,ExecutionContext,ExecutionContextExecutor,Future}caseclassMyCaseClass(objectID:String,/* ... */)extendsObjectIDobjectMain{defmain(args:Array[String]):Unit={implicitvalec:ExecutionContextExecutor=ExecutionContext.globalimplicitvalawaitDuration:FiniteDuration=10secondsvalclient=newAlgoliaClient("YourApplicationID","YourWriteAPIKey")valtmpIndexName="atomic_reindex_tmp"valindexName="atomic_reindex"// 1. Copy the settings, synonyms and rules (but not the records)// of the target index into the temporary indexvalcopyTask=Await.result(client.execute(copyindexindexNametotmpIndexNamescopeSeq("settings","synonyms","rules")),awaitDuration)client.execute(waitFortaskcopyTaskfromindexName)// 2. Fetch your data and push it to the temporary indexvalobjects:Seq[MyCaseClass]=Seq(/* ... */)// Here is where you push your data to the temporary indexvalbatchTasks=Await.result(Future.sequence(objects.grouped(1000).map(batch=>client.execute(indexintotmpIndexNameobjectsbatch))),awaitDuration)Await.result(Future.sequence(batchTasks.map(task=>client.execute(waitFortasktaskfromtmpIndexName))),awaitDuration)// 3. Move the temporary index to the target indexclient.execute(moveindextmpIndexNametoindexName)}}
// With JsonObjectvaljson=listOf(json{"firstname"to"Jimmie""lastname"to"Barninger"},json{"firstname"to"Warren""lastname"to"Speach"})index.replaceAllObjects(json)// With serializable class@Serializabledata classContact(valfirstname:String,vallastname:String)valcontacts=listOf(Contact("Jimmie","Barninger"),Contact("Warren","Speach"))index.replaceAllObjects(Contact.serializer(),contacts)
Replace all objects and wait for operations
Copy
1
2
3
4
5
6
7
8
9
10
11
$client=Algolia\AlgoliaSearch\SearchClient::create('YourApplicationID','YourWriteAPIKey');$objects=/* Fetch your objects */;$index=$client->initIndex('your_index_name');$index->replaceAllObjects($objects,['safe'=>true,]);
1
2
3
4
5
6
7
8
9
client=Algolia::Client.new({:application_id=>'YourApplicationID',:api_key=>'YourWriteAPIKey'})objects=[]# Fetch your objectsindex=client.init_index('your_index_name')index.replace_all_objects(objects,{'safe'=>true})
1
2
3
4
5
6
7
8
9
constclient=algoliasearch('YourApplicationID','YourWriteAPIKey');constobjects=[];// Fetch your objectsconstindex=client.initIndex('your_index_name');index.replaceAllObjects(objects,{safe:true}).then(({objectIDs})=>{console.log(objectIDs);});
1
2
3
4
5
6
7
8
client=SearchClient.create('YourApplicationID','YourWriteAPIKey')objects=[]# Fetch your objects
index=client.init_index('your_index_name')index.replace_all_objects(objects,{'safe':True})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
structContact:Encodable{letobjectID:ObjectIDletfirstname:Stringletlastname:String}letclient=SearchClient(appID:"YourApplicationID",apiKey:"YourWriteAPIKey")letindex=client.index(withName:"your_index_name")letobjects:[Contact]!=[/*Fetch your objects*/]index.replaceAllObjects(with:objects,safe:true){resultinifcase.success(letresponse)=result{print("Response: \(response)")}}
1
2
3
4
5
varclient=newSearchClient("YourApplicationID","YourWriteAPIKey");varindex=client.InitIndex("your_index_name");varobjects=/* Fetch your objects */;index.ReplaceAllObjects(objects,true);
1
2
3
4
5
6
7
8
9
SearchClientclient=DefaultSearchClient.create("YourApplicationID","YourWriteAPIKey");SearchIndex<Contact>index=client.initIndex("your_index_name",Contact.class);// Fetch your objectsList<Contact>objects=newArrayList<>();index.replaceAllObjects(objects,true);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
packagemainimport("github.com/algolia/algoliasearch-client-go/v3/algolia/opt""github.com/algolia/algoliasearch-client-go/v3/algolia/search")funcmain(){client:=search.NewClient("YourApplicationID","YourWriteAPIKey")index:=client.InitIndex("your_index_name")objects:=[]Object{/* Fetch your objects */}res,err:=index.ReplaceAllObjects(objects,opt.Safe(true))}
importalgolia.AlgoliaClientimportalgolia.AlgoliaDsl._importalgolia.responses._importscala.concurrent.duration._importscala.concurrent.duration.FiniteDurationimportscala.concurrent.{Await,ExecutionContext,ExecutionContextExecutor,Future}caseclassMyCaseClass(objectID:String,/* ... */)extendsObjectIDobjectMain{defmain(args:Array[String]):Unit={implicitvalec:ExecutionContextExecutor=ExecutionContext.globalimplicitvalawaitDuration:FiniteDuration=10secondsvalclient=newAlgoliaClient("YourApplicationID","YourWriteAPIKey")valtmpIndexName="atomic_reindex_tmp"valindexName="atomic_reindex"// 1. Copy the settings, synonyms and rules (but not the records)// of the target index into the temporary indexvalcopyTask=Await.result(client.execute(copyindexindexNametotmpIndexNamescopeSeq("settings","synonyms","rules")),awaitDuration)client.execute(waitFortaskcopyTaskfromindexName)// 2. Fetch your data and push it to the temporary indexvalobjects:Seq[MyCaseClass]=Seq(/* ... */)// Here is where you push your data to the temporary indexvalbatchTasks=Await.result(Future.sequence(objects.grouped(1000).map(batch=>client.execute(indexintotmpIndexNameobjectsbatch))),awaitDuration)Await.result(Future.sequence(batchTasks.map(task=>client.execute(waitFortasktaskfromtmpIndexName))),awaitDuration)// 3. Move the temporary index to the target indexclient.execute(moveindextmpIndexNametoindexName)}}