這一次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
網絡安全專家