在复制过程中克隆Algolia的索引集合
我注意到,在复制操作中,即使不传入作用域,也不会克隆集合。
有没有办法(或权宜之计)实际复制集合配置?
我的想法是遍历所有记录,查找 _collections属性,然后构建集合映射,并调用某个端点以编程方式重新创建集合。
我需要这样做,是因为我很可能需要重命名所有索引,且不能让业务方从头重新创建集合。它也可能成为在某次全量重新索引过程中出错导致数据丢失时的一种容错机制。
我正在使用JavaScript SDK。
解决方案
以下是在Mechandising Studio中尝试操作时,通过在检查器里“偷看”他们的API来实现自动克隆的做法。
前提:认证方式与用于与索引交互时相同,即将Algolia的 App ID和 API Key作为请求头传递。
-
读取列表(Discovery)
-
端点:
GET https://experiences.algolia.com/1/collections?indexName={sourceIndexName}&offset=0&limit=50。 - 这将返回基本元数据
-
读取详情
-
端点:
GET https://experiences.algolia.com/1/collections/{collection_id}。 - 检索完整对象,具体是
records数组(用于手动固定项)和conditions对象(用于动态规则)。 -
写入/克隆(目标索引)
-
端点:
POST https://experiences.algolia.com/1/collections。 -
有效载荷映射:
add:将步骤2 中的records数组映射。conditions:将步骤2 的conditions对象映射。name/description:从步骤2 复制这些字符串。- 示例
{ "name": "Some collection", "indexName": "targetIndexName", "description": "Description (optional)", "add": [ "objectID_1", "objectID_2" ], "remove": [], "conditions": { "rules": [ { "attribute": "brand", "operator": "is", "value": "Apple" } ] } }
希望对你有帮助!