Z次元
文章 笔记 日志
专题
专栏分类
文章归档
友链
友情链接
朋友圈
留言
头像
系列文章
SpringBoot集成轻量级搜索引擎——Meilisearch
系列文章
知识积累
更新于:2025/12/28
|
发布于:2025/8/7
文章摘要
......

前言

之前博客一直用的RediSearch作为搜索引擎,因为博客本来就使用了Redis作为缓存,所以使用RediSearch也就是多加个Redis的模块,基本不会多占用内存。不过RediSearch对中文支持不太友好,所以使用体验实在是一言难尽。

至于ElasticSearch,启用后直接占用了1G的内存,用来做博客的搜索引擎,属实大材小用。

所以最近在寻找RediSearch替代品的时候,也是发现了Meilisearch这款搜索引擎。

安装部署

Meilisearch官网提供了多种安装方式

CURL

博主使用的是curl安装:

# 安装 Meilisearch
curl -L https://install.meilisearch.com | sh


# 启动 Meilisearch
./meilisearch

Docker

或者也可以选择docker直接安装:

# 拉取docker镜像
docker pull getmeili/meilisearch:v1.16


# 通过配置密钥启动
# PowerShell运行时,需要将${pwd} 替换为 $(pwd)
docker run -it --rm \
    -p 7700:7700 \
    -e MEILI_ENV='development' \
    -v $(pwd)/meili_data:/meili_data \
    getmeili/meilisearch:v1.16

Windows

windows启动直接从官方开源仓库下载最新软件包即可

默认启动端口为7700:

云服务

如果你不想自己部署的话,Meilisearch官网也提供了Meilisearch Cloud服务,直接登录就能使用。

参数变量配置

除了默认的启动方式外,Meilisearch还支持配置参数变量。

启动时配置

./meilisearch --db-path ./meilifiles --http-addr 'localhost:7700'

环境变量

export MEILI_DB_PATH=./meilifiles
export MEILI_HTTP_ADDR=localhost:7700
./meilisearch

配置文件

如果你的参数较多的话,还是推荐通过配置文件启动

./meilisearch --config-file-path="./config.toml"

配置文件可以通过以下命令下载:

curl https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml > config.toml

这里额外提下配置文件的几个参数

## 环境
env = "production" 
## 访问地址
http_addr = "127.0.0.1:7700"
## 访问密码
master_key = "ahzoo"

需要注意的是:

  1. 只有开发环境才可以通过网址访问meilisearch;

  2. 如果需要远程访问,要将访问地址的设置为0.0.0.0

  3. 生产环境记得设置访问密码

SpringBoot SDK集成

由于Meilisearch还没有官方的starter,所以只能通过Java SDK集成。

引入依赖:

        <dependency>
            <groupId>com.meilisearch.sdk</groupId>
            <artifactId>meilisearch-java</artifactId>
            <version>0.15.0</version>
        </dependency>

配置文件:

meilisearch:
  host: http://127.0.0.1:7700
  # 默认为空
  api-key: { 密钥 }

常用API

Meiliserarch官网提供了多种编程语言的使用示例

索引


    @Autowired
    protected Client meiliSearchClient;

    public void createIndex(String indexName) {
        meiliSearchClient.createIndex(indexName);
    }


    public void deleteIndex(String indexName) {
        meiliSearchClient.deleteIndex(indexName);
    }

    public void getIndexTest() {
        String indexName = "ahzoo";
        Index index =  meiliSearchClient.getIndex(indexName);
    }

设置

                    // 更新索引配置
                    Settings settings = new Settings();
                    // 按重要性排序的用于搜索匹配查询词的字段
                    settings.setSearchableAttributes(new String[]{"title", "content"});
                    // 返回文档中显示的字段
                    settings.setDisplayedAttributes(new String[]{"id", "title", "content", "createdDate"});
                    // 	对搜索结果进行排序时使用的属性
                    settings.setSortableAttributes(new String[]{"createdDate"});
                    updateIndexSettings(POST_INDEX, settings);

文档

添加或更新文档:

    private void saveOrUpdateList(List<SearchArticleDTO> articleDTOList) {
        String indexName = "ahzoo";
        String primaryKey = "id";
        Index index = meiliSearchClient.index(indexName);
        index.updateDocuments(JSON.toJSONString(articleDTOList, primaryKey);
    }

删除文档

        String indexName = "ahzoo";
        String documentId = "999";
        Index index = meiliSearchClient.index(indexName);
        index.deleteDocument(documentId);

搜索

        String indexName = "ahzoo";
        String query = "ahzoo.cn";
        Index index = meiliSearchClient.index(indexName);
        String res = index.search(query);

高级搜索:

Meilisearch支持自定义搜索配置,比如可以设置高亮和排序等:

        String indexName = "ahzoo";
        SearchRequest searchRequest = SearchRequest.builder()
                .q(keyword)
                .attributesToHighlight(new String[]{"content"})
                .sort(new String[]{"createdDate:desc"})
                .build();
        Index index = meiliSearchClient.index(indexName);
        index.search(searchRequest);

集成示例

集成后效果如下:

版权声明
本文依据 CC-BY-NC-SA 4.0 许可协议授权,请您在转载时注明文章来源为 Z次元 ,若本文涉及转载第三方内容,请您一同注明。
更多专栏文章推荐
知识积累
人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。
JDK新版特性(18-21)
2025/2/7
JDK新版特性(12-17)
2025/1/30
JDK8升级JDK21报错解决方案记录
2025/12/28
MySQL模糊查询的多种方式
2025/12/4
评论区

删除确认

评论删除后无法恢复,请确认是否继续?
发表评论

这里还没有评论哦

快来发一条评论抢占前排吧

目录
1
前言
2
安装部署
CURL
Docker
Windows
云服务
参数变量配置
启动时配置
环境变量
配置文件
3
SpringBoot SDK集成
常用API
索引
设置
文档
搜索
集成示例
目录
1
前言
2
安装部署
CURL
Docker
Windows
云服务
参数变量配置
启动时配置
环境变量
配置文件
3
SpringBoot SDK集成
常用API
索引
设置
文档
搜索
集成示例
博客
文章 笔记 日志
专题
专栏分类 文章归档
友链
友情链接 朋友圈
交流
留言 关于我
主页
菜单
置顶
主题
我的
十玖八柒
每天进步多一点
欢迎到访φ(゜▽゜*)♪
最新评论
柒: @Honesty
因为这个系列主要是总结和代码相关的特性,不过这个特性感觉确实可以写一下
Honesty:
哎?Jdk25 对象头压缩这个很重要的特性没记呢
个人占星:
DeepSeek没有想象中的好用
个人占星:
想给自己的网站弄个统计功能,但不会弄,头疼
我的
关于我
个人主页
站点地图
RSS订阅
导航
十年之约
虫洞穿梭
开源博客
前端开源仓库
后端开源仓库
©2020 - 2026 By 十玖八柒 版权所有
豫ICP备20021466号