一、简介:为什么选择 ?
它是一个公开源代码的简约型检索系统,在某个平台上收获了超过五万颗星标,与同类产品相比,展现出几个突出的长处:
下面是使用 实现即时搜索的效果演示:
二、快速安装部署 部署方案
# 1. 拉取最新镜像
获取名为getmeili的meilisearch版本v1.13镜像,采用pull指令进行操作
# 2. 运行容器(开发环境)
启动一个容器,将端口7700映射到7700,命名为meilisearch
设置环境变量 MEILI_ENV 为开发模式
将虚拟目录/mydata/meiliData映射到宿主机的/meili_data目录下
-d getmeili/meilisearch:v1.13
# 3. 验证安装
使用命令行工具,访问本地服务器端口七千七百的路径,进行健康检查请求
安排妥当之后,输入网址 http://你的服务器IP:7700 就能进入操作面板:
三、核心概念与操作1. 索引管理(类似数据库表)
创建并导入示例数据:
# 下载官方示例数据集
使用专用工具访问指定网址,下载名为movies.json的文件,该网址为meilisearch官方文档中关于自托管版本入门指南的部分,包含了相关示例数据
# 导入数据到 movies 索引
使用专用工具向指定网址发起数据提交请求,目标地址为本地服务器七千七百端口上的电影索引文档接口,并强调以ID作为主键进行数据关联,各项操作均采用安全加密传输方式,整个过程通过命令行界面执行,具体指令如下,该指令包含多个必要参数,包括请求方法,目标资源路径,以及数据标识规则,结尾使用标准符号表示指令结束
设置内容类型为JSON格式
--data-binary @movies.json
导入成功后,即可在管理界面查看数据:
2. 索引设置优化
配置可排序和可筛选字段:
使用修正方法,针对网址 http://localhost:7700/indexes/movies/settings 进行操作,采用修补指令,发送请求,
-H 'Content-Type: application/json' \
-d '{
排序属性包括标题和发行日期
筛选条件包括类型和发行时间
}'
查询当前配置:
使用命令行工具向指定网址发起请求,请求类型为获取,目标地址为本地服务器七千七百端口上的电影索引设置信息,具体路径为索引目录下的设置文件
3. 文档操作(CRUD)
添加新文档:
发送一个请求到网址 http://localhost:7700/indexes/movies/documents,采用 POST 方法进行操作
-H 'Content-Type: application/json' \
-d '{
"id": 999,
"title": "变形金刚测试",
"overview": "这是一个测试电影描述...",
"genres": ["动作", "科幻"],
"release_date": 1640995200
}'
查询文档:
使用命令行工具,发起一个获取请求,目标地址是本地服务器七千七百端口,路径为索引目录下电影文档的九百九十九编号,请求方式为查询
四、高级搜索功能1. 基础搜索
使用专用工具向指定网址发起请求,该网址为本地服务器上的特定端口和资源路径,请求类型为发送数据,目标资源为电影搜索功能
-H 'Content-Type: application/json' \
-d '{ "q": "变形金刚" }'
2. 分页搜索
curl -X POST 'http://localhost:7700/indexes/movies/search' \
-H 'Content-Type: application/json' \
-d '{
"q": "动作",
"offset": 0,
"limit": 5
}'
3. 排序搜索
curl -X POST 'http://localhost:7700/indexes/movies/search' \
-H 'Content-Type: application/json' \
-d '{
"q": "科幻",
"sort": ["release_date:desc"]
}'
4. 条件筛选搜索
curl -X POST 'http://localhost:7700/indexes/movies/search' \
-H 'Content-Type: application/json' \
-d '{
"q": "电影",
类型等于动作或者类型等于冒险
}'
五、客户端集成示例 客户端
引入名为MeiliSearch的库,其来源于meilisearch这个包
新建一个MeiliSearch客户端实例,参数为配置对象,
服务地址为本地机,端口是七千七百整,具体链接形式如下:http://localhost:7700。
})
// 搜索示例
进行电影检索的函数,需要传入查询参数,并采用异步方式执行,其名称为searchMovies
查询结果由客户端索引电影后获取,依据查询内容执行,并附带相关配置参数
limit: 10,
offset: 0
})
return results.hits
}
客户端
由我创建了一个客户端实例
客户端对象赋值为一个实例,其构造函数参数为网址,网址为http://localhost:7700
# 添加文档
def add_movie(movie_data):
索引名称为电影,已通过客户端创建
返回索引添加文档集合包含电影数据
六、提升效率方法建议采用成批处理方式传输资料,以此降低交互频次科学分配处理单元:依据信息容量配置处理单元数内存管理措施:合理设定内存使用上限,防止内存耗尽数据保护机制:借助即时镜像技术周期性保存资料七、概述
作为 的轻量级替代方案,具有以下优势:
安装轻松,直接点击按钮,几分钟就能开始操作;操作方便,提供接口调用,不需要进行繁琐的设置;运行高效,查询速度极快,能够在一秒之内返回结果;消耗较低,与ES相比,对设备的要求显著减少;作用强大,能够实现排序、筛选、翻页等各种复杂操作
适用场景:
对于多数中小型软件,完全可以胜任检索任务,是替代它的理想方案。