
? Einfach, verteilt, leicht
RESTFOFFFOR -Suchmaschinenimplementierung geschrieben in Go?
SearchGoose ist eine einfache verteilte , rastful Suchmaschine, die Such- und Indizierungsdaten unterstützt. Für Studienzwecke, das hauptsächlich die Implementierungsdetails zur Erstellung von Elasticarcharchy verständlich ist und sich auf das Clustering verteiltes System und die Unterstützung der Volltext-Suche mit Bleve konzentriert. SearchGoose zielt darauf ab, eine schnelle und flexible Datenhandhabung bereitzustellen, indem die Probleme der vorhandenen relationalen Datenbank gelöst werden, die Aufgaben zum Durchsuchen und Teilen von Stringdaten stören. Um dieses Problem zu lösen, verwendet dieses Projekt eine Datenstruktur, die als invertierter Index bezeichnet wird und die schnelle Volltext-Suchvorgänge unterstützt. Es implementiert auch den Raft-ähnlichen Algorithmus und ein quorumbasiertes Wahlsystem für den Entdeckungs- und Wahldienst im Clustering-Modus.


$ 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=8082Um eines der folgenden Abfragen auszuprobieren, können Sie die oben genannten Beispiele verwenden
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"
}
}
}
Das obige Bild beschreibt die SearchGoose-Testanwendung mit Guttenberg-Search.
Das obige Bild beschreibt eine vereinfachte Schnittstelle für die Verwaltung und Überwachung von SearchGoose-Clustern durch Elasticsearch-HQ.