mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-11 15:21:02 +00:00
the ranked cache must be fully rebuilt as the BitmapRewriter doesn't have an easy way to track which rows had how many bits changed which we would need to update the cache. We also needed to add a Clear method to topn cache to completely remove old values before the rebuild as otherwise they'd sit there and pollute the cache after it was rebuilt. This also includes fixing a strange idiosyncrasy where the _exists field was a set field, but didn't have its type explicitly set. This was causing it to have a ranked cache even though that option was turned off. Hoping this doesn't have any weird follow-on effects... or if it does the tests catch them. |
||
|---|---|---|
| .. | ||
| 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