searchgoose
1.0.0

?简单,分布,轻巧
静止的搜索引擎实现在GO中?
SearchGoose是简单的分布式RESTFULE搜索引擎支持搜索和索引数据。出于研究目的,主要了解如何构建Elasticearch的实现细节,重点是群集分布式系统,并使用BLEVE支持全文搜索。 SearchGoose的目的是通过解决现有关系数据库的问题来提供快速,灵活的数据处理,这困扰着搜索和分配字符串数据的任务。为了解决此问题,该项目使用一个数据结构,称为倒置索引,该索引支持快速的全文搜索。它还在聚类模式下实现了类似Raft的算法和基于法定的投票系统,以进行发现和选举服务。


$ docker build . --rm --tag searchgoose:latest$ make build$ go run main.go -transport.port=8180 -http.port=8080$ go run main.go -node.name=sg-node-01 -transport.port=8180 -http.port=8080
$ go run main.go -node.name=sg-node-02 -seed_hosts=127.0.0.1:8180 -transport.port=8179 -http.port=8081
$ go run main.go -node.name=sg-node-03 -seed_hosts=127.0.0.1:8180 -transport.port=8181 -http.port=8082要尝试以下任何查询,您可以使用上述示例Quries
PUT /test15
content-type: application/json
{
"settings": {
"number_of_shards": 3
},
"mappings": {
"properties": {
"field1": {
"type": "text"
}
}
}
}
PUT /test15/_doc/4
content-type: application/json
{
"field1": "test",
"field2": "test2"
}
POST /test15/_search
content-type: application/json
{
"size": 100,
"query": {
"match": {
"field1": "field test"
}
}
}
上图描述了使用Guttenberg-search进行SearchGoose测试应用程序。
上图描述了通过Elasticsearch-HQ管理和监视SearchGoose群集的简化界面。