轻量级的搜索引擎MeiliSearch

一、MeiliSearch简介

谈到查找引擎,可能咱们最早想到的是Elasicsearch。Elasticsearch是一个分布式、高扩展、高实时的查找与数据剖析引擎,能够在大量的数据中查找、剖析和探究需求的数据。在后端架构中,Elasticsearch一般需求与Logstash的数据搜集和日志解析引擎Kibana一同配合来搭建可视化渠道,而这三个产品也被设计成一个集成解决方案,称为ELK。

尽管Elasticsearch满足灵活强大、扩展性和实时性也较好。但是对于中小型项目来说,Elasticsearch仍是显得有些庞大,对硬件设备的要求也较高。那么,在要求不是很高的情况下,咱们能够考虑另一种查找引擎方案:MeiliSearch。

MeiliSearch是一个功能强大、快速、开源、易于运用和布置的查找引擎,而且MeiliSearch的查找和索引都是高度可定制的,供给开箱即用的功能属性,如错字忍受、过滤器和近义词。而最重要的一点是,它【支撑中文查找】,而不需求增加额定的装备。

MeiliSearch运用RUST言语进行编写 ,RUST语音最重要的特色便是并发安全,一起它仍是支撑函数式和指令式以及泛型等编程范式的多范式言语。而且在性能方面,MeiliSearch也是媲美C++语音的存在,所以运用RUST语音编写的MeiliSearch查找引擎,能够说在性能上也是非常的优秀。

二、根本运用

2.1 装置软件

MeiliSearch的装置办法有很多,支撑Homebrew、Docker 容器、二进制、以及RUST 环境下克隆项目源码办法进行装置。

轻量级的搜索引擎MeiliSearch

因为我运用的是MacOS,所以直接运用的是Homebrew办法,装置的指令如下:

# Update brew and install MeiliSearch
brew update && brew install meilisearch
# Launch MeiliSearch
meilisearch

发动成功后,体系会允许一个 MeiLiSearch 服务 (opens new window)。

轻量级的搜索引擎MeiliSearch

一起,MeiLiSearch服务本身供给可视化的 Web 查找页面,咱们能够拜访一下这个页面来验证服务是否运行成功。

轻量级的搜索引擎MeiliSearch

因为还没有创立索引和文档,所以上面的页面是没有数据的。MeiliSearch的数据布置和ES十分相似,但又要简略许多。一般需求经历【增加索引】和【增加文档】两步。

2.2 CURL办法布置

2.2.1 增加索引

首要,咱们运用简略的 CURL 创立索引。

curl \
  -X POST 'http://localhost:7700/indexes' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "uid": "movies",
    "primaryKey": "id"
 }'

履行成功后,如下图所示。

轻量级的搜索引擎MeiliSearch

2.2.2 增加文档

索引是存储文档的地方,文档代表的是真正的数据,咱们同样运用CURL批量创立文档。

# 增加文档到 movies 索引
curl \
  -X POST 'http://localhost:7700/indexes/movies/documents' \
  -H 'Content-Type: application/json' \
  --data-binary @movies.json
# movies.json为测试数据,详细数据可到meilisearch官网下载

触及的movies.json为测试数据,下载链接:movies.json。为了方便上传数据,咱们运用PostMan等东西来增加数据,上传成功体系会回来一个Json的结果,如下图。

轻量级的搜索引擎MeiliSearch

需求说明的是,Body部分因为运用的是二进制办法,所以需求挑选binary按钮。当咱们再次刷新浏览器,就会发现数据现已查找出来。

轻量级的搜索引擎MeiliSearch

2.3 Python办法布置

运用Python办法布置需求先装置Elasicsearch插件,装置的指令如下。

pip3 install meilisearch

然后,再调用add_documents办法新增文档。

import meilisearch
import json
client = meilisearch.Client('http://127.0.0.1:7700')
json_file = open('movies.json')
movies = json.load(json_file)
client.index('movies').add_documents(movies)

接着,咱们能够运用search办法查找数据,比方:

client.index('movies').search('botman')

当然,除了上面介绍的两种布置办法,MeiliSearch 还供给PHP、JAVA、Python 等言语的 SDK,直接直接集成到项目,开箱即用。

三、总结

总的来说,对于数据量不是很大的中小型企业来说(几百万到几千万的数据),都能够运用 MeiliSearch 查找引擎。一起,它的运用场景根本能够掩盖当前主流的渠道和技能,如管理后台查找、小程序查找等场景中。是一款真正轻量级装置布置、查找速度快到极致,当之无愧的轻量级且美丽查找引擎。

官网文档链接:docs.meilisearch.com/

本文正在参加「金石计划 . 瓜分6万现金大奖」