本快速入门指南将带您完成安装 Meilisearch、添加文档以及执行首次搜索的全过程。

要跟随本教程操作,您需要:

使用 Meilisearch Cloud?请查看专用指南 Meilisearch Cloud 快速入门

安装与设置

首先,您需要下载并安装 Meilisearch。以下命令将在您的本地机器上安装最新版本的 Meilisearch:

# 安装 Meilisearch
curl -L https://install.meilisearch.com | sh

本指南后续内容假设您在本地使用 Meilisearch,但您也可以通过云服务如 Meilisearch Cloud 来使用。

更多安装选项请参阅安装指南

运行 Meilisearch

接下来,在终端中运行以下命令启动 Meilisearch:


# 启动 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

数据库路径:       "./data.ms"
服务器监听地址: "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"
}

如果 statusenqueuedprocessing,您只需稍等片刻再检查即可。当任务 status 变为 succeeded 后,继续下一步。

搜索

现在您已经设置好 Meilisearch,可以开始搜索了!

curl \
  -X POST 'MEILISEARCH_URL/indexes/movies/search' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer aSampleMasterKey' \
  --data-binary '{ "q": "botman" }'

本教程使用主密钥(master key)查询 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 参考文档