在 Ubuntu 24.04 上使用 FastAPI 部署和查询 Meilisearch

什么是 Meilisearch?

Meilisearch 是一个开源的、快速且相关的搜索引擎。它使用 Rust 编写,提供了以下特点:

  • 闪电般的速度: Meilisearch 可以在毫秒级内返回搜索结果,无论数据集大小如何。
  • 相关性优先: 通过智能排序算法,确保最相关的结果总是排在前面。
  • 易于使用: 提供直观的 API 和丰富的文档,降低了集成和使用的门槛。
  • 高度可定制: 允许根据具体需求调整搜索行为。

在 Ubuntu 24.04 上部署 Meilisearch

步骤 1:安装 Docker

确保您的系统上已经安装了 Docker。您可以通过以下命令安装 Docker:

sql 复制代码
bash
sudo apt update
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker

步骤 2:拉取并运行 Meilisearch Docker 镜像

拉取并运行 Meilisearch Docker 镜像:

bash 复制代码
bash
docker pull getmeili/meilisearch:latest
docker run -p 7700:7700 getmeili/meilisearch:latest
  • -p 7700:7700:将容器的 7700 端口映射到主机的 7700 端口。Meilisearch 默认使用 7700 端口。

步骤 3:访问 Meilisearch Web 界面

在浏览器中访问 http://localhost:7700,您将看到 Meilisearch 的 Web 界面。

步骤 4:启用 API 密钥(可选)

如果您需要启用 API 密钥,可以在运行 Docker 容器时添加环境变量 MEILI_MASTER_KEY:

ini 复制代码
bash
docker run -p 7700:7700 -e MEILI_MASTER_KEY='your_master_key' getmeili/meilisearch:latest

将 your_master_key 替换为您自己的 API 密钥。

使用 FastAPI 与 Meilisearch 交互

安装 FastAPI 和 Meilisearch FastAPI

创建一个新的虚拟环境并激活它:

bash 复制代码
python3 -m venv myenv
source myenv/bin/activate

然后安装必要的包:

bash 复制代码
pip install fastapi uvicorn meilisearch-fastapi

创建 FastAPI 应用

创建一个名为 main.py 的文件,并添加以下代码:

python 复制代码
from fastapi import FastAPI
from meilisearch_fastapi.routes import (
    document_routes,
    index_routes,
    meilisearch_routes,
    search_routes,
    settings_routes,
)

app = FastAPI()
api_router = FastAPI()

api_router.include_router(
    document_routes.router,
    prefix="/documents",
)

api_router.include_router(
    index_routes.router,
    prefix="/indexes",
)

api_router.include_router(
    meilisearch_routes.router,
    prefix="/meilisearch",
)

api_router.include_router(
    search_routes.router,
    prefix="/search",
)

api_router.include_router(
    settings_routes.router,
    prefix="/settings",
)

app.include_router(api_router)

# 配置环境变量
import os
os.environ["MEILI_HTTP_ADDR"] = "http://localhost:7700"
os.environ["MEILI_MASTER_KEY"] = "your_master_key"  # 如果启用了 API 密钥

运行 FastAPI 应用

使用以下命令运行 FastAPI 应用:

bash 复制代码
uvicorn main:app --host 0.0.0.0 --port 8000 --reload

测试 FastAPI 接口

现在您可以通过访问 http://localhost:8000/docs 来查看 FastAPI 的 API 文档,并使用这些接口与 Meilisearch 进行交互。

使用 FastAPI 进行搜索

以下是一个使用 FastAPI 进行搜索的例子:

python 复制代码
from fastapi import FastAPI
from pydantic import BaseModel
import requests

app = FastAPI()

class SearchQuery(BaseModel):
    q: str

@app.post("/search")
def search(query: SearchQuery):
    url = "http://localhost:7700/indexes/movies/search"
    params = {"q": query.q}
    response = requests.post(url, json=params)
    return response.json()

# 测试搜索接口
# curl -X POST -H "Content-Type: application/json" -d '{"q": "spiderman"}' http://localhost:8000/search

这个例子演示了如何使用 FastAPI 创建一个简单的搜索接口,并将搜索请求转发给 Meilisearch。

相关推荐
夏幻灵6 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
苍何7 小时前
开源微信流 Windows,微信聊天记录,可以直接给 Codex 和 Obsidan 了
后端
深蓝AI7 小时前
GitHub的Push一年涨4.9倍:AI Agent为什么逼它重做Git存储?
人工智能·github
代码什么用8 小时前
Spring基础使用
java·后端·spring
明月_清风8 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
蜗牛互联网9 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
zhengqweasd11 小时前
机房托管服务器怎么选硬盘,机械盘和 SSD 托管场景差异
运维·服务器·github
用户693717500138411 小时前
2026,程序员的时代拐点到了
android·前端·后端
惜鸟11 小时前
从源码看 pi 的上下文管理:原始数据永久保留,模型视角按需裁剪
后端
量化分析码农11 小时前
【Python量化策略评估体系 #05】极端行情扛得住吗?2008/2015/2020 三场景压力测试
后端