本指南将逐步引导您创建一个 Node.js 脚本,用于将 Algolia 索引的数据上传到 Meilisearch。
node.js
: 16.16
algoliasearch
: 4.13
meilisearch-js
: 0.27.0
meilisearch
: 0.28
algolia-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) |