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 'MEILISEARCH_URL/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 'MEILISEARCH_URL/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 'MEILISEARCH_URL/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 参考。