开始使用自托管 Meilisearch
本快速入门指南将引导您完成安装 Meilisearch、添加文档和执行首次搜索的过程。
要学习本教程,您需要
提示
使用 Meilisearch Cloud?查看专门的指南,开始使用 Meilisearch Cloud。
设置和安装
首先,您需要下载并安装 Meilisearch。此命令将在您的本地机器上安装最新版本的 Meilisearch
# Install Meilisearch
curl -L https://install.meilisearch.com | sh
本指南的其余部分假设您正在本地使用 Meilisearch,但您也可以通过云服务(例如 Meilisearch Cloud)使用 Meilisearch。
在 安装指南中了解有关其他安装选项的更多信息。
运行 Meilisearch
接下来,通过在终端中运行以下命令来启动 Meilisearch
# Launch Meilisearch
./meilisearch --master-key="aSampleMasterKey"
注意
本教程使用 aSampleMasterKey
作为主密钥,但您可以将其更改为任何长度为 16 字节或以上的字母数字字符串。在大多数情况下,一个字符对应一个字节。
您应该会看到类似于以下内容的响应
888b d888 d8b 888 d8b 888
8888b d8888 Y8P 888 Y8P 888
88888b.d88888 888 888
888Y88888P888 .d88b. 888 888 888 .d8888b .d88b. 8888b. 888d888 .d8888b 88888b.
888 Y888P 888 d8P Y8b 888 888 888 88K d8P Y8b "88b 888P" d88P" 888 "88b
888 Y8P 888 88888888 888 888 888 "Y8888b. 88888888 .d888888 888 888 888 888
888 " 888 Y8b. 888 888 888 X88 Y8b. 888 888 888 Y88b. 888 888
888 888 "Y8888 888 888 888 88888P' "Y8888 "Y888888 888 "Y8888P 888 888
Database path: "./data.ms"
Server listening on: "localhost:7700"
您现在已在终端窗口中运行了一个 Meilisearch 实例。在本教程的其余部分中,请保持此窗口打开。
注意
上述命令使用 --master-key
配置选项来保护 Meilisearch 的安全。设置主密钥是可选的,但在开发环境中强烈建议这样做。在生产环境中,主密钥是强制性的。
要了解有关保护 Meilisearch 安全性的更多信息,请参阅 安全教程。
添加文档
在本快速入门指南中,您将搜索电影集合。
要跟着操作,首先点击此链接下载文件:movies.json。然后,将下载的文件移动到您的工作目录。
注意
Meilisearch 接受 JSON、NDJSON 和 CSV 格式的数据。
打开一个新的终端窗口并运行以下命令
curl \
-X POST 'http://127.0.0.1:7700/indexes/movies/documents?primaryKey=id' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer aSampleMasterKey' \
--data-binary @movies.json
Meilisearch 将数据存储为离散的记录,称为文档。每个文档都是一个对象,由多个字段组成,这些字段是一对属性和值。
{
"attribute": "value"
}
文档被分组到称为索引的集合中。
前面的命令将 movies.json
中的文档添加到名为 movies
的新索引中。它还将 id
设置为主键。
注意
每个索引必须有一个主键,这是该索引中所有文档共享的一个属性。如果您尝试将文档添加到索引中,并且即使只有一个文档缺少主键,也不会存储任何文档。
如果您没有显式设置主键,Meilisearch 会从您的数据集中推断它。
添加文档后,您应该会收到类似以下的响应
{
"taskUid": 0,
"indexUid": "movies",
"status": "enqueued",
"type": "documentAdditionOrUpdate",
"enqueuedAt": "2021-08-11T09:25:53.000000Z"
}
使用返回的 taskUid
来检查文档的状态
curl \
-X GET 'http://127.0.0.1:7700/tasks/0' \
-H 'Authorization: Bearer aSampleMasterKey'
注意
Meilisearch 中的大多数数据库操作都是异步的。它们不是立即处理的,而是**API 请求被添加到队列中,并按顺序处理**。
如果文档添加成功,响应应如下所示
{
"uid": 0,
"indexUid": "movies",
"status": "succeeded",
"type": "documentAdditionOrUpdate",
"canceledBy": null,
"details":{
"receivedDocuments": 19547,
"indexedDocuments": 19547
},
"error": null,
"duration": "PT0.030750S",
"enqueuedAt": "2021-12-20T12:39:18.349288Z",
"startedAt": "2021-12-20T12:39:18.352490Z",
"finishedAt": "2021-12-20T12:39:18.380038Z"
}
如果 status
为 enqueued
或 processing
,您只需等待一小段时间然后再次检查。一旦任务 status
更改为 succeeded
,请继续执行下一步。
搜索
现在您已设置好 Meilisearch,您可以开始搜索了!
curl \
-X POST 'http://127.0.0.1:7700/indexes/movies/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer aSampleMasterKey' \
--data-binary '{ "q": "botman" }'
注意
本教程使用主密钥查询 Meilisearch。在生产环境中,这是一种安全风险。在任何面向公众的应用程序中,最好使用 API 密钥访问 Meilisearch 的 API。
在上面的代码示例中,参数 q
表示搜索查询。此查询指示 Meilisearch 在您在上一步中添加的文档中搜索 botman
。
{
"hits": [
{
"id": 29751,
"title": "Batman Unmasked: The Psychology of the Dark Knight",
"poster": "https://image.tmdb.org/t/p/w1280/jjHu128XLARc2k4cJrblAvZe0HE.jpg",
"overview": "Delve into the world of Batman and the vigilante justice tha",
"release_date": "2008-07-15"
},
{
"id": 471474,
"title": "Batman: Gotham by Gaslight",
"poster": "https://image.tmdb.org/t/p/w1280/7souLi5zqQCnpZVghaXv0Wowi0y.jpg",
"overview": "ve Victorian Age Gotham City, Batman begins his war on crime",
"release_date": "2018-01-12"
},
…
],
"estimatedTotalHits": 66,
"query": "botman",
"limit": 20,
"offset": 0,
"processingTimeMs": 12
}
默认情况下,Meilisearch 仅返回搜索查询的前 20 个结果。您可以使用limit
参数更改此设置。
下一步是什么?
您现在知道如何安装 Meilisearch、创建索引、添加文档、检查异步任务的状态以及发出搜索请求。
如果您想使用干净的浏览器界面而不是终端搜索您刚刚添加的文档,您可以使用我们内置的搜索预览。您还可以学习如何快速构建自己的前端界面。
要了解更多高级方法,请查阅API 参考。