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.
This method creates a temporary index: your record count is temporarily doubled.
Algolia doesn’t count the three days with the highest number of records towards your monthly usage.
If you’re on a legacy plan (before July 2020), this method counts two operations towards your usage (in addition to the number of records):
copySettings and moveIndex.
The API key you use for this operation must have access to the index YourIndex and the temporary index YourIndex_tmp.
$client=Algolia\AlgoliaSearch\SearchClient::create('YourApplicationID','YourWriteAPIKey');$objects=/* Fetch your objects */;$index=$client->initIndex('YourIndexName');$index->replaceAllObjects($objects);
1
2
3
4
5
6
7
8
client=Algolia::Search::Client.create('YourApplicationID','YourWriteAPIKey')objects=[# your new objects]index=client.init_index('YourIndexName')index.replace_all_objects(objects)
1
2
3
4
5
6
7
8
9
constclient=algoliasearch('YourApplicationID','YourWriteAPIKey');constobjects=[];// Fetch your objectsconstindex=client.initIndex('YourIndexName');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("YourIndexName")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:"YourIndexName")letobjects:[Contact]!=[/*Fetch your objects*/]index.replaceAllObjects(with:objects){resultinifcase.success(letresponse)=result{print("Response: \(response)")}}
// 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)
1
2
3
4
5
varclient=newSearchClient("YourApplicationID","YourWriteAPIKey");varindex=client.InitIndex("YourIndexName");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("YourIndexName",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("YourIndexName")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)}}
Replace all rexcords 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('YourIndexName');$index->replaceAllObjects($objects,['safe'=>true,]);
1
2
3
4
5
6
7
8
9
client=Algolia::Search::Client.create('YourApplicationID','YourWriteAPIKey')objects=[# your new objects]index=client.init_index('YourIndexName')index.replace_all_objects(objects,{safe: true})# or: index.replace_all_objects!(objects)
1
2
3
4
5
6
7
8
9
constclient=algoliasearch('YourApplicationID','YourWriteAPIKey');constobjects=[];// Fetch your objectsconstindex=client.initIndex('YourIndexName');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('YourIndexName')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:"YourIndexName")letobjects:[Contact]!=[/*Fetch your objects*/]index.replaceAllObjects(with:objects,safe:true){resultinifcase.success(letresponse)=result{print("Response: \(response)")}}
varclient=newSearchClient("YourApplicationID","YourWriteAPIKey");varindex=client.InitIndex("YourIndexName");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("YourIndexName",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("YourIndexName")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)}}
Parameters
Parameter
Description
objects
type: list
Required
List of records.
Use an iterator instead of a list to prevent memory issues,
especially if you want to replace many records.
safe
type: boolean
default: false
Optional
If true, wait after each step before continuing.
requestOptions
type: key-value pairs
Optional
A mapping of requestOptions to send along with the query.