pilosa

package module
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 24, 2018 License: BSD-3-Clause Imports: 23 Imported by: 0

README

Go Client for Pilosa

GoDoc

Go client for Pilosa high performance distributed index.

What's New?

See: CHANGELOG

Requirements

  • Go 1.10 and higher

Install

Download the library in your GOPATH using:

go get github.com/pilosa/go-pilosa

After that, you can import the library in your code using:

import "github.com/pilosa/go-pilosa"

Usage

Quick overview

Assuming Pilosa server is running at localhost:10101 (the default):

package main

import (
	"fmt"

	"github.com/pilosa/go-pilosa"
)

func main() {
	var err error

	// Create the default client
	client := pilosa.DefaultClient()

	// Retrieve the schema
	schema, err := client.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 = client.SyncSchema(schema)

	// Send a Set query. If err is non-nil, response will be nil.
	response, err := client.Query(myfield.Set(5, 42))

	// Send a Row query. If err is non-nil, response will be nil.
	response, err = client.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 = client.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

See: Data Model and Queries

Executing Queries

See: Server Interaction

Importing and Exporting Data

See: Importing and Exporting Data

Contributing

See: CONTRIBUTING

License

See: LICENSE

Documentation

Overview

Package pilosa enables querying a Pilosa server.

This client uses Pilosa's http+protobuf API.

Usage:

import (
	"fmt"
	pilosa "github.com/pilosa/go-pilosa"
)

// Create a Client instance
client := pilosa.DefaultClient()

// Create a Schema instance
schema, err := client.Schema()
if err != nil {
	panic(err)
}

// Create an Index instance
index, err := schema.Index("repository")
if err != nil {
	panic(err)
}

// Create a Field instance
stargazer, err := index.Field("stargazer")
if err != nil {
	panic(err)
}

// Sync the schema with the server-side, so non-existing indexes/fields are created on the server-side.
err = client.SyncSchema(schema)
if err != nil {
	panic(err)
}

// Execute a query
response, err := client.Query(stargazer.Row(5))
if err != nil {
	panic(err)
}

// Act on the result
fmt.Println(response.Result())

See also https://www.pilosa.com/docs/api-reference/ and https://www.pilosa.com/docs/query-language/.

Index

Constants

View Source
const (
	QueryResultTypeNil uint32 = iota
	QueryResultTypeRow
	QueryResultTypePairs
	QueryResultTypeValCount
	QueryResultTypeUint64
	QueryResultTypeBool
)

QueryResponse types.

View Source
const CacheSizeDefault = 0

CacheSizeDefault is the default cache size

View Source
const PQLVersion = "1.0"
View Source
const Version = "v1.2.0"

Variables

View Source
var (
	ErrEmptyCluster           = NewError("No usable addresses in the cluster")
	ErrIndexExists            = NewError("Index exists")
	ErrFieldExists            = NewError("Field exists")
	ErrInvalidIndexName       = NewError("Invalid index name")
	ErrInvalidFieldName       = NewError("Invalid field name")
	ErrInvalidLabel           = NewError("Invalid label")
	ErrInvalidKey             = NewError("Invalid key")
	ErrTriedMaxHosts          = NewError("Tried max hosts, still failing")
	ErrAddrURIClusterExpected = NewError("Addresses, URIs or a cluster is expected")
	ErrInvalidQueryOption     = NewError("Invalid query option")
	ErrInvalidIndexOption     = NewError("Invalid index option")
	ErrInvalidFieldOption     = NewError("Invalid field option")
	ErrNoFragmentNodes        = NewError("No fragment nodes")
	ErrNoShard                = NewError("Index has no shards")
	ErrUnknownType            = NewError("Unknown type")
)

Predefined Pilosa errors.

Functions

func ValidKey added in v0.9.0

func ValidKey(key string) bool

ValidKey returns true if the given key is valid, otherwise false.

func ValidLabel

func ValidLabel(label string) bool

ValidLabel returns true if the given label is valid, otherwise false.

Types

type BoolResult added in v0.9.0

type BoolResult bool

func (BoolResult) Changed added in v0.9.0

func (b BoolResult) Changed() bool

func (BoolResult) Count added in v0.9.0

func (BoolResult) Count() int64

func (BoolResult) CountItems added in v0.9.0

func (BoolResult) CountItems() []CountResultItem

func (BoolResult) Row added in v0.10.0

func (BoolResult) Row() RowResult

func (BoolResult) Type added in v0.9.0

func (BoolResult) Type() uint32

func (BoolResult) Value added in v0.9.0

func (BoolResult) Value() int64

type CacheType

type CacheType string

CacheType represents cache type for a field

const (
	CacheTypeDefault CacheType = ""
	CacheTypeLRU     CacheType = "lru"
	CacheTypeRanked  CacheType = "ranked"
	CacheTypeNone    CacheType = "none"
)

CacheType constants

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is the HTTP client for Pilosa server.

func DefaultClient

func DefaultClient() *Client

DefaultClient creates a client with the default address and options.

func NewClient added in v0.8.0

func NewClient(addrUriOrCluster interface{}, options ...ClientOption) (*Client, error)

NewClient creates a client with the given address, URI, or cluster and options.

func (*Client) CreateField added in v0.10.0

func (c *Client) CreateField(field *Field) error

CreateField creates a field on the server using the given Field struct.

func (*Client) CreateIndex

func (c *Client) CreateIndex(index *Index) error

CreateIndex creates an index on the server using the given Index struct.

func (*Client) DeleteField added in v0.7.0

func (c *Client) DeleteField(field *Field) error

DeleteField deletes a field on the server.

func (*Client) DeleteIndex

func (c *Client) DeleteIndex(index *Index) error

DeleteIndex deletes an index on the server.

func (*Client) EnsureField added in v0.10.0

func (c *Client) EnsureField(field *Field) error

EnsureField creates a field on the server if it doesn't exists.

func (*Client) EnsureIndex

func (c *Client) EnsureIndex(index *Index) error

EnsureIndex creates an index on the server if it does not exist.

func (*Client) ExportField added in v0.10.0

func (c *Client) ExportField(field *Field) (io.Reader, error)

ExportField exports columns for a field.

func (*Client) HttpRequest added in v0.8.0

func (c *Client) HttpRequest(method string, path string, data []byte, headers map[string]string) (*http.Response, []byte, error)

HttpRequest sends an HTTP request to the Pilosa server. **NOTE**: This function is experimental and may be removed in later revisions.

func (*Client) ImportField added in v0.10.0

func (c *Client) ImportField(field *Field, iterator RecordIterator, options ...ImportOption) error

ImportField imports records from the given iterator.

func (*Client) Query

func (c *Client) Query(query PQLQuery, options ...interface{}) (*QueryResponse, error)

Query runs the given query against the server with the given options. Pass nil for default options.

func (*Client) Schema

func (c *Client) Schema() (*Schema, error)

Schema returns the indexes and fields on the server.

func (*Client) Status added in v0.9.0

func (c *Client) Status() (Status, error)

Status returns the serves status.

func (*Client) SyncSchema added in v0.5.0

func (c *Client) SyncSchema(schema *Schema) error

SyncSchema updates a schema with the indexes and fields on the server and creates the indexes and fields in the schema on the server side. This function does not delete indexes and the fields on the server side nor in the schema.

type ClientOption added in v0.8.0

type ClientOption func(options *ClientOptions) error

ClientOption is used when creating a PilosaClient struct.

func OptClientConnectTimeout added in v0.9.0

func OptClientConnectTimeout(timeout time.Duration) ClientOption

OptClientConnectTimeout is the maximum time to connect in nanoseconds.

func OptClientPoolSizePerRoute added in v0.9.0

func OptClientPoolSizePerRoute(size int) ClientOption

OptPoolSizePerRoute is the maximum number of active connections in the pool to a host.

func OptClientSocketTimeout added in v0.9.0

func OptClientSocketTimeout(timeout time.Duration) ClientOption

OptClientSocketTimeout is the maximum idle socket time in nanoseconds

func OptClientTLSConfig added in v0.9.0

func OptClientTLSConfig(config *tls.Config) ClientOption

OptClientTLSConfig contains the TLS configuration.

func OptClientTotalPoolSize added in v0.9.0

func OptClientTotalPoolSize(size int) ClientOption

OptClientTotalPoolSize is the maximum number of connections in the pool.

type ClientOptions

type ClientOptions struct {
	SocketTimeout    time.Duration
	ConnectTimeout   time.Duration
	PoolSizePerRoute int
	TotalPoolSize    int
	TLSConfig        *tls.Config
}

ClientOptions control the properties of client connection to the server.

type Cluster

type Cluster struct {
	// contains filtered or unexported fields
}

Cluster contains hosts in a Pilosa cluster.

func DefaultCluster

func DefaultCluster() *Cluster

DefaultCluster returns the default Cluster.

func NewClusterWithHost

func NewClusterWithHost(hosts ...*URI) *Cluster

NewClusterWithHost returns a cluster with the given URIs.

func (*Cluster) AddHost

func (c *Cluster) AddHost(address *URI)

AddHost adds a host to the cluster.

func (*Cluster) Host

func (c *Cluster) Host() *URI

Host returns a host in the cluster.

func (*Cluster) Hosts

func (c *Cluster) Hosts() []URI

Hosts returns all available hosts in the cluster.

func (*Cluster) RemoveHost

func (c *Cluster) RemoveHost(address *URI)

RemoveHost black lists the host with the given URI from the cluster.

type Column added in v0.10.0

type Column struct {
	RowID     uint64
	ColumnID  uint64
	RowKey    string
	ColumnKey string
	Timestamp int64
}

Column defines a single Pilosa column.

func (Column) Less added in v0.10.0

func (b Column) Less(other Record) bool

func (Column) Shard added in v0.10.0

func (b Column) Shard(shardWidth uint64) uint64

type ColumnItem

type ColumnItem struct {
	ID         uint64                 `json:"id,omitempty"`
	Key        string                 `json:"key,omitempty"`
	Attributes map[string]interface{} `json:"attributes,omitempty"`
}

ColumnItem represents data about a column. Column data is only returned if QueryOptions.Columns was set to true.

type CountResultItem

type CountResultItem struct {
	ID    uint64 `json:"id"`
	Key   string `json:"key,omitempty"`
	Count uint64 `json:"count"`
}

CountResultItem represents a result from TopN call.

func (*CountResultItem) String added in v0.8.0

func (c *CountResultItem) String() string

type Error

type Error struct {
	Message string
}

Error contains a Pilosa specific error.

func NewError

func NewError(message string) *Error

NewError creates a Pilosa error.

func (Error) Error

func (e Error) Error() string

type Field added in v0.10.0

type Field struct {
	// contains filtered or unexported fields
}

Field structs are used to segment and define different functional characteristics within your entire index. You can think of a Field as a table-like data partition within your Index. Row-level attributes are namespaced at the Field level.

func (*Field) Between added in v0.10.0

func (field *Field) Between(a int, b int) *PQLRowQuery

Between creates a between query.

func (*Field) Clear added in v0.10.0

func (f *Field) Clear(rowIDOrKey, colIDOrKey interface{}) *PQLBaseQuery

Clear creates a Clear query. Clear, assigns a value of 0 to a bit in the binary matrix, thus disassociating the given row in the given field from the given column.

func (*Field) ClearRow added in v1.2.0

func (f *Field) ClearRow(rowIDOrKey interface{}) *PQLBaseQuery

ClearRow creates a ClearRow query. ClearRow sets all bits to 0 in a given row of the binary matrix, thus disassociating the given row in the given field from all columns.

func (*Field) Equals added in v0.10.0

func (field *Field) Equals(n int) *PQLRowQuery

Equals creates an equals query.

func (*Field) FilterAttrTopN added in v0.10.0

func (f *Field) FilterAttrTopN(n uint64, row *PQLRowQuery, attrName string, attrValues ...interface{}) *PQLRowQuery

FilterAttrTopN creates a TopN query with the given item count, row, attribute name and filter values for that field The attrName and attrValues arguments work together to only return Rows which have the attribute specified by attrName with one of the values specified in attrValues.

func (*Field) GT added in v0.10.0

func (field *Field) GT(n int) *PQLRowQuery

GT creates a greater than query.

func (*Field) GTE added in v0.10.0

func (field *Field) GTE(n int) *PQLRowQuery

GTE creates a greater than or equal query.

func (*Field) LT added in v0.10.0

func (field *Field) LT(n int) *PQLRowQuery

LT creates a less than query.

func (*Field) LTE added in v0.10.0

func (field *Field) LTE(n int) *PQLRowQuery

LTE creates a less than or equal query.

func (*Field) Max added in v0.10.0

func (field *Field) Max(row *PQLRowQuery) *PQLBaseQuery

Max creates a min query.

func (*Field) Min added in v0.10.0

func (field *Field) Min(row *PQLRowQuery) *PQLBaseQuery

Min creates a min query.

func (*Field) Name added in v0.10.0

func (f *Field) Name() string

Name returns the name of the field

func (*Field) NotEquals added in v0.10.0

func (field *Field) NotEquals(n int) *PQLRowQuery

NotEquals creates a not equals query.

func (*Field) NotNull added in v0.10.0

func (field *Field) NotNull() *PQLRowQuery

NotNull creates a not equal to null query.

func (*Field) Options added in v0.10.0

func (f *Field) Options() *FieldOptions

Options returns the options set for the field. Which fields of the FieldOptions struct are actually being used depends on the field's type.

func (*Field) Range added in v0.10.0

func (f *Field) Range(rowIDOrKey interface{}, start time.Time, end time.Time) *PQLRowQuery

Range creates a Range query. Similar to Row, but only returns columns which were set with timestamps between the given start and end timestamps.

func (*Field) Row added in v0.10.0

func (f *Field) Row(rowIDOrKey interface{}) *PQLRowQuery

Row creates a Row query. Row retrieves the indices of all the set columns in a row. It also retrieves any attributes set on that row or column.

func (*Field) RowTopN added in v0.10.0

func (f *Field) RowTopN(n uint64, row *PQLRowQuery) *PQLRowQuery

RowTopN creates a TopN query with the given item count and row. This variant supports customizing the row query.

func (*Field) Set added in v0.10.0

func (f *Field) Set(rowIDOrKey, colIDOrKey interface{}) *PQLBaseQuery

Set creates a Set query. Set, assigns a value of 1 to a bit in the binary matrix, thus associating the given row in the given field with the given column.

func (*Field) SetIntValue added in v0.10.0

func (field *Field) SetIntValue(colIDOrKey interface{}, value int) *PQLBaseQuery

SetIntValue creates a Set query.

func (*Field) SetRowAttrs added in v0.10.0

func (f *Field) SetRowAttrs(rowIDOrKey interface{}, attrs map[string]interface{}) *PQLBaseQuery

SetRowAttrs creates a SetRowAttrs query. SetRowAttrs associates arbitrary key/value pairs with a row in a field. Following types are accepted: integer, float, string and boolean types.

func (*Field) SetTimestamp added in v0.10.0

func (f *Field) SetTimestamp(rowIDOrKey, colIDOrKey interface{}, timestamp time.Time) *PQLBaseQuery

SetTimestamp creates a Set query with timestamp. Set, assigns a value of 1 to a column in the binary matrix, thus associating the given row in the given field with the given column.

func (*Field) Store added in v1.2.0

func (f *Field) Store(row *PQLRowQuery, rowIDOrKey interface{}) *PQLBaseQuery

Store creates a Store call. Store writes the result of the row query to the specified row. If the row already exists, it will be replaced. The destination field must be of field type set.

func (*Field) String added in v0.10.0

func (f *Field) String() string

func (*Field) Sum added in v0.10.0

func (field *Field) Sum(row *PQLRowQuery) *PQLBaseQuery

Sum creates a sum query.

func (*Field) TopN added in v0.10.0

func (f *Field) TopN(n uint64) *PQLRowQuery

TopN creates a TopN query with the given item count. Returns the id and count of the top n rows (by count of columns) in the field.

type FieldInfo added in v0.10.0

type FieldInfo struct {
	Name string `json:"name"`
}

FieldInfo represents schema information for a field.

type FieldOption added in v0.10.0

type FieldOption func(options *FieldOptions)

FieldOption is used to pass an option to index.Field function.

func OptFieldKeys added in v0.10.0

func OptFieldKeys(keys bool) FieldOption

OptFieldKeys sets whether field uses string keys.

func OptFieldTypeBool added in v1.2.0

func OptFieldTypeBool() FieldOption

OptFieldTypeBool adds a bool field.

func OptFieldTypeInt added in v0.10.0

func OptFieldTypeInt(min int64, max int64) FieldOption

OptFieldTypeInt adds an integer field.

func OptFieldTypeMutex added in v1.2.0

func OptFieldTypeMutex(cacheType CacheType, cacheSize int) FieldOption

OptFieldTypeMutex adds a mutex field.

func OptFieldTypeSet added in v0.10.0

func OptFieldTypeSet(cacheType CacheType, cacheSize int) FieldOption

OptFieldTypeSet adds a set field. Specify CacheTypeDefault for the default cache type. Specify CacheSizeDefault for the default cache size.

func OptFieldTypeTime added in v0.10.0

func OptFieldTypeTime(quantum TimeQuantum, opts ...bool) FieldOption

OptFieldTypeTime adds a time field.

type FieldOptions added in v0.10.0

type FieldOptions struct {
	// contains filtered or unexported fields
}

FieldOptions contains options to customize Field objects and field queries.

func (*FieldOptions) CacheSize added in v0.10.0

func (fo *FieldOptions) CacheSize() int

CacheSize returns the cache size for a set field. Zero otherwise.

func (*FieldOptions) CacheType added in v0.10.0

func (fo *FieldOptions) CacheType() CacheType

CacheType returns the configured cache type for a "set" field. Empty string otherwise.

func (*FieldOptions) Keys added in v1.2.0

func (fo *FieldOptions) Keys() bool

Keys returns whether this field uses keys instead of IDs

func (*FieldOptions) Max added in v0.10.0

func (fo *FieldOptions) Max() int64

Max returns the maximum accepted value for an integer field. Zero otherwise.

func (*FieldOptions) Min added in v0.10.0

func (fo *FieldOptions) Min() int64

Min returns the minimum accepted value for an integer field. Zero otherwise.

func (*FieldOptions) NoStandardView added in v1.2.0

func (fo *FieldOptions) NoStandardView() bool

NoStandardView suppresses creating the standard view for supported field types (currently, time)

func (FieldOptions) String added in v0.10.0

func (fo FieldOptions) String() string

func (*FieldOptions) TimeQuantum added in v0.10.0

func (fo *FieldOptions) TimeQuantum() TimeQuantum

TimeQuantum returns the configured time quantum for a time field. Empty string otherwise.

func (*FieldOptions) Type added in v0.10.0

func (fo *FieldOptions) Type() FieldType

Type returns the type of the field. Currently "set", "int", or "time".

type FieldType added in v0.10.0

type FieldType string

FieldType

const (
	FieldTypeDefault FieldType = ""
	FieldTypeSet     FieldType = "set"
	FieldTypeInt     FieldType = "int"
	FieldTypeTime    FieldType = "time"
	FieldTypeMutex   FieldType = "mutex"
	FieldTypeBool    FieldType = "bool"
)

type FieldValue added in v0.7.0

type FieldValue struct {
	ColumnID  uint64
	ColumnKey string
	Value     int64
}

FieldValue represents the value for a column within a range-encoded field.

func (FieldValue) Less added in v0.9.0

func (v FieldValue) Less(other Record) bool

func (FieldValue) Shard added in v0.10.0

func (v FieldValue) Shard(shardWidth uint64) uint64

type ImportOption added in v0.9.0

type ImportOption func(options *ImportOptions) error

ImportOption is used when running imports.

func OptImportBatchSize added in v0.9.0

func OptImportBatchSize(batchSize int) ImportOption

func OptImportClear added in v1.2.0

func OptImportClear(clear bool) ImportOption

func OptImportStatusChannel added in v0.9.0

func OptImportStatusChannel(statusChan chan<- ImportStatusUpdate) ImportOption

func OptImportThreadCount added in v0.9.0

func OptImportThreadCount(count int) ImportOption

type ImportOptions added in v0.9.0

type ImportOptions struct {
	// contains filtered or unexported fields
}

type ImportStatusUpdate added in v0.9.0

type ImportStatusUpdate struct {
	ThreadID      int
	Shard         uint64
	ImportedCount int
	Time          time.Duration
}

type ImportWorkerStrategy added in v0.9.0

type ImportWorkerStrategy int
const (
	DefaultImport ImportWorkerStrategy = iota
	BatchImport
	TimeoutImport
)

type Index

type Index struct {
	// contains filtered or unexported fields
}

Index is a Pilosa index. The purpose of the Index is to represent a data namespace. You cannot perform cross-index queries. Column-level attributes are global to the Index.

func NewIndex

func NewIndex(name string) *Index

NewIndex creates an index with a name.

func (*Index) BatchQuery

func (idx *Index) BatchQuery(queries ...PQLQuery) *PQLBatchQuery

BatchQuery creates a batch query with the given queries.

func (*Index) Count

func (idx *Index) Count(row *PQLRowQuery) *PQLBaseQuery

Count creates a Count query. Returns the number of set columns in the ROW_CALL passed in.

func (*Index) Difference

func (idx *Index) Difference(rows ...*PQLRowQuery) *PQLRowQuery

Difference creates an Intersect query. Difference returns all of the columns from the first ROW_CALL argument passed to it, without the columns from each subsequent ROW_CALL.

func (*Index) Field added in v0.10.0

func (idx *Index) Field(name string, options ...FieldOption) *Field

Field creates a Field struct with the specified name and defaults.

func (*Index) Fields added in v0.10.0

func (idx *Index) Fields() map[string]*Field

Fields return a copy of the fields in this index

func (*Index) Intersect

func (idx *Index) Intersect(rows ...*PQLRowQuery) *PQLRowQuery

Intersect creates an Intersect query. Intersect performs a logical AND on the results of each ROW_CALL query passed to it.

func (*Index) Name

func (idx *Index) Name() string

Name returns the name of this index.

func (*Index) Not added in v1.1.0

func (idx *Index) Not(row *PQLRowQuery) *PQLRowQuery

func (*Index) Options added in v1.2.0

func (idx *Index) Options(row *PQLRowQuery, opts ...OptionsOption) *PQLBaseQuery

Options creates an Options query.

func (*Index) RawQuery

func (idx *Index) RawQuery(query string) *PQLBaseQuery

RawQuery creates a query with the given string. Note that the query is not validated before sending to the server.

func (*Index) SetColumnAttrs

func (idx *Index) SetColumnAttrs(colIDOrKey interface{}, attrs map[string]interface{}) *PQLBaseQuery

SetColumnAttrs creates a SetColumnAttrs query. SetColumnAttrs associates arbitrary key/value pairs with a column in an index. Following types are accepted: integer, float, string and boolean types.

func (*Index) String added in v0.8.0

func (idx *Index) String() string

func (*Index) Union

func (idx *Index) Union(rows ...*PQLRowQuery) *PQLRowQuery

Union creates a Union query. Union performs a logical OR on the results of each ROW_CALL query passed to it.

func (*Index) Xor added in v0.7.0

func (idx *Index) Xor(rows ...*PQLRowQuery) *PQLRowQuery

Xor creates an Xor query.

type IndexOption added in v0.10.0

type IndexOption func(options *IndexOptions)

IndexOption is used to pass an option to Index function.

func OptIndexKeys added in v0.10.0

func OptIndexKeys(keys bool) IndexOption

OptIndexKeys sets whether index uses string keys.

func OptIndexTrackExistence added in v1.1.0

func OptIndexTrackExistence(trackExistence bool) IndexOption

OptIndexTrackExistence enables keeping track of existence of columns.

type IndexOptions

type IndexOptions struct {
	// contains filtered or unexported fields
}

IndexOptions contains options to customize Index objects.

func (IndexOptions) Keys added in v1.2.0

func (io IndexOptions) Keys() bool

func (IndexOptions) String

func (io IndexOptions) String() string

func (IndexOptions) TrackExistence added in v1.2.0

func (io IndexOptions) TrackExistence() bool

type IntResult added in v0.9.0

type IntResult int64

func (IntResult) Changed added in v0.9.0

func (IntResult) Changed() bool

func (IntResult) Count added in v0.9.0

func (i IntResult) Count() int64

func (IntResult) CountItems added in v0.9.0

func (IntResult) CountItems() []CountResultItem

func (IntResult) Row added in v0.10.0

func (IntResult) Row() RowResult

func (IntResult) Type added in v0.9.0

func (IntResult) Type() uint32

func (IntResult) Value added in v0.9.0

func (IntResult) Value() int64

type NilResult added in v0.9.0

type NilResult struct{}

func (NilResult) Changed added in v0.9.0

func (NilResult) Changed() bool

func (NilResult) Count added in v0.9.0

func (NilResult) Count() int64

func (NilResult) CountItems added in v0.9.0

func (NilResult) CountItems() []CountResultItem

func (NilResult) Row added in v0.10.0

func (NilResult) Row() RowResult

func (NilResult) Type added in v0.9.0

func (NilResult) Type() uint32

func (NilResult) Value added in v0.9.0

func (NilResult) Value() int64

type OptionsOption added in v1.2.0

type OptionsOption func(options *OptionsOptions)

func OptOptionsColumnAttrs added in v1.2.0

func OptOptionsColumnAttrs(enable bool) OptionsOption

OptOptionsColumnAttrs enables returning column attributes.

func OptOptionsExcludeColumns added in v1.2.0

func OptOptionsExcludeColumns(enable bool) OptionsOption

OptOptionsExcludeColumns enables preventing returning columns.

func OptOptionsExcludeRowAttrs added in v1.2.0

func OptOptionsExcludeRowAttrs(enable bool) OptionsOption

OptOptionsExcludeRowAttrs enables preventing returning row attributes.

func OptOptionsShards added in v1.2.0

func OptOptionsShards(shards ...uint64) OptionsOption

OptOptionsShards run the query using only the data from the given shards. By default, the entire data set (i.e. data from all shards) is used.

type OptionsOptions added in v1.2.0

type OptionsOptions struct {
	// contains filtered or unexported fields
}

OptionsOptions is used to pass an option to Option call.

type PQLBaseQuery

type PQLBaseQuery struct {
	// contains filtered or unexported fields
}

PQLBaseQuery is the base implementation for PQLQuery.

func NewPQLBaseQuery

func NewPQLBaseQuery(pql string, index *Index, err error) *PQLBaseQuery

NewPQLBaseQuery creates a new PQLQuery with the given PQL and index.

func (PQLBaseQuery) Error

func (q PQLBaseQuery) Error() error

Error returns the error or nil for this query.

func (*PQLBaseQuery) Index

func (q *PQLBaseQuery) Index() *Index

Index returns the index for this query

type PQLBatchQuery

type PQLBatchQuery struct {
	// contains filtered or unexported fields
}

PQLBatchQuery contains a batch of PQL queries. Use Index.BatchQuery function to create an instance.

Usage:

index, err := NewIndex("repository")
stargazer, err := index.Field("stargazer")
query := repo.BatchQuery(
	stargazer.Row(5),
	stargazer.Row(15),
	repo.Union(stargazer.Row(20), stargazer.Row(25)))

func (*PQLBatchQuery) Add

func (q *PQLBatchQuery) Add(query PQLQuery)

Add adds a query to the batch.

func (*PQLBatchQuery) Error

func (q *PQLBatchQuery) Error() error

func (*PQLBatchQuery) Index

func (q *PQLBatchQuery) Index() *Index

Index returns the index for this query.

type PQLQuery

type PQLQuery interface {
	Index() *Index

	Error() error
	// contains filtered or unexported methods
}

PQLQuery is an interface for PQL queries.

type PQLRowQuery added in v0.10.0

type PQLRowQuery struct {
	// contains filtered or unexported fields
}

PQLRowQuery is the return type for row queries.

func NewPQLRowQuery added in v0.10.0

func NewPQLRowQuery(pql string, index *Index, err error) *PQLRowQuery

NewPQLRowQuery creates a new PqlRowQuery.

func (PQLRowQuery) Error added in v0.10.0

func (q PQLRowQuery) Error() error

Error returns the error or nil for this query.

func (*PQLRowQuery) Index added in v0.10.0

func (q *PQLRowQuery) Index() *Index

Index returns the index for this query/

type QueryOption added in v0.8.0

type QueryOption func(options *QueryOptions) error

QueryOption is used when using options with a client.Query,

func OptQueryColumnAttrs added in v0.9.0

func OptQueryColumnAttrs(enable bool) QueryOption

OptQueryColumnAttrs enables returning column attributes in the result.

func OptQueryExcludeAttrs added in v0.9.0

func OptQueryExcludeAttrs(enable bool) QueryOption

OptQueryExcludeAttrs enables discarding attributes from a result,

func OptQueryExcludeColumns added in v0.10.0

func OptQueryExcludeColumns(enable bool) QueryOption

OptQueryExcludeColumns enables discarding columns from a result,

func OptQueryShards added in v0.10.0

func OptQueryShards(shards ...uint64) QueryOption

OptQueryShards restricts the set of shards on which a query operates.

type QueryOptions

type QueryOptions struct {
	// Shards restricts query to a subset of shards. Queries all shards if nil.
	Shards []uint64
	// ColumnAttrs enables returning columns in the query response.
	ColumnAttrs bool
	// ExcludeRowAttrs inhibits returning attributes
	ExcludeRowAttrs bool
	// ExcludeColumns inhibits returning columns
	ExcludeColumns bool
}

QueryOptions contains options to customize the Query function.

type QueryResponse

type QueryResponse struct {
	ResultList   []QueryResult `json:"results,omitempty"`
	ColumnList   []ColumnItem  `json:"columns,omitempty"`
	ErrorMessage string        `json:"error-message,omitempty"`
	Success      bool          `json:"success,omitempty"`
}

QueryResponse represents the response from a Pilosa query.

func (*QueryResponse) Column

func (qr *QueryResponse) Column() ColumnItem

Column returns the first column.

func (*QueryResponse) Columns

func (qr *QueryResponse) Columns() []ColumnItem

Columns returns all columns in the response.

func (*QueryResponse) Result

func (qr *QueryResponse) Result() QueryResult

Result returns the first result or nil.

func (*QueryResponse) Results

func (qr *QueryResponse) Results() []QueryResult

Results returns all results in the response.

type QueryResult

type QueryResult interface {
	Type() uint32
	Row() RowResult
	CountItems() []CountResultItem
	Count() int64
	Value() int64
	Changed() bool
}

QueryResult represents one of the results in the response.

type Record added in v0.9.0

type Record interface {
	Shard(shardWidth uint64) uint64
	Less(other Record) bool
}

type RecordIterator added in v0.9.0

type RecordIterator interface {
	NextRecord() (Record, error)
}

type RowResult added in v0.10.0

type RowResult struct {
	Attributes map[string]interface{} `json:"attrs"`
	Columns    []uint64               `json:"columns"`
	Keys       []string               `json:"keys"`
}

RowResult represents a result from Row, Union, Intersect, Difference and Range PQL calls.

func (RowResult) Changed added in v0.10.0

func (RowResult) Changed() bool

func (RowResult) Count added in v0.10.0

func (RowResult) Count() int64

func (RowResult) CountItems added in v0.10.0

func (RowResult) CountItems() []CountResultItem

func (RowResult) MarshalJSON added in v0.10.0

func (b RowResult) MarshalJSON() ([]byte, error)

func (RowResult) Row added in v0.10.0

func (b RowResult) Row() RowResult

func (RowResult) Type added in v0.10.0

func (RowResult) Type() uint32

func (RowResult) Value added in v0.10.0

func (RowResult) Value() int64

type Schema

type Schema struct {
	// contains filtered or unexported fields
}

Schema contains the index properties

func NewSchema added in v0.5.0

func NewSchema() *Schema

NewSchema creates a new Schema

func (*Schema) Index added in v0.5.0

func (s *Schema) Index(name string, options ...IndexOption) *Index

Index returns an index with a name.

func (*Schema) Indexes

func (s *Schema) Indexes() map[string]*Index

Indexes return a copy of the indexes in this schema

func (*Schema) String added in v0.8.0

func (s *Schema) String() string

type SchemaField added in v1.1.0

type SchemaField struct {
	Name    string        `json:"name"`
	Options SchemaOptions `json:"options"`
}

SchemaField contains field information.

type SchemaIndex added in v1.1.0

type SchemaIndex struct {
	Name    string        `json:"name"`
	Options SchemaOptions `json:"options"`
	Fields  []SchemaField `json:"fields"`
	Shards  []uint64      `json:"shards"`
}

SchemaIndex contains index information.

type SchemaInfo added in v0.9.0

type SchemaInfo struct {
	Indexes []SchemaIndex `json:"indexes"`
}

type SchemaOptions added in v1.1.0

type SchemaOptions struct {
	FieldType      FieldType `json:"type"`
	CacheType      string    `json:"cacheType"`
	CacheSize      uint      `json:"cacheSize"`
	TimeQuantum    string    `json:"timeQuantum"`
	Min            int64     `json:"min"`
	Max            int64     `json:"max"`
	Keys           bool      `json:"keys"`
	NoStandardView bool      `json:"noStandardView"`
	TrackExistence bool      `json:"trackExistence"`
}

SchemaOptions contains options for a field or an index.

type Status added in v0.5.0

type Status struct {
	Nodes   []StatusNode `json:"nodes"`
	State   string       `json:"state"`
	LocalID string       `json:"localID"`
	// contains filtered or unexported fields
}

Status contains the status information from a Pilosa server.

type StatusNode added in v0.5.0

type StatusNode struct {
	ID            string    `json:"id"`
	URI           StatusURI `json:"uri"`
	IsCoordinator bool      `json:"isCoordinator"`
}

type StatusURI added in v1.1.0

type StatusURI struct {
	Scheme string `json:"scheme"`
	Host   string `json:"host"`
	Port   uint16 `json:"port"`
}

StatusURI contains node information.

type TimeQuantum

type TimeQuantum string

TimeQuantum type represents valid time quantum values time fields.

const (
	TimeQuantumNone             TimeQuantum = ""
	TimeQuantumYear             TimeQuantum = "Y"
	TimeQuantumMonth            TimeQuantum = "M"
	TimeQuantumDay              TimeQuantum = "D"
	TimeQuantumHour             TimeQuantum = "H"
	TimeQuantumYearMonth        TimeQuantum = "YM"
	TimeQuantumMonthDay         TimeQuantum = "MD"
	TimeQuantumDayHour          TimeQuantum = "DH"
	TimeQuantumYearMonthDay     TimeQuantum = "YMD"
	TimeQuantumMonthDayHour     TimeQuantum = "MDH"
	TimeQuantumYearMonthDayHour TimeQuantum = "YMDH"
)

TimeQuantum constants

type TopNResult added in v0.9.0

type TopNResult []CountResultItem

func (TopNResult) Changed added in v0.9.0

func (TopNResult) Changed() bool

func (TopNResult) Count added in v0.9.0

func (TopNResult) Count() int64

func (TopNResult) CountItems added in v0.9.0

func (t TopNResult) CountItems() []CountResultItem

func (TopNResult) Row added in v0.10.0

func (TopNResult) Row() RowResult

func (TopNResult) Type added in v0.9.0

func (TopNResult) Type() uint32

func (TopNResult) Value added in v0.9.0

func (TopNResult) Value() int64

type URI

type URI struct {
	// contains filtered or unexported fields
}

URI represents a Pilosa URI. A Pilosa URI consists of three parts: 1) Scheme: Protocol of the URI. Default: http. 2) Host: Hostname or IP URI. Default: localhost. IPv6 addresses should be written in brackets, e.g., `[fd42:4201:f86b:7e09:216:3eff:fefa:ed80]`. 3) Port: Port of the URI. Default: 10101.

All parts of the URI are optional. The following are equivalent:

http://localhost:10101
http://localhost
http://:10101
localhost:10101
localhost
:10101

func DefaultURI

func DefaultURI() *URI

DefaultURI creates and returns the default URI.

func NewURIFromAddress

func NewURIFromAddress(address string) (*URI, error)

NewURIFromAddress parses the passed address and returns a URI.

func NewURIFromHostPort

func NewURIFromHostPort(host string, port uint16) (*URI, error)

NewURIFromHostPort returns a URI with specified host and port.

func URIFromAddress added in v0.8.0

func URIFromAddress(host string) *URI

URIFromAddress creates a URI from the given address.

func (URI) Equals

func (u URI) Equals(other *URI) bool

Equals returns true if the checked URI is equivalent to this URI.

func (*URI) Error added in v0.8.0

func (u *URI) Error() error

Error returns the error if this URI has one.

func (*URI) Host

func (u *URI) Host() string

Host returns the host of this URI.

func (*URI) HostPort added in v0.8.0

func (u *URI) HostPort() string

HostPort returns `Host:Port`

func (*URI) Normalize

func (u *URI) Normalize() string

Normalize returns the address in a form usable by a HTTP client.

func (*URI) Port

func (u *URI) Port() uint16

Port returns the port of this URI.

func (*URI) Scheme

func (u *URI) Scheme() string

Scheme returns the scheme of this URI.

func (*URI) SetHost added in v0.8.0

func (u *URI) SetHost(host string) error

SetHost sets the host of this URI.

func (*URI) SetPort added in v0.8.0

func (u *URI) SetPort(port uint16)

SetPort sets the port of this URI.

func (*URI) SetScheme added in v0.8.0

func (u *URI) SetScheme(scheme string) error

SetScheme sets the scheme of this URI.

func (*URI) Valid added in v0.8.0

func (u *URI) Valid() bool

Valid returns true if this is a valid URI.

type ValCountResult added in v0.9.0

type ValCountResult struct {
	Val int64 `json:"val"`
	Cnt int64 `json:"count"`
}

func (ValCountResult) Changed added in v0.9.0

func (ValCountResult) Changed() bool

func (ValCountResult) Count added in v0.9.0

func (c ValCountResult) Count() int64

func (ValCountResult) CountItems added in v0.9.0

func (ValCountResult) CountItems() []CountResultItem

func (ValCountResult) Row added in v0.10.0

func (ValCountResult) Row() RowResult

func (ValCountResult) Type added in v0.9.0

func (ValCountResult) Type() uint32

func (ValCountResult) Value added in v0.9.0

func (c ValCountResult) Value() int64

Directories

Path Synopsis
Package gopilosa_pbuf is a generated protocol buffer package.
Package gopilosa_pbuf is a generated protocol buffer package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL