
? Sederhana, terdistribusi, ringan
Implementasi mesin pencari yang tenang ditulis di Go?
SearchGoose adalah mesin pencari RESTful terdistribusi sederhana yang mendukung data pencarian dan pengindeksan. Untuk tujuan studi, sebagian besar memahami detail implementasi tentang bagaimana elastisearch dibangun, dengan fokus pada pengelompokan sistem terdistribusi dan mendukung pencarian teks lengkap menggunakan BLEVE. SearchGoose bertujuan untuk menyediakan penanganan data yang cepat dan fleksibel dengan memecahkan masalah database relasional yang ada, yang merupakan tugas yang mengganggu untuk mencari dan membagi data string. Untuk mengatasi masalah ini, proyek ini menggunakan struktur data yang disebut indeks terbalik yang mendukung pencarian teks lengkap cepat. Ini juga mengimplementasikan algoritma seperti rakit dan sistem pemungutan suara berbasis kuorum untuk penemuan dan layanan pemilihan dalam mode pengelompokan.


$ 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=8082Untuk mencoba salah satu kueri di bawah ini, Anda dapat menggunakan contoh di atas Quuries
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"
}
}
}
Gambar di atas menjelaskan aplikasi uji SearchGoose menggunakan Guttenberg-Search.
Gambar di atas menjelaskan antarmuka yang disederhanakan untuk mengelola dan memantau cluster SearchGoose oleh Elasticsearch-HQ.