准备工作
- MeiliSearch服务器(部署方法见上一篇:MeiliSearch教程一:在Docker环境下的部署)
记录以下信息: 服务器地址,服务器端口(默认为:7700),MEILI_MASTER_KEY(上篇教程中你设置的密码)
- 从官网下载示例数据,放到位置`d:\tmp\movies.json`。下载链接:movies.json (https://www.meilisearch.com/movies.json)
上传数据演示1,用于测试
在powershell中使用以下命令上传movies.json数据,看看服务是否正常。
Invoke-RestMethod `
-Method 'Post' `
-Uri 'http://{服务器地址}:7700/indexes/movies/documents?primaryKey=id' `
-Headers @{
'Content-Type' = 'application/json'
'Authorization' = 'Bearer {MEILI_MASTER_KEY}'
} `
-InFile 'd:\tmp\movies.json' `
-ContentType 'application/json'
注意将以上{服务器地址},{MEILI_MASTER_KEY}替换成你自己的数据。`d:\tmp\movies.json`也可替换为你自己的文件路径。url 中,`movies`也可替换你自己想要的名字。
执行结果如下:
taskUid : 2
indexUid : movies
status : enqueued
type : documentAdditionOrUpdate
enqueuedAt : 2024-03-14T01:52:36.219037796Z
完成之后,登录到管理界面查看:http://{服务器地址}:24900
查看到索引中有数据,在右边能查询。表示数据上传成功。
上传数据演示2,RUST程序代码实现:
- 准备工作,安装rust,vscode (略),执行以下命令:
cargo new meilisearch-rust-demo1 --bin
cd meilisearch-rust-demo1
code .
2. 打开vscode后,修改 `Cargo.toml`为以下内容:
[package]
name = "rust-meilisearch-demo01"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
meilisearch-sdk = "0.25.0"
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1.0", features = ["full"] }
serde_json = "1.0"
- 修改`main.rs'内容为以下内容:
// 创建 MeiliSearch 客户端,并上传文档数据
use meilisearch_sdk::client::*;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::{fs::File, io::Read};
use tokio;
// 静态配置信息
static MOVIES_JSON_PATH: &str = r"d:\tmp\movies.json";
static MEILI_URL: &str = "http://{服务器地址}:7700";
static MEILI_MASTER_KEY: &str = "{MEILI_MASTER_KEY}";
// 用于反序列化的结构体
#[derive(Serialize, Deserialize, Debug)]
struct Movie {
id: u32,
title: String,
overview: String,
genres: Vec<String>,
poster: String,
release_date: i64,
}
#[tokio::main]
async fn main() {
// 读取 JSON 文件
let mut file = File::open(MOVIES_JSON_PATH).expect("File not found");
let mut contents = String::new();
file.read_to_string(&mut contents)
.expect("Failed to read file");
// 解析 JSON 文件为 Movie 结构体的 Vec
let movies: Vec<Movie> = serde_json::from_str(&contents).expect("Error parsing JSON");
// 初始化 MeiliSearch client
let client = Client::new(MEILI_URL, Some(MEILI_MASTER_KEY));
let movies_index = client.index("movies");
// 创建索引并上传文档
let task = movies_index
.add_documents(&movies, Some("id"))
.await
.expect("Upload failed");
movies_index
.wait_for_task(task,None,None)
.await
.expect("Failed to add documents");
}
- 新建终端窗口,执行:
cargo run
- 如果程序没有报错,即表示上传成功。
- 登录到管理界面查看:http://{服务器地址}:24900,应该有上述一样的数据集索引。右边可查询。
本次教程完,后续将使用程序完成查询功能。