Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

彩虹网

一、简介:为什么选择 Meilisearch?

Meilisearch 是一款开源的轻量级搜索引擎,目前在 GitHub 上已获得 50k+ Star。相比于 Elasticsearch,它具有以下显著优势:

下面是使用 Meilisearch 实现即时搜索的效果演示:

Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

二、快速安装部署Docker 部署方案

# 1. 拉取最新镜像
docker pull getmeili/meilisearch:v1.13
# 2. 运行容器(开发环境)
docker run -p 7700:7700 --name meilisearch \
  -e MEILI_ENV='development' \
  -v /mydata/meiliData:/meili_data \
  -d getmeili/meilisearch:v1.13
# 3. 验证安装
curl http://localhost:7700/health

部署成功后,访问 http://你的服务器IP:7700 即可打开管理界面:

Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

三、核心概念与操作1. 索引管理(类似数据库表)

创建并导入示例数据:

# 下载官方示例数据集
wget https://www.meilisearch.com/docs/learn/self_hosted/getting_started_with_self_hosted_meilisearch/movies.json
# 导入数据到 movies 索引
curl -X POST 'http://localhost:7700/indexes/movies/documents?primaryKey=id' \
  -H 'Content-Type: application/json' \
  --data-binary @movies.json

Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

导入成功后,即可在管理界面查看数据:

Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

2. 索引设置优化

配置可排序和可筛选字段:

curl -X PATCH 'http://localhost:7700/indexes/movies/settings' \
  -H 'Content-Type: application/json' \
  -d '{
    "sortableAttributes": ["title", "release_date"],
    "filterableAttributes": ["genres", "release_date"]
  }'

查询当前配置:

curl -X GET 'http://localhost:7700/indexes/movies/settings'

Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

3. 文档操作(CRUD)

添加新文档:

curl -X POST 'http://localhost:7700/indexes/movies/documents' \
  -H 'Content-Type: application/json' \
  -d '{
    "id": 999,
    "title": "变形金刚测试",
    "overview": "这是一个测试电影描述...",
    "genres": ["动作", "科幻"],
    "release_date": 1640995200
  }'

Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

查询文档:

curl -X GET 'http://localhost:7700/indexes/movies/documents/999'

Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

四、高级搜索功能1. 基础搜索

curl -X POST 'http://localhost:7700/indexes/movies/search' \
  -H 'Content-Type: application/json' \
  -d '{ "q": "变形金刚" }'

Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

2. 分页搜索

curl -X POST 'http://localhost:7700/indexes/movies/search' \
  -H 'Content-Type: application/json' \
  -d '{
    "q": "动作",
    "offset": 0,
    "limit": 5
  }'

Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

3. 排序搜索

curl -X POST 'http://localhost:7700/indexes/movies/search' \
  -H 'Content-Type: application/json' \
  -d '{
    "q": "科幻",
    "sort": ["release_date:desc"]
  }'

Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

4. 条件筛选搜索

curl -X POST 'http://localhost:7700/indexes/movies/search' \
  -H 'Content-Type: application/json' \
  -d '{
    "q": "电影",
    "filter": "genres = Action OR genres = Adventure"
  }'

Meilisearch 终极指南:轻量级搜索引擎如何替代 Elasticsearch

五、客户端集成示例JavaScript 客户端

import { MeiliSearch } from 'meilisearch'
const client = new MeiliSearch({
  host: 'http://localhost:7700'
})
// 搜索示例
const searchMovies = async (query) => {
  const results = await client.index('movies').search(query, {
    limit: 10,
    offset: 0
  })
  return results.hits
}

Python 客户端

from meilisearch import Client
client = Client('http://localhost:7700')
# 添加文档
def add_movie(movie_data):
    index = client.index('movies')
    return index.add_documents([movie_data])

六、性能优化建议批量操作:使用批量接口导入数据,减少请求次数合理分片:根据数据量调整分片数量内存优化:适当调整内存限制,避免OOM定期备份:使用快照功能定期备份数据七、总结

Meilisearch 作为 Elasticsearch 的轻量级替代方案,具有以下优势:

部署简单:Docker 一键部署,5分钟即可上手使用便捷:RESTful API,无需复杂配置性能优异:搜索响应时间在50毫秒以内资源占用少:相比ES,硬件要求大幅降低功能全面:支持排序、过滤、分页等高级功能

适用场景:

推荐使用:对于大多数中小型应用,Meilisearch 完全能够满足搜索需求,是替代 Elasticsearch 的优秀选择。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。