
? Простые, распределенные, легкие
Реализация поисковой системы Restful Записано в Go?
SearchGoose - это простой распределенная поисковая система, поддерживающая поиск и индексацию данных. Для учебных целей, в основном понимание деталей реализации того, как создается Elasticearch, сосредоточенная на кластеризации распределенной системы и поддерживающей полнотекстовой поиск с использованием BLEVE. SearchGoose стремится обеспечить быструю и гибкую обработку данных путем решения проблем существующей реляционной базы данных, которая беспокоит задачи для поиска и разделения строковых данных. Чтобы решить эту проблему, в этом проекте используется структура данных, называемую инвертированным индексом , который поддерживает быстрые полнотекстовые поиски. Он также реализует алгоритм, подобный плоту, и систему голосования на основе кворума для службы обнаружения и избирательных выборов в режиме кластеризации.


$ 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Чтобы попробовать любые из приведенных ниже вопросов, вы можете использовать пример примера оцверий
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"
}
}
}
Приведенное выше изображение описывает тестовое приложение SearchGo с использованием Guttenberg-Search.
Приведенное выше изображение описывает упрощенный интерфейс для управления и мониторинга кластеров SearchGo с помощью ElasticSearch-HQ.