启动时配置 Meilisearch

    当自托管 Meilisearch 时,您可以使用**命令行选项**、**环境变量**或**配置文件**在启动时配置您的实例。

    这些启动选项会影响您的整个 Meilisearch 实例,而不仅仅是单个索引。有关影响单个索引内搜索的设置,请参阅索引设置

    命令行选项和标志

    启动 Meilisearch 实例时,传递**命令行选项**及其各自的值。

    ./meilisearch --db-path ./meilifiles --http-addr 'localhost:7700'
    

    在前面的示例中,./meilisearch 是启动 Meilisearch 实例的命令,而 --db-path--http-addr 是修改此实例行为的选项。

    Meilisearch 还有许多**命令行标志**。与命令行选项不同,**标志不接受值**。如果给出了一个标志,它将被激活并更改 Meilisearch 的默认行为。

    ./meilisearch --no-analytics
    

    上面的标志禁用了 Meilisearch 实例的分析,并且不接受值。

    **命令行选项和命令行标志都优先于环境变量。**所有命令行选项和标志都以 -- 开头。

    环境变量

    要使用环境变量配置 Meilisearch 实例,请在启动实例之前设置环境变量。如果您不确定如何操作,请阅读有关设置和列出环境变量的更多信息,或者改用命令行选项

    export MEILI_DB_PATH=./meilifiles
    export MEILI_HTTP_ADDR=localhost:7700
    ./meilisearch
    

    在前面的示例中,./meilisearch 是启动 Meilisearch 实例的命令,而 MEILI_DB_PATHMEILI_HTTP_ADDR 是修改此实例行为的环境变量。

    用于命令行标志的环境变量接受 nnoffalseoff0 作为 false。缺少的环境变量也将被视为 false。任何其他值都被视为 true

    环境变量始终与相应的命令行选项相同,但以 MEILI_ 开头并全部用大写字母书写。

    配置文件

    Meilisearch 接受 .toml 格式的配置文件,作为命令行选项和环境变量的替代方案。配置文件可以轻松共享和版本控制,并允许您定义多个选项。

    同时使用时,环境变量会覆盖配置文件,而命令行选项会覆盖环境变量。

    您可以使用以下命令下载默认配置文件

    curl https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml > config.toml
    

    默认情况下,Meilisearch 将在工作目录中查找 config.toml 文件。如果存在,它将用作配置文件。您可以在启动 Meilisearch 时验证这一点

    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
    
    Config file path:       "./config.toml"
    

    如果 Config file path 不是 "none",则表示已成功找到并使用配置文件来启动 Meilisearch。

    您可以使用 MEILI_CONFIG_FILE_PATH 环境变量或 --config-file-path CLI 选项来覆盖配置文件的默认位置

    ./meilisearch --config-file-path="./config.toml"
    

    配置文件格式

    您可以使用配置文件配置任何环境变量或 CLI 选项。在配置文件中,选项必须以蛇形命名法书写。例如,--import-dump 将写为 import_dump

    import_dump = "./example.dump"
    
    警告

    在配置文件中指定 config_file_path 选项将引发错误。这是唯一不能在配置文件中设置的配置选项。

    配置云托管实例

    要使用命令行选项在云托管实例中配置 Meilisearch,请编辑其服务文件。服务文件的默认位置是 /etc/systemd/system/meilisearch.service

    要在云托管实例中使用环境变量配置 Meilisearch,请修改 Meilisearch 的 env 文件。其默认位置是 /var/opt/meilisearch/env

    编辑配置选项后,重新启动 Meilisearch 服务

    systemctl restart meilisearch
    
    配置 Meilisearch Cloud

    Meilisearch Cloud提供了一个优化的预配置环境。在 Meilisearch Cloud 上托管您的项目时,您无需使用此页面中列出的任何配置选项。

    所有实例选项

    配置文件路径

    环境变量MEILI_CONFIG_FILE_PATH
    CLI 选项--config-file-path
    默认值./config.toml
    预期值:文件路径

    指定在启动时加载的配置文件的位置。

    警告

    在配置文件本身中指定此选项将引发错误(假设 Meilisearch 能够找到您的配置文件)。

    数据库路径

    环境变量MEILI_DB_PATH
    CLI 选项--db-path
    默认值"data.ms/"
    预期值:文件路径

    指定将要创建和检索数据库文件的位置。

    环境

    环境变量: MEILI_ENV
    CLI 选项: --env
    默认值: development
    期望值: productiondevelopment

    配置实例的环境。值必须为 productiondevelopment

    production:

    development:

    提示

    当服务器环境设置为 development 时,提供主密钥不是强制性的。 这在调试和原型设计时很有用,但在其他情况下则很危险,因为 API 路由不受保护。

    HTTP 地址和端口绑定

    环境变量: MEILI_HTTP_ADDR
    CLI 选项: --http-addr
    默认值: "localhost:7700"
    期望值: 一个 HTTP 地址和端口

    设置 Meilisearch 将使用的 HTTP 地址和端口。

    主密钥

    环境变量: MEILI_MASTER_KEY
    CLI 选项: --master-key
    默认值: None
    期望值: 一个至少 16 字节的 UTF-8 字符串

    设置实例的主密钥,自动保护除 GET /health 以外的所有路由。 这意味着您将需要有效的 API 密钥才能访问所有其他端点。

    --env 设置为 production 时,必须提供主密钥。 如果未提供主密钥,或主密钥小于 16 字节,Meilisearch 将抛出错误并拒绝启动。

    --env 设置为 development 时,提供主密钥是可选的。 如果未提供主密钥,则所有路由将不受保护并可公开访问。

    如果您在 productiondevelopment 环境中未提供主密钥,或主密钥小于 16 字节,Meilisearch 将建议一个安全的自动生成主密钥,您可以在重新启动实例时使用它。

    了解更多关于 Meilisearch 安全密钥的使用。

    禁用分析

    警告

    🚩 此选项不接受任何值。分配一个值会抛出错误。 🚩

    环境变量: MEILI_NO_ANALYTICS
    CLI 选项: --no-analytics

    当提供此选项时,禁用 Meilisearch 的内置遥测。

    Meilisearch 会自动收集所有未使用此标志选择退出的实例的数据。所有收集的数据仅用于改进 Meilisearch,并且可以随时删除

    详细了解我们的数据收集政策,或查看我们收集的所有数据点的完整列表

    转储目录

    环境变量: MEILI_DUMP_DIR
    CLI 选项: --dump-dir
    默认值: dumps/
    期望值: 一个指向有效目录的文件路径

    设置 Meilisearch 将创建转储文件的目录。

    了解更多关于创建转储的信息.

    导入转储

    环境变量: MEILI_IMPORT_DUMP
    CLI 选项: --import-dump
    默认值: 无
    期望值: 一个指向 .dump 文件的文件路径

    导入指定路径下的转储文件。路径必须指向 .dump 文件。如果数据库已存在,Meilisearch 将抛出错误并中止启动。

    Meilisearch 只有在转储数据完全索引后才会启动。这需要的时间取决于转储文件的大小。

    忽略丢失的转储

    警告

    🚩 此选项不接受任何值。分配一个值会抛出错误。 🚩

    环境变量: MEILI_IGNORE_MISSING_DUMP
    CLI 选项: --ignore-missing-dump

    --import-dump 未指向有效的转储文件时,防止 Meilisearch 抛出错误。相反,Meilisearch 将正常启动,而不导入任何转储。

    如果未定义 --import-dump,此选项将触发错误。

    如果数据库存在则忽略转储

    警告

    🚩 此选项不接受任何值。分配一个值会抛出错误。 🚩

    环境变量: MEILI_IGNORE_DUMP_IF_DB_EXISTS
    CLI 选项: --ignore-dump-if-db-exists

    防止使用 --import-dump 时,具有现有数据库的 Meilisearch 实例抛出错误。相反,转储将被忽略,Meilisearch 将使用现有数据库启动。

    如果未定义 --import-dump,此选项将触发错误。

    日志级别

    环境变量: MEILI_LOG_LEVEL
    CLI 选项: --log-level
    默认值: 'INFO'
    期望值: ERRORWARNINFODEBUGTRACEOFF 中的一个

    定义 Meilisearch 日志中应存在的详细程度。

    Meilisearch 目前支持五个日志级别,按详细程度递增的顺序列出

    自定义日志输出 实验性

    环境变量: MEILI_LOGS_MODE
    CLI 选项: --experimental-logs-mode
    默认值: 'human'
    期望值: humanjson 中的一个

    定义日志应输出人类可读的文本还是 JSON 数据。

    最大索引内存

    环境变量: MEILI_MAX_INDEXING_MEMORY
    CLI 选项: --max-indexing-memory
    默认值: 可用 RAM 的 2/3
    期望值: 一个整数 (104857600) 或一个人类可读的大小 ('100Mb')

    设置 Meilisearch 在索引时可以使用的最大 RAM 量。默认情况下,Meilisearch 使用的内存不超过可用内存的三分之二。

    该值必须以字节为单位给出,或明确声明基本单位:107374182400'107.7Gb''107374 Mb'

    在索引期间,Meilisearch 可能会超出精确的 RAM 限制。在大多数情况和机器上,这应该是一个可忽略不计的量,对稳定性和性能几乎没有影响。

    危险

    --max-indexing-memory 设置为大于或等于机器总内存的值可能会导致实例崩溃。

    减少索引内存使用量 实验性

    警告

    🚩 此选项不接受任何值。分配一个值会抛出错误。 🚩

    环境变量: MEILI_EXPERIMENTAL_REDUCE_INDEXING_MEMORY_USAGE
    CLI 选项: --experimental-reduce-indexing-memory-usage
    默认值: None

    启用 MDB_WRITEMAP,一个 LMDB 选项。激活此选项可能会在某些 UNIX 和类 UNIX 设置中减少 RAM 使用量。但是,它也可能对写入速度和整体性能产生负面影响。

    最大索引线程数

    环境变量: MEILI_MAX_INDEXING_THREADS
    CLI 选项: --max-indexing-threads
    默认值: 可用线程数的一半
    期望值: 一个整数

    设置 Meilisearch 在索引期间可以使用的最大线程数。默认情况下,索引器避免使用超过机器总处理单元一半的数量。这确保 Meilisearch 始终准备好执行搜索,即使您正在更新索引。

    如果 --max-indexing-threads 高于机器中可用的实际核心数,Meilisearch 将使用最大可用核心数。

    在单核机器中,Meilisearch 别无选择,只能使用唯一的可用核心进行索引。这可能会导致索引期间的搜索体验下降。

    危险

    避免将 --max-indexing-threads 设置为机器处理器核心总数。虽然这样做可能会加快索引速度,但很可能会严重影响搜索体验。

    有效载荷大小限制

    环境变量: MEILI_HTTP_PAYLOAD_SIZE_LIMIT
    CLI 选项: --http-payload-size-limit
    默认值: 104857600 (~100MB)
    期望值: 一个整数

    设置接受的有效载荷的最大大小。值必须以字节为单位给出,或明确声明基本单位。例如,默认值可以写成 107374182400'107.7Gb''107374 Mb'

    搜索队列大小 实验性

    环境变量: MEILI_EXPERIMENTAL_SEARCH_QUEUE_SIZE
    CLI 选项: --experimental-search-queue-size
    默认值: 1000
    期望值: 一个整数

    配置最大同时搜索请求数。默认情况下,Meilisearch 在任何给定时刻最多排队 1000 个搜索请求。存在此限制是为了防止 Meilisearch 消耗无限制的 RAM。

    计划快照创建

    环境变量: MEILI_SCHEDULE_SNAPSHOT
    CLI 选项: --schedule-snapshot
    默认值: 如果不存在则禁用,如果存在但没有值则为 86400
    期望值: None 或一个整数

    激活计划快照。默认情况下禁用快照。

    可以在不使用值的情况下使用 --schedule-snapshot。如果启动实例时存在 --schedule-snapshot 但未分配值,则 Meilisearch 每 24 小时拍摄一次新快照。

    为了更好地控制快照计划,请传递一个表示每个快照之间间隔(以秒为单位)的整数。当 --schedule-snapshot=3600 时,Meilisearch 每小时拍摄一次新快照。

    注意

    当使用配置文件时,也可以显式地将布尔值传递给 schedule_snapshot。当 schedule_snapshot=true 时,Meilisearch 每 24 小时拍摄一次新快照,当 schedule_snapshot=false 时,则不拍摄快照。

    了解更多关于快照的信息.

    快照目标位置

    环境变量: MEILI_SNAPSHOT_DIR
    CLI 选项: --snapshot-dir
    默认值: snapshots/
    期望值: 一个指向有效目录的文件路径

    设置 Meilisearch 将存储快照的目录。

    导入快照

    环境变量: MEILI_IMPORT_SNAPSHOT
    CLI 选项: --import-snapshot
    默认值: None
    期望值: 一个指向快照文件的文件路径

    在导入给定文件路径中先前生成的快照后启动 Meilisearch。

    如果发生以下情况,此命令将抛出错误

    此行为可以使用 --ignore-snapshot-if-db-exists--ignore-missing-snapshot 选项分别进行修改。

    忽略缺失的快照

    警告

    🚩 此选项不接受任何值。分配一个值会抛出错误。 🚩

    环境变量: MEILI_IGNORE_MISSING_SNAPSHOT
    CLI 选项: --ignore-missing-snapshot

    防止 Meilisearch 实例在 --import-snapshot 未指向有效快照文件时抛出错误。

    如果未定义 --import-snapshot,此命令将抛出错误。

    如果数据库存在则忽略快照

    警告

    🚩 此选项不接受任何值。分配一个值会抛出错误。 🚩

    环境变量: MEILI_IGNORE_SNAPSHOT_IF_DB_EXISTS
    CLI 选项: --ignore-snapshot-if-db-exists

    防止具有现有数据库的 Meilisearch 实例在使用 --import-snapshot 时抛出错误。相反,快照将被忽略,Meilisearch 将使用现有数据库启动。

    如果未定义 --import-snapshot,此命令将抛出错误。

    任务 Webhook URL

    环境变量: MEILI_TASK_WEBHOOK_URL
    CLI 选项: --task-webhook-url
    默认值: None
    期望值: 一个 URL 字符串

    每当 Meilisearch 完成处理一个任务或一批任务时,都会通知配置的 URL。Meilisearch 使用给定的 URL,保留任何指定的查询参数。

    Webhook 有效负载包含 ndjson 格式的已完成任务列表。有关更多信息,请查阅专门的任务 Webhook 指南

    任务 Webhook 授权头

    环境变量: MEILI_TASK_WEBHOOK_AUTHORIZATION_HEADER
    CLI 选项: --task-webhook-authorization-header
    默认值: None
    期望值: 一个身份验证令牌字符串

    在通知 Webhook URL 时,在授权头中包含一个身份验证令牌。

    最大批量任务数 实验性

    环境变量: MEILI_EXPERIMENTAL_MAX_NUMBER_OF_BATCHED_TASKS
    CLI 选项: --experimental-max-number-of-batched-tasks
    默认值: None
    期望值: 一个整数

    限制 Meilisearch 在单个批次中执行的任务数。可以提高处理大量资源密集型任务队列的系统的稳定性。

    复制参数 实验性

    警告

    🚩 此选项不接受任何值。分配一个值会抛出错误。 🚩

    环境变量: MEILI_EXPERIMENTAL_REPLICATION_PARAMETERS
    CLI 选项: --experimental-replication-parameters
    默认值: None

    有助于在集群环境中运行 Meilisearch。它通过以下三种方式修改任务处理来实现此目的

    SSL 选项

    SSL 身份验证路径

    环境变量: MEILI_SSL_AUTH_PATH
    CLI 选项: --ssl-auth-path
    默认值: None
    预期值:文件路径

    在指定路径中启用客户端身份验证。

    SSL 证书路径

    环境变量: MEILI_SSL_CERT_PATH
    CLI 选项: --ssl-cert-path
    默认值: None
    期望值: 指向有效 SSL 证书的文件路径

    设置服务器的 SSL 证书。

    值必须是 PEM 格式的证书的路径。第一个证书应验证由 --ssl-key-path 提供的 KEYFILE。最后一个证书应该是根 CA。

    SSL 密钥路径

    环境变量: MEILI_SSL_KEY_PATH
    CLI 选项: --ssl-key-path
    默认值: None
    期望值: 指向有效 SSL 密钥文件的文件路径

    设置服务器的 SSL 密钥文件。

    值必须是 RSA 私钥或 PKCS8 编码的私钥的路径,两者都采用 PEM 格式。

    SSL OCSP 路径

    环境变量: MEILI_SSL_OCSP_PATH
    CLI 选项: --ssl-ocsp-path
    默认值: None
    期望值: 指向有效 OCSP 证书的文件路径

    设置服务器的 OCSP 文件。可选

    从 OCSPFILE 读取 DER 编码的 OCSP 响应并将其附加到证书。

    SSL 需要身份验证

    警告

    🚩 此选项不接受任何值。分配一个值会抛出错误。 🚩

    环境变量: MEILI_SSL_REQUIRE_AUTH
    CLI 选项: --ssl-require-auth
    默认值: None

    使 SSL 身份验证成为强制性的。

    如果客户端未完成客户端身份验证,则发送致命警报。

    SSL 恢复

    警告

    🚩 此选项不接受任何值。分配一个值会抛出错误。 🚩

    环境变量: MEILI_SSL_RESUMPTION
    CLI 选项: --ssl-resumption
    默认值: None

    激活 SSL 会话恢复。

    SSL 票据

    警告

    🚩 此选项不接受任何值。分配一个值会抛出错误。 🚩

    环境变量: MEILI_SSL_TICKETS
    CLI 选项: --ssl-tickets
    默认值: None

    激活 SSL 票据。