
? Simple, distribuido, liviano
Implementación de motor de búsqueda RESTFOR escrita en GO?
SearchGoose es un motor de búsqueda RESTful distribuido simple que admite datos de búsqueda e indexación. Para fines de estudio, comprender principalmente los detalles de implementación de cómo se construye Elasticearch, centrándose en agrupar el sistema distribuido y admitir la búsqueda de texto completo usando Bleve. SearchGoose tiene como objetivo proporcionar un manejo de datos rápido y flexible resolviendo los problemas de la base de datos relacional existente, lo que está molestando las tareas para buscar y dividir los datos de las cadenas. Para resolver este problema, este proyecto utiliza una estructura de datos llamada índice invertido que admite búsquedas rápidas de texto completo. También implementa el algoritmo similar a la balsa y el sistema de votación basado en quórum para el descubrimiento y el servicio electoral en modo de agrupación.


$ 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=8082Para probar cualquiera de las consultas a continuación, puede usar los Quries de ejemplo anteriores
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"
}
}
}
La imagen de arriba describe la aplicación de prueba SearchGoose usando Guttenberg-Search.
La imagen de arriba describe la interfaz simplificada para administrar y monitorear los grupos SearchGoose por Elasticsearch-HQ.