mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
If non-primary host fails to process a request, retry on primary node. conditions when we should not do this: - no error - we've aleady tried the primary - we're making a status request to get the primary node...this could lead to lock contention if we allow it to happen as we are making an http request within an on going http request to discover the primary node. This also deletes the RemoveHost method and the associated test b/c it is not used anywhere anymore and updates the returned error type. |
||
|---|---|---|
| .. | ||
| csv | ||
| docs | ||
| egpool | ||
| batch.go | ||
| batch_test.go | ||
| client.go | ||
| client_it_test.go | ||
| client_test.go | ||
| cluster.go | ||
| cluster_test.go | ||
| doc.go | ||
| error.go | ||
| ingest_api_batch.go | ||
| ingest_api_batch_test.go | ||
| logimport.go | ||
| logimport_test.go | ||
| metrics.go | ||
| orm.go | ||
| orm_test.go | ||
| README.md | ||
| record.go | ||
| record_test.go | ||
| response.go | ||
| response_test.go | ||
| shardnodes.go | ||
| tracer.go | ||
| validate.go | ||
| validate_test.go | ||
| version.go | ||
Go Client for Pilosa
Go client for Pilosa high performance distributed index.
Usage
If you have the pilosa repo in your GOPATH,
you can import the library in your code using:
import "github.com/pilosa/pilosa/v2/client"
Quick overview
Assuming Pilosa server is running at localhost:10101 (the default):
package main
import (
"fmt"
"github.com/pilosa/pilosa/v2/client"
)
func main() {
// Create the default client
cli := client.DefaultClient()
// Retrieve the schema
schema, err := cli.Schema()
// Create an Index object
myindex := schema.Index("myindex")
// Create a Field object
myfield := myindex.Field("myfield")
// make sure the index and the field exists on the server
err := cli.SyncSchema(schema)
// Send a Set query. If err is non-nil, response will be nil.
response, err := cli.Query(myfield.Set(5, 42))
// Send a Row query. If err is non-nil, response will be nil.
response, err = cli.Query(myfield.Row(5))
// Get the result
result := response.Result()
// Act on the result
if result != nil {
columns := result.Row().Columns
fmt.Println("Got columns: ", columns)
}
// You can batch queries to improve throughput
response, err = cli.Query(myindex.BatchQuery(
myfield.Row(5),
myfield.Row(10)))
if err != nil {
fmt.Println(err)
}
for _, result := range response.Results() {
// Act on the result
fmt.Println(result.Row().Columns)
}
}
Documentation
Data Model and Queries
Executing Queries
See: Server Interaction