search

package
v0.1.18 Latest Latest
Warning

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

Go to latest
Published: Jul 17, 2025 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoEngineAvailable = errors.New("no search engine available")
	ErrEngineNotFound    = errors.New("search engine not found")
)

Functions

This section is empty.

Types

type Client

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

Client unified search client with configuration support

func NewClient

func NewClient(es *elastic.Client, os *opensearch.Client, ms *meili.Client, collector metrics.Collector) *Client

NewClient creates new unified search client

func NewClientWithConfig added in v0.1.17

func NewClientWithConfig(es *elastic.Client, os *opensearch.Client, ms *meili.Client, collector metrics.Collector, searchConfig *config.Search) *Client

NewClientWithConfig creates new unified search client with search config

func NewClientWithPrefix added in v0.1.17

func NewClientWithPrefix(es *elastic.Client, os *opensearch.Client, ms *meili.Client, collector metrics.Collector, prefix string) *Client

NewClientWithPrefix creates new unified search client with index prefix

func (*Client) BulkDelete

func (c *Client) BulkDelete(ctx context.Context, index string, documentIDs []string) error

BulkDelete performs bulk deletion

func (*Client) BulkIndex

func (c *Client) BulkIndex(ctx context.Context, index string, documents []any) error

BulkIndex performs bulk indexing

func (*Client) BulkIndexWith

func (c *Client) BulkIndexWith(ctx context.Context, engine Engine, index string, documents []any) error

BulkIndexWith performs bulk indexing

func (*Client) Delete

func (c *Client) Delete(ctx context.Context, index, documentID string) error

Delete deletes document

func (*Client) GetAvailableEngines

func (c *Client) GetAvailableEngines() []Engine

GetAvailableEngines returns available engines

func (*Client) GetEngine

func (c *Client) GetEngine() Engine

GetEngine returns primary engine

func (*Client) GetIndexPrefix added in v0.1.17

func (c *Client) GetIndexPrefix() string

GetIndexPrefix returns the current index prefix

func (*Client) GetSearchConfig added in v0.1.17

func (c *Client) GetSearchConfig() *config.Search

GetSearchConfig returns current search configuration

func (*Client) Health

func (c *Client) Health(ctx context.Context) map[Engine]error

Health checks all engines health

func (*Client) Index

func (c *Client) Index(ctx context.Context, req *IndexRequest) error

Index indexes document

func (*Client) IndexWith

func (c *Client) IndexWith(ctx context.Context, engine Engine, req *IndexRequest) error

IndexWith indexes document

func (*Client) Search

func (c *Client) Search(ctx context.Context, req *Request) (*Response, error)

Search performs unified search

func (*Client) SearchWith

func (c *Client) SearchWith(ctx context.Context, engine Engine, req *Request) (*Response, error)

SearchWith searches using specified engine

func (*Client) SetIndexPrefix added in v0.1.17

func (c *Client) SetIndexPrefix(prefix string)

SetIndexPrefix sets the index prefix

func (*Client) UpdateSearchConfig added in v0.1.17

func (c *Client) UpdateSearchConfig(searchConfig *config.Search)

UpdateSearchConfig updates search configuration

type Engine

type Engine string

Engine represents search engine type

const (
	Elasticsearch Engine = "elasticsearch"
	OpenSearch    Engine = "opensearch"
	Meilisearch   Engine = "meilisearch"
)

type Hit

type Hit struct {
	ID     string         `json:"id"`
	Score  float64        `json:"score"`
	Source map[string]any `json:"source"`
}

Hit represents search result item

type IndexRequest

type IndexRequest struct {
	Index      string `json:"index"`
	DocumentID string `json:"document_id,omitempty"`
	Document   any    `json:"document"`
}

IndexRequest represents document indexing request

type Request

type Request struct {
	Index  string         `json:"index"`
	Query  string         `json:"query"`
	Filter map[string]any `json:"filter,omitempty"`
	From   int            `json:"from,omitempty"`
	Size   int            `json:"size,omitempty"`
}

Request represents unified search request

type Response

type Response struct {
	Total    int64         `json:"total"`
	Hits     []Hit         `json:"hits"`
	Duration time.Duration `json:"duration"`
	Engine   Engine        `json:"engine"`
}

Response represents unified search response

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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