go-solr
solr go client from Sendgrid
Usage
To start the client
solrzk := solr.NewSolrZK(...)
solrzk.Listen()
solrhttp := solr.NewSolrHttp(solrzk)
solrClient := solr.NewSolrHttpRetrier(solrhttp)
The Read and Update methods take a node list use the SolrLocator interface to return a node list
locator := solr.GetSolrLocator(solr.NewSolrZK(...))
type SolrLocator interface {
GetLeaders(docID string) ([]string, error)
GetReplicaUris() ([]string, error)
GetReplicasFromRoute(route string) ([]string, error)
GetLeadersAndReplicas(docID string) ([]string, error)
}
To make requests
solrClient.Select(locator.GetReplicasFromRoute("shard!"),solr.FilterQuery("myfield:test"),solr.Route("shardkey!"))
To make updates
solrClient.Update(locator.GetLeadersAndReplicas("{anydocidtoroute}"),collectionName,callsSolrJsonDocs, docsMap)
Tests on solr
docker-compose up
docker-compose run gotests bash
go test
go run ./cmd/solrRunner.go 1000
Tests with cluster of 3 solrs
docker-compose -p cluster -f docker-compose.cluster.yml up
docker-compose -p cluster run gotests bash
go test
go run ./cmd/solrRunner.go 1000
License
The MIT License (MIT)