本快速入门将引导您安装 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"
}

如果 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" }'

本教程使用主密钥查询 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 参考