Skip to main content
Version: nightly 🚧

生产环境

除了性能和易用性之外,kumosearch 还旨在降低生产中的运维开销。

kumosearch 是一个独立的二进制文件,不依赖于运行时环境。因此,在自托管的生产环境中,只需安装 kumosearch,通过 Docker 或进程管理器(如我们的 DEB 和 RPM 包)将 kumosearch 进程作为守护进程启动,并根据需要配置高可用性

生产最佳实践

以下是一些建议,以帮助您在生产环境中获得 kumosearch 的最佳体验。

配置

  • 确保为数据集和流量模式选择了正确的系统配置
  • kumosearch 内置了一个高性能 HTTP 服务器。因此,kumosearch 可以直接暴露于面向公众的互联网流量,无需将其放置在另一个 Web 服务器(如 Nginx / Apache 或后端 API)后面。
  • 建议在生产环境中运行 高可用 集群。
    • 确保已将 API 客户端配置为使用集群中的所有节点。
  • 出于安全原因,配置最少量的交换空间。但如果交换空间被使用且开始影响性能,则表明需要升级 RAM 容量。
  • 如果将 kumosearch 与移动应用程序集成,建议将 kumosearch 主机名和 API 密钥存储在后端,并让应用程序在加载时动态获取远程配置,而不是在应用程序中硬编码这些配置。这样,若需要更改主机名/API 密钥,可以通过远程配置进行修改,而无需经历应用商店审核流程。

监控

  • 监控/health API 服务节点的正常运行时间。
  • 监视 RAM 使用情况,确保低于总 RAM 的 85%,确保操作系统有足够的 RAM 进行操作。
  • 监控/stats.json API 服务节点的请求率和延迟。
  • 监控 CPU 使用率,确保其平均低于 90%。如果峰值超出该范围,可能需要升级到更高的 CPU 容量。
  • 使用import API进行大批量数据 导入 时, 请确保已配置足够高的超时值以完成大型导入,因为 kumosearch 中的所有写入操作都是同步的。

相关性搜索

  • 设置搜索分析
    • 监控用户正在使用的搜索词,并根据需要设置同义词
    • 监控用户正在使用的搜索词,并根据需要整理结果
  • kumosearch 的默认相关性参数适用于大多数用例,但您也可以根据需要微调 搜索相关性 参数。
    • default_sorting_order 是可选的,但建议您使用它,特别是当文档中有字段表示受欢迎程度时。

安全

  • --api-port 服务器网络参数设置为 443在生产中使用 HTTPS
    • 确保防火墙仅允许此端口的入站公共流量通过。
    • 使用 --ssl-certificate--ssl-certificate-key 参数配置 SSL 证书和密钥。
  • 运行 高可用 集群时,请确保 --peering-address 参数是您 内部 专用网络上的 IP 地址。
  • 确保有定期过期和轮换 API 密钥的策略,使用expires_at参数。
  • 如果将多租户数据存储在单个索引表中,请确保正确配置范围搜索 API 密钥,以将登录用户的 ID 包含在嵌入式过滤器中。
    • 范围搜索 API 密钥需在后端堆栈中生成,并传递到前端,前端应在 API 调用中将其发送到 kumosearch。
    • 永远不要向用户公开父搜索 API 密钥,该密钥可以不受限制地访问所有记录。

Schema管理

  • 设置索引表别名 并通过别名从网站访问索引表和文档应用。
    • 当需要更新索引表的schema时,可以创建一个新的带时间戳的索引表,重新索引数据,然后交换别名指向新的索引表。
  • 尽可能优先使用预定义schema,因为自动检测 schema可能意外索引不必要的字段,导致不必要地占用 RAM(除非您在这些字段上明确设置 index: false)。但也可以使用正则表达式字段名称和自动检测 schema,特别是当字段名称是动态时。
  • 确保仅用于显示目的的字段(例如:图像 URL、链接等)未在 schema 中指定(或在使用自动检测 schema时)。这些字段可以设置为未索引字段以节省内存。将文档中的这些未索引字段添加到索引表中时,它们将存储在磁盘上,不会占用内存。然后,当该文档被点击时,未索引字段将从磁盘中提取,并填充到搜索 API 响应中,用于显示目的。

保持更新

要获取 kumosearch 新版本,请单击 版本发布 查看最新的发布版和说明。按照 升级说明 将系统更新到最新版本。

支持

如果您需要帮助或有任何疑问,可以通过以下几种方式寻求支持: