部署

官方对于部署的介绍非常详细,各种方案都提供了,我这里选择使用 docker 来进行部署。

添加服务启动脚本start.sh/tmp/scraper目录

      docker run -itd --name meilisearch -p 7700:7700 --restart=always \
  -e MEILI_ENV="production" -e MEILI_NO_ANALYTICS=true \
  -e MEILI_MASTER_KEY="自定义一个不少于16字节的秘钥" \
  -v $(pwd)/meili_data:/meili_data \
  getmeili/meilisearch
    

自建的时候,需要将环境变量声明为生产,并且必须指定 master-key,否则将会提示无法使用。

然后运行该脚本,服务启动,通过监听日志,查看服务状态是否正常。

也可以请求服务的健康接口进行验证:

      $ curl -s http://localhost:7700/health | jq
{
  "status": "available"
}
    

注意,生产模式下,只有这一个接口是不需要秘钥认证即可访问的,其他接口访问的时候都需要带上秘钥。

创建搜索的key

上边有了一个 master-key 用于爬虫抓取使用,还需要创建一个只有搜索权限的 key,可通过如下命令进行创建search.sh/tmp/scraper目录

      curl \
  -X POST 'http://localhost:7700/keys' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer 你自定义的秘钥' \
  --data-binary '{
    "description": "xiaoying.org.cn key",
    "actions": ["search"],
    "indexes": ["blog"],  // 第四步建立索引抓取配置中的index_uid的值需与该值保持一致
    "expiresAt": "2099-01-01T00:00:00Z"
  }'
    

创建完成之后,能看到返回内容中有一个 key 的字段,就是这个只有搜索权限的 key 了。

添加域名

这个根据自己的实际情况,我这里给 Nginx 添加配置文件,配置域名:

      server {
    listen 443 ssl;
    server_name xiaoying.org.cn;

    ssl_certificate /etc/ssl/certs/xiaoying.org.cn_bundle.crt;
    ssl_certificate_key /etc/ssl/certs/xiaoying.org.cn.key;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location ^~ /indexes/ {
        proxy_set_header Host $host;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_pass http://127.0.0.1:7700;
    }

}
    

这样就完成了与meilisearch一样的服务端配置信息:

建立索引

官方提供了爬虫工具,我们只需要进行简单的配置,即可将数据索引建立起来。

关于这段配置流程,官方文档同样给了详细的说明:抓取你的内容 (opens new window)

官方提供了一个 Vuepress 的抓取配置config.json如下:

      {
  "index_uid": "blog",
  "sitemap_urls": ["https://xiaoying.org.cn/sitemap.xml"],
  "start_urls": ["https://xiaoying.org.cn"],
  "selectors": {
    "lvl0": {
      "selector": ".sidebar-heading.open",
      "global": true,
      "default_value": "Documentation"
    },
    "lvl1": ".theme-default-content h1",
    "lvl2": ".theme-default-content h2",
    "lvl3": ".theme-default-content h3",
    "lvl4": ".theme-default-content h4",
    "lvl5": ".theme-default-content h5",
    "text": ".theme-default-content p, .theme-default-content li, .theme-default-content td"
  },
  "strip_chars": " .,;:#",
  "scrap_start_urls": true,
  "custom_settings": {
    "synonyms": {
      "relevancy": ["relevant", "relevance"],
      "relevant": ["relevancy", "relevance"],
      "relevance": ["relevancy", "relevant"]
    }
  }
}
    

注意如上的配置内容很重要,如果你的博客不是常规默认的,那么需要根据自己的情况对元素进行辨别,详细配置项说明,参考更多可选字段 (opens new window)

本项目用的是 vdoing 主题,可以看到一些元素名字与内容不一样,需要一些调整。所以我用的配置如下:

加载中...

声明

作者: liyao

版权:本博客所有文章除特别声明外,均采用CCBY-NC-SA4.O许可协议。转载请注明!

最后更新于 2026-02-18 18:15 history