超越Elasticsearch!号称下一代搜索引擎,性能炸裂!

向量数据库关系型数据库NoSQL数据库

picture.image

苏三的免费八股文网站:www.susan.net.cn

当我们需要实现全文搜索功能的时候,往往会使用到搜索引擎,比较常用的是Elasticsearch。但是Elasticsearch的硬件配置要求比较高,不同版本间的API兼容性也比较差。今天给大家分享一款轻量级搜索引擎Meilisearch,搜索速度非常快,能实现即时搜索,希望对大家有所帮助!

简介

Meilisearch是一款轻量级搜索引擎,它支持RESTful风格的搜索API,目前在Github上已有50k+star。其目标是成为适用于所有用户的搜索引擎解决方案,能让用户端的每一位用户获得快速且精准的搜索体验。

Meilisearch主要具有如下特性:

  • 搜索速度快:能在50毫秒内获得搜索结果;
  • 即时搜索:在你输入搜索关键词时能立马输出结果;
  • 智能纠错:即使你输入的关键词有误也能获得精准结果;
  • 全面的语言支持:对中文进行了专门的优化支持;
  • 高度可定制的搜索与索引:自定义搜索行为更加符合你的需求;
  • 支持RESTful API:可以用RESTful风格的搜索API进行调用;
  • 支持多种语言的SDK:涵盖Java、JavaScript、Golang、Python等。

下面是使用Meilisearch实现即时搜索的效果图,搜索速度还是非常快的!

picture.image

安装

使用Docker来部署Meilisearch是非常方便的,我们将采用此种方式!

  • 首先通过如下命令来下载Meilisearch的Docker镜像;
  
docker pull getmeili/meilisearch:v1.13  

  • 下载完成后使用如下命令来运行Meilisearch容器;
  
docker run -p 7700:7700 --name meilisearch \  
-e MEILI\_ENV='development' \  
-v /mydata/meiliData:/meili\_data \  
-d getmeili/meilisearch:v1.13  

picture.image

使用

接下来我们就来讲解下Meilisearch的使用,将使用RESTful API的形式。

索引操作

在Meilisearch中,索引是一系列文档的组合,相当于MySQL中的表的概念,这里我们先来讲解它的使用。

picture.image

  • 下载完成后我们上传到服务器的指定位置,然后通过curl工具将数据导入到Meilisearch中;

picture.image

  • 通过curl往Meilisearch中导入索引的命令如下;
  
curl \  
  -X POST '{{MEILISEARCH\_URL}}/indexes/movies/documents?primaryKey=id' \  
  -H 'Content-Type: application/json' \  
  --data-binary @movies.json  

  • 接下来我们在Mini Dashboard页面中就可以看到数据了,比如搜索下 Transformers

picture.image

  • 如果你想查看Meilisearch中的所有索引,可以使用如下CURL命令;
  
curl \  
  -X GET '{{MEILISEARCH\_URL}}/indexes'  

  • 还可以使用Postman来进行调用;

picture.image

  • 如果想要删除索引的话可以使用如下命令。
  
curl \  
  -X DELETE '{{MEILISEARCH\_URL}}/indexes/movies'  

设置操作

索引设置是一个包含很多选项的JSON对象,它可以用于定义Meilisearch的搜索行为,有点类似于MySQL中表结构的概念,这里我们来讲解下它的使用。

  • 我们可以通过如下命令查询索引设置;
  
curl \  
  -X GET '{{MEILISEARCH\_URL}}/indexes/movies/settings'  

  • 在Postman中使用后返回结果如下;

picture.image

  • 这里我们想要修改下设置,让 titlerelease\_date 字段变成可以排序的, genresrelease\_date 变成可以筛选的;
  
curl \  
  -X PATCH '{{MEILISEARCH\_URL}}/indexes/movies/settings' \  
  -H 'Content-Type: application/json' \  
  --data-binary '{  
    "sortableAttributes": [  
      "title",  
      "release\_date"  
    ],  
    "filterableAttributes": [  
      "genres",  
      "release\_date"  
    ]  
  }'  

  • 在Postman中使用后返回结果如下。

picture.image

文档操作

在Meilisearch中,文档是一个包含很多属性的对象,有点类似于MySQL中表记录的概念。

  • 我们可以通过如下命令来添加文档;
  
curl \  
  -X POST '{{MEILISEARCH\_URL}}/indexes/movies/documents' \  
  -H 'Content-Type: application/json' \  
  --data-binary '{  
    "id": 1,  
    "title": "Transformers Test",  
    "overview": "Young teenager, Sam Witwicky becomes involved in the ancient struggle between two extraterrestrial factions of transforming robots...",  
    "genres": [  
        "Adventure",  
        "Science Fiction",  
        "Action"  
    ],  
    "poster": "https://image.tmdb.org/t/p/w500/6eehp9I54syN3x753XMqjKz8M3F.jpg",  
    "release\_date": 1182902400  
}'  

  • 在Postman中使用后返回结果如下;

picture.image

  • 使用如下命令就可以查看文档了;
  
curl \  
  -X GET '{{MEILISEARCH\_URL}}/indexes/movies/documents/1'  

  • 在Postman中使用后返回结果如下;

picture.image

  • 修改文档可以使用如下命令;
  
curl \  
  -X PUT '{{MEILISEARCH\_URL}}/indexes/movies/documents' \  
  -H 'Content-Type: application/json' \  
  --data-binary '[  
    {  
      "id": 1,  
      "title": "Transformers Update"  
    }  
  ]'  

  • 删除文档可以使用如下命令。
  
curl \  
  -X DELETE '{{MEILISEARCH\_URL}}/indexes/movies/documents/1'  

数据搜索

接下来我们来讲解下如何使用Meilisearch搜索数据;

  • 先来一个简单的搜索;
  
curl \  
  -X POST '{{MEILISEARCH\_URL}}/indexes/movies/search' \  
  -H 'Content-Type: application/json' \  
  --data-binary '{ "q": "Transformers" }'  

  • 在Postman中使用后返回结果如下;

picture.image

  • 再来一个分页搜索;
  
curl \  
  -X POST '{{MEILISEARCH\_URL}}/indexes/movies/search' \  
  -H 'Content-Type: application/json' \  
  --data-binary '{ "q": "Transformers","offset": 0,"limit": 5 }'  

  • 在Postman中使用后返回结果如下;

picture.image

  • 再来一个搜索排序;
  
curl \  
  -X POST '{{MEILISEARCH\_URL}}/indexes/movies/search' \  
  -H 'Content-Type: application/json' \  
  --data-binary '{ "q": "Transformers","offset": 0,"limit": 5,"sort": ["release\_date:desc"]}'  

  • 在Postman中使用后返回结果如下;

picture.image

  • 再来一个条件搜索;
  
curl \  
  -X POST '{{MEILISEARCH\_URL}}/indexes/movies/search' \  
  -H 'Content-Type: application/json' \  
  --data-binary '{ "q": "Transformers","offset": 0,"limit": 5,"sort": ["release\_date:desc"],"filter":"genres = Action OR genres = Adventure"}'  

  • 在Postman中使用后返回结果如下;

picture.image

总结

今天带大家体验了一把Meilisearch的搜索功能,对比Elasticsearch,它需要的配置非常低,搜索速度也非常快,感兴趣的小伙伴可以尝试下它!

最后欢迎加入苏三的星球,你将获得:AI开发项目课程、苏三AI项目、商城微服务实战、秒杀系统实战、商城系统实战、秒杀系统实战、代码生成工具、系统设计、性能优化、技术选型、底层原理、Spring源码解读、工作经验分享、痛点问题、面试八股文等多个优质专栏。

还有1V1答疑、修改简历、职业规划、送书活动、技术交流。

扫描下方二维码,即可加入星球:

picture.image

目前星球已经更新了5200+篇优质内容,还在持续爆肝中.....

星球已经被官方推荐了3次,收到了小伙伴们的一致好评。戳我加入学习,已有1600+小伙伴加入学习。

picture.image

苏三的免费八股文网站:www.susan.net.cn

picture.image

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动云原生降本增效实践
本次分享主要介绍字节跳动如何利用云原生技术不断提升资源利用效率,降低基础设施成本;并重点分享字节跳动云原生团队在构建超大规模云原生系统过程中遇到的问题和相关解决方案,以及过程中回馈社区和客户的一系列开源项目和产品。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论