这一次ElasticSearch可能感受到了来自东方的压力 GoFound
VSole2022-08-03 16:20:43
什么是 GoFound?
GoFound 一个golang实现的全文检索引擎,支持持久化和单机亿级数据毫秒级查找,接口可以通过http调用。
为什么要用GoFound?
一个小巧精悍的全文检索引擎,支持持久化和单机亿级数据毫秒级查找。
ElasticSearch缺点就是配置繁琐、基于JVM对内存消耗比较大。
gofound是原生编译,会减少系统资源的消耗。而且对外无任何依赖。
特性与优势
- 二分法查找
- 快速排序法
- 倒排索引
- 正排索引
- 文件分片
- golang-jieba分词
- leveldb
编译与启动
git clone https://github.com/newpanjing/gofound.git go get && go build #作者是用的1.18版本,已经用到了1.17的新特性embed 和 fs,所以GO至少版本要大于1.17 ./gofound --addr=:8080 --data=./data
1.启动服务端后就可以访问到后台
http://127.0.0.1:8080/admin #笔者发现,明显后台没有做完,但是接口基本可用,尽量别用后台就行。
2.使用接口进行新增和查询操作
#新增数据接口 curl -H "Content-Type:application/json" -X POST --data '{"id":1,"text":"深圳北站","document":{"title":"阿森松岛所445","number":223}}' 127.0.0.1:8080/api/index?database=testdb1 #响应结果 { "state": true, "message": "success" } #我定义了一个库名:testdb1 #查询一下 POST :127.0.0.1:8080/api/query?database=testdb1 { "query": "北站", "page": 1, "limit": 10, "order": "desc", "highlight": {} } #响应结果 { "state": true, "message": "success", "data": { "total": 3, "pageCount": 1, "page": 1, "limit": 10, "documents": [ { "id": 1, "text": "深圳北站", "document": { "number": 223, "title": "阿森松岛所445" }, "originalText": "深圳北站", "score": 1, "keys": [ "深圳", "北站" ] }, { "text": "深圳北站", "document": { "number": 223, "title": "阿森松岛所445" }, "originalText": "深圳北站", "score": 1, "keys": [ "深圳", "北站" ] } ], "words": [ "北站" ] } }
其他操作,包括完整的CRUD还有分词接口都在下面的文档中可以找到,这里就不多作赘述,简单的带大家用用即可。还有分词操作、CRUD所有操作,都可以看文档来对着写即可,记得尽量不要用他的可视化后台,会出现各种未知问题。

VSole
网络安全专家