
介绍了如何在SpringBoot中集成轻量级搜索引擎Meilisearch,包括安装方法、配置参数、常用API及高级搜索功能的实现。
前言
之前博客一直用的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
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次元 ,若本文涉及转载第三方内容,请您一同注明。
评论区
发表评论
这里还没有评论哦
快来发一条评论抢占前排吧
前言
安装部署
CURL
Docker
Windows
云服务
参数变量配置
启动时配置
环境变量
配置文件
SpringBoot SDK集成
常用API
索引
设置
文档
搜索
集成示例