本指南将逐步引导您创建一个 Node.js 脚本,用于将 Algolia 索引的数据上传到 Meilisearch。
node.js: 16.16algoliasearch: 4.13meilisearch-js: 0.27.0meilisearch: 0.28algolia-meilisearch-migration,并使用 npm 生成一个 package.json 文件
script.js 文件:algoliasearch,Algolia API 的 JavaScript 客户端;第二个是 meilisearch,Meilisearch API 的 JavaScript 客户端。
script.js 中:APPLICATION_ID 和 ADMIN_API_KEY 分别替换为您的 Algolia 应用程序 ID 和管理 API 密钥。 将 INDEX_NAME 替换为要迁移到 Meilisearch 的 Algolia 索引的名称。browseObjects 方法。
batch 回调方法在每次批处理命中时被调用,内容会连接到 records 数组中。我们将在上传过程中再次使用 records。
MEILI_HOST、MEILI_API_KEY 和 MEILI_INDEX_NAME 替换为您的 Meilisearch 主机 URL、Meilisearch API 密钥以及要添加文档的索引名称。如果索引不存在,Meilisearch 将创建该索引。
addDocumentsInBatches 以 100,000 为批次上传所有记录。
sortableAttributes 才能使用搜索参数 sort。但是,与 Algolia 不同,索引设置永远不能用作参数,反之亦然。| Algolia | Meilisearch |
|---|---|
query | q |
attributesToRetrieve | attributesToRetrieve |
filters | filter |
facets | facetDistribution(分面分布) |
attributesToHighlight | attributesToHighlight |
offset | offset |
length | limit |
typoTolerance | typoTolerance |
snippetEllipsisText | cropMarker |
searchableAttributes | searchableAttributes |
attributesForFaceting | filterableAttributes |
unretrievableAttributes | 无直接等效项;通过从 displayedAttributes 中删除属性来实现 |
attributesToRetrieve | displayedAttributes |
attributeForDistinct | distinctAttribute |
ranking | rankingRules |
customRanking | 集成在 rankingRules 中 |
removeStopWords | stopWords |
synonyms | synonyms |
| 排序(使用副本) | sortableAttributes(无需副本) |
removeWordsIfNoResults | 自动支持,但不可自定义 |
disableTypoToleranceOnAttributes | typoTolerance.disableOnAttributes |
separatorsToIndex | 不支持 |
disablePrefixOnAttributes | 不支持 |
relevancyStrictness | 不支持 |
maxValuesPerFacet | maxValuesPerFacet |
sortFacetValuesBy | sortFacetValuesBy |
restrictHighlightAndSnippetArrays | 不支持 |
| 方法 | Algolia | Meilisearch |
|---|---|---|
| 索引实例化 | client.initIndex()此处,client 是一个 Algolia 实例。 | client.index()此处,client 是一个 Meilisearch 实例。 |
| 创建索引 | Algolia 会在您第一次添加记录或设置时自动创建索引。 | Meilisearch 也是如此,但用户也可以显式创建索引:client.createIndex(string indexName) |
| 获取所有索引 | client.listIndices() | client.getIndexes() |
| 获取单个索引 | 没有可用方法 | client.getIndex(string indexName) |
| 删除索引 | index.delete() | client.deleteIndex(string indexName) |
| 获取索引设置 | index.getSettings() | index().getSettings() |
| 更新索引设置 | index.setSettings(object settings) | index().updateSettings(object settings) |
| 搜索方法 | index.search(string query, { searchParameters, requestOptions }) | index.search(string query, object searchParameters) |
| 添加对象 | index.saveObjects(array objects) | index.addDocuments(array objects) |
| 部分更新对象 | index.partialUpdateObjects(array objects) | index.updateDocuments(array objects) |
| 删除所有对象 | index.deleteObjects(array objectIDs) | index.deleteAllDocuments() |
| 删除一个对象 | index.deleteObject(string objectID) | index.deleteDocument(string id) |
| 获取所有对象 | index.getObjects(array objectIDs) | index.getDocuments(object params) |
| 获取单个对象 | index.getObject(str objectID) | index.getDocument(string id) |
| 获取 API 密钥 | client.listApiKeys() | client.getKeys() |
| 获取 API 密钥信息 | client.getApiKey(string apiKey) | client.getKey(string apiKey) |
| 创建 API 密钥 | client.addApiKey(array acl) | client.createKey(object configuration) |
| 更新 API 密钥 | client.updateApiKey(string apiKey, object configuration) | client.updateKey(string apiKey, object configuration) |
| 删除 API 密钥 | client.deleteApiKey(string apiKey) | client.deleteKey(string apiKey) |