Documentation
¶
Index ¶
- Constants
- func NewDefaultDocumentOptions() *documentOptions
- type Client
- type ClientEngines
- type CreateIndexOptions
- type DeleteQueryResponse
- type DocumentMeta
- type DocumentOption
- type Engine
- type EngineIndexes
- type EngineInfo
- type Index
- type IndexDocuments
- type IndexInfo
- type IndexName
- type TaskId
- type UpdateQueryResponse
- type UpsertResponse
- type UpsertResult
Constants ¶
const IndexNotFoundExceptionName = "index_not_found_exception"
Variables ¶
This section is empty.
Functions ¶
func NewDefaultDocumentOptions ¶ added in v0.0.123
func NewDefaultDocumentOptions() *documentOptions
Types ¶
type Client ¶
type Client interface {
// Init makes sure that the elastic server or cluster is configured for clinia
Init(ctx context.Context) error
// Clean makes sure the the elastic server or cluster removes all clinia configuration
Clean(ctx context.Context) error
ClientEngines
}
Client provides access to a single Elastic server, or an entire cluster of Elastic servers.
type ClientEngines ¶
type ClientEngines interface {
// Engine opens a connection to an exisiting engine.
// If no engine with given name exists, a NotFoundError is returned.
Engine(ctx context.Context, name string) (Engine, error)
// EngineExists returns true if an engine with given name exists.
EngineExists(ctx context.Context, name string) (bool, error)
// Engines returns a list of all engines found by the client.
Engines(ctx context.Context) ([]EngineInfo, error)
// CreateEngine creates a new engine with given name and opens a connection to it.
// If the a database with given name already exists, a DuplicateError is returned.
CreateEngine(ctx context.Context, name string) (Engine, error)
}
ClientEngines provides access to the engines in a single elastic server, or an entire cluster of elastic servers.
type CreateIndexOptions ¶
type CreateIndexOptions struct {
Aliases map[string]types.Alias
Settings *types.IndexSettings
Mappings *types.TypeMapping
}
CreateIndexOptions contains options that customize the creation of an index.
type DeleteQueryResponse ¶ added in v0.0.71
type DocumentMeta ¶
type DocumentOption ¶ added in v0.0.27
type DocumentOption func(*documentOptions)
func WithRefresh ¶ added in v0.0.27
func WithRefresh(refresh refresh.Refresh) DocumentOption
WithRefresh sets the refresh option of the document operation.
func WithWaitForCompletion ¶ added in v0.0.71
func WithWaitForCompletion(waitForCompletion bool) DocumentOption
type Engine ¶
type Engine interface {
// Name returns the name of the engine.
Name() string
// Info fetches the information about the engine.
Info(ctx context.Context) (*EngineInfo, error)
// Remove removes the entire engine.
// If the engine does not exists, a NotFoundError us returned
Remove(ctx context.Context) error
// Index functions
EngineIndexes
// Search performs a search request to Elastic Search
Search(ctx context.Context, query *search.Request, indices []string, opts ...elasticxsearch.Option) (*search.Response, error)
// Scroll performs a scroll request to Elastic Search
Scroll(ctx context.Context, req *scroll.Request) (*scroll.Response, error)
// MultiSearch performs a multi search request to Elastic Search
MultiSearch(ctx context.Context, items []elasticxmsearch.Item, opts ...elasticxmsearch.Option) (*msearch.Response, error)
// Bulk performs a bulk request to Elastic Search
Bulk(ctx context.Context, ops []elasticxbulk.Operation, opts ...elasticxbulk.Option) (*bulk.Response, error)
// MultiGet performs a multi get request to Elastic Search
MultiGet(ctx context.Context, items []types.MgetOperation) (*mget.Response, error)
}
Engine provides access to all indexes in a single engine.
type EngineIndexes ¶
type EngineIndexes interface {
// Index opens a connection to an exisiting index within the engine.
// If no index with given name exists, a NotFoundError is returned.
Index(ctx context.Context, name string) (Index, error)
// IndexLazy returns an Index handle for the given name without verifying its existence.
// No network call is made. If the index does not exist, operations on it will return a NotFoundError.
IndexLazy(ctx context.Context, name string) (Index, error)
// IndexExists returns true if an index with given name exists within the engine.
IndexExists(ctx context.Context, name string) (bool, error)
// Indexes returns a list of all indexes in the engine.
Indexes(ctx context.Context) ([]IndexInfo, error)
// CreateIndex creates a new index,
// with given name, and opens a connection to it.
CreateIndex(ctx context.Context, name string, options *CreateIndexOptions) (Index, error)
}
EngineIndexes provides access to all indexes in a single engine.
type EngineInfo ¶
type EngineInfo struct {
// The name of the engine.
Name string `json:"name,omitempty"`
}
type Index ¶
type Index interface {
// Name returns the name of the index.
Info() IndexInfo
// Engine returns the engine containing the index.
Engine() Engine
// Remove removes the entire index.
// If the index does not exists, a NotFoundError is returned.
Remove(ctx context.Context) error
// UpdateMappings updates the index mappings.
UpdateMappings(ctx context.Context, mappings *types.TypeMapping) error
// All document functions
IndexDocuments
}
Index provides access to the information of an index.
type IndexDocuments ¶
type IndexDocuments interface {
// DocumentExists checks if a document with given id exists in the index.
DocumentExists(ctx context.Context, id string) (bool, error)
// ReadDocument reads a single document with given id from the index.
// The document data is stored into result, the document metadata is returned.
// If no document exists with given id, a NotFoundError is returned.
ReadDocument(ctx context.Context, id string, result interface{}) (*DocumentMeta, error)
// CreateDocument creates a single document in the index.
// The document data is loaded from the given document, the document metadata is returned.
// If the document data already contains a `_key` field, this will be used as key of the new document,
// otherwise a unique key is created.
CreateDocument(ctx context.Context, document interface{}, opts ...DocumentOption) (*DocumentMeta, error)
// UpsertDocument upserts a single document with given key in the collection with the document given in the document argument.
// The document metadata is returned.
UpsertDocument(ctx context.Context, key string, document interface{}, opts ...DocumentOption) (*UpsertResponse[DocumentMeta], error)
// DeleteDocument deletes a single document with given key in the collection.
// No error is returned when the document is successfully deleted.
// If no document exists with given key, a NotFoundError is returned.
DeleteDocument(ctx context.Context, key string, opts ...DocumentOption) error
// DeleteDocumentsByQuery deletes all documents satisfying the query.
// No error is returned when the documents are deleted
// If the query fails, an error is returned.
// The number of deleted document and the async taskId is returned.
DeleteDocumentsByQuery(ctx context.Context, query *types.Query, opts ...DocumentOption) (*DeleteQueryResponse, error)
// UpdateDocumentsByQuery updates all documents satisfying the query and runs the given updateScript.
// No error is returned when the documents are updated.
// If the query fails, an error is returned.
// The number of updated documents and the async taskId is returned.
UpdateDocumentsByQuery(ctx context.Context, query *types.Query, updateScript *types.Script, opts ...DocumentOption) (*UpdateQueryResponse, error)
}
type IndexName ¶ added in v0.0.27
type IndexName string
func FullIndexName ¶ added in v0.0.119
FullIndexName create an index name with the base clinia segement, the engine name and the app index name e.g. "clinia-engines~<engine-name~<...elements>"
func NewIndexName ¶ added in v0.0.27
func (IndexName) EngineName ¶ added in v0.0.27
EngineName returns the engine name from the index name. If the index name doesn't contain the base segment, it means that the engine name is at index 0. If the index name contains the base segment, the engine name is at index 1.
func (IndexName) Name ¶ added in v0.0.27
Name returns the app index name from the index name. If the index name doesn't contain the base segment, it means that the app index name is all the segments from index 1. If the index name contains the base segment, the app index name is all the segments from index 2.
type UpdateQueryResponse ¶ added in v0.0.122
type UpsertResponse ¶ added in v0.0.70
type UpsertResponse[T any] struct { Result UpsertResult `json:"result"` Meta T `json:"meta"` }
type UpsertResult ¶ added in v0.0.70
type UpsertResult string
const ( UpsertResultCreated UpsertResult = "created" UpsertResultUpdated UpsertResult = "updated" )
func (UpsertResult) Created ¶ added in v0.0.70
func (ur UpsertResult) Created() bool
func (UpsertResult) String ¶ added in v0.0.70
func (ur UpsertResult) String() string
func (UpsertResult) Updated ¶ added in v0.0.70
func (ur UpsertResult) Updated() bool