Meilisearch 自托管入门

    本快速入门将引导您完成 Meilisearch 的安装、添加文档以及执行首次搜索。

    要遵循本教程,您需要

    提示

    正在使用 Meilisearch 云服务?请查看专门的指南,Meilisearch 云服务入门

    设置和安装

    首先,你需要下载并安装 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 'https://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 'https://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"
    }
    

    如果 statusenqueuedprocessing,你所要做的就是等待一小段时间,然后再次检查。一旦任务 status 变为 succeeded,请继续下一步。

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

    curl \
      -X POST 'https://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 参考