query

package
v9.0.0 Latest Latest
Warning

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

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

Documentation

Overview

Get SQL search results. Run an SQL request.

Index

Constants

This section is empty.

Variables

View Source
var ErrBuildPath = errors.New("cannot build path, check for missing path parameters")

ErrBuildPath is returned in case of missing parameters within the build of the request.

Functions

This section is empty.

Types

type NewQuery

type NewQuery func() *Query

NewQuery type alias for index.

func NewQueryFunc

func NewQueryFunc(tp elastictransport.Interface) NewQuery

NewQueryFunc returns a new instance of Query with the provided transport. Used in the index of the library this allows to retrieve every apis in once place.

type Query

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

func (*Query) AddParam

func (r *Query) AddParam(key string, value json.RawMessage) *Query

func (*Query) AllowPartialSearchResults

func (r *Query) AllowPartialSearchResults(allowpartialsearchresults bool) *Query

If `true`, the response has partial results when there are shard request timeouts or shard failures. If `false`, the API returns an error with no partial results. API name: allow_partial_search_results

func (*Query) Catalog

func (r *Query) Catalog(catalog string) *Query

The default catalog (cluster) for queries. If unspecified, the queries execute on the data in the local cluster only. API name: catalog

func (*Query) Columnar

func (r *Query) Columnar(columnar bool) *Query

If `true`, the results are in a columnar fashion: one row represents all the values of a certain column from the current page of results. The API supports this parameter only for CBOR, JSON, SMILE, and YAML responses. API name: columnar

func (*Query) Cursor

func (r *Query) Cursor(cursor string) *Query

The cursor used to retrieve a set of paginated results. If you specify a cursor, the API only uses the `columnar` and `time_zone` request body parameters. It ignores other request body parameters. API name: cursor

func (Query) Do

func (r Query) Do(providedCtx context.Context) (*Response, error)

Do runs the request through the transport, handle the response and returns a query.Response

func (*Query) ErrorTrace

func (r *Query) ErrorTrace(errortrace bool) *Query

ErrorTrace When set to `true` Elasticsearch will include the full stack trace of errors when they occur. API name: error_trace

func (*Query) FetchSize

func (r *Query) FetchSize(fetchsize int) *Query

The maximum number of rows (or entries) to return in one response. API name: fetch_size

func (*Query) FieldMultiValueLeniency

func (r *Query) FieldMultiValueLeniency(fieldmultivalueleniency bool) *Query

If `false`, the API returns an exception when encountering multiple values for a field. If `true`, the API is lenient and returns the first value from the array with no guarantee of consistent results. API name: field_multi_value_leniency

func (*Query) Filter

func (r *Query) Filter(filter types.QueryVariant) *Query

The Elasticsearch query DSL for additional filtering. API name: filter

func (*Query) FilterPath

func (r *Query) FilterPath(filterpaths ...string) *Query

FilterPath Comma-separated list of filters in dot notation which reduce the response returned by Elasticsearch. API name: filter_path

func (*Query) Format

func (r *Query) Format(format sqlformat.SqlFormat) *Query

Format The format for the response. You can also specify a format using the `Accept` HTTP header. If you specify both this parameter and the `Accept` HTTP header, this parameter takes precedence. API name: format

func (*Query) Header

func (r *Query) Header(key, value string) *Query

Header set a key, value pair in the Query headers map.

func (*Query) HttpRequest

func (r *Query) HttpRequest(ctx context.Context) (*http.Request, error)

HttpRequest returns the http.Request object built from the given parameters.

func (*Query) Human

func (r *Query) Human(human bool) *Query

Human When set to `true` will return statistics in a format suitable for humans. For example `"exists_time": "1h"` for humans and `"eixsts_time_in_millis": 3600000` for computers. When disabled the human readable values will be omitted. This makes sense for responses being consumed only by machines. API name: human

func (*Query) IndexUsingFrozen

func (r *Query) IndexUsingFrozen(indexusingfrozen bool) *Query

If `true`, the search can run on frozen indices. API name: index_using_frozen

func (*Query) KeepAlive

func (r *Query) KeepAlive(duration types.DurationVariant) *Query

The retention period for an async or saved synchronous search. API name: keep_alive

func (*Query) KeepOnCompletion

func (r *Query) KeepOnCompletion(keeponcompletion bool) *Query

If `true`, Elasticsearch stores synchronous searches if you also specify the `wait_for_completion_timeout` parameter. If `false`, Elasticsearch only stores async searches that don't finish before the `wait_for_completion_timeout`. API name: keep_on_completion

func (*Query) PageTimeout

func (r *Query) PageTimeout(duration types.DurationVariant) *Query

The minimum retention period for the scroll cursor. After this time period, a pagination request might fail because the scroll cursor is no longer available. Subsequent scroll requests prolong the lifetime of the scroll cursor by the duration of `page_timeout` in the scroll request. API name: page_timeout

func (*Query) Params

func (r *Query) Params(params map[string]json.RawMessage) *Query

The values for parameters in the query. API name: params

func (Query) Perform

func (r Query) Perform(providedCtx context.Context) (*http.Response, error)

Perform runs the http.Request through the provided transport and returns an http.Response.

func (*Query) Pretty

func (r *Query) Pretty(pretty bool) *Query

Pretty If set to `true` the returned JSON will be "pretty-formatted". Only use this option for debugging only. API name: pretty

func (*Query) Query

func (r *Query) Query(query string) *Query

The SQL query to run. API name: query

func (*Query) Raw

func (r *Query) Raw(raw io.Reader) *Query

Raw takes a json payload as input which is then passed to the http.Request If specified Raw takes precedence on Request method.

func (*Query) Request

func (r *Query) Request(req *Request) *Query

Request allows to set the request property with the appropriate payload.

func (*Query) RequestTimeout

func (r *Query) RequestTimeout(duration types.DurationVariant) *Query

The timeout before the request fails. API name: request_timeout

func (*Query) RuntimeMappings

func (r *Query) RuntimeMappings(runtimefields types.RuntimeFieldsVariant) *Query

One or more runtime fields for the search request. These fields take precedence over mapped fields with the same name. API name: runtime_mappings

func (*Query) TimeZone

func (r *Query) TimeZone(timezone string) *Query

The ISO-8601 time zone ID for the search. API name: time_zone

func (*Query) WaitForCompletionTimeout

func (r *Query) WaitForCompletionTimeout(duration types.DurationVariant) *Query

The period to wait for complete results. It defaults to no timeout, meaning the request waits for complete search results. If the search doesn't finish within this period, the search becomes async.

To save a synchronous search, you must specify this parameter and the `keep_on_completion` parameter. API name: wait_for_completion_timeout

type Request

type Request struct {

	// AllowPartialSearchResults If `true`, the response has partial results when there are shard request
	// timeouts or shard failures.
	// If `false`, the API returns an error with no partial results.
	AllowPartialSearchResults *bool `json:"allow_partial_search_results,omitempty"`
	// Catalog The default catalog (cluster) for queries.
	// If unspecified, the queries execute on the data in the local cluster only.
	Catalog *string `json:"catalog,omitempty"`
	// Columnar If `true`, the results are in a columnar fashion: one row represents all the
	// values of a certain column from the current page of results.
	// The API supports this parameter only for CBOR, JSON, SMILE, and YAML
	// responses.
	Columnar *bool `json:"columnar,omitempty"`
	// Cursor The cursor used to retrieve a set of paginated results.
	// If you specify a cursor, the API only uses the `columnar` and `time_zone`
	// request body parameters.
	// It ignores other request body parameters.
	Cursor *string `json:"cursor,omitempty"`
	// FetchSize The maximum number of rows (or entries) to return in one response.
	FetchSize *int `json:"fetch_size,omitempty"`
	// FieldMultiValueLeniency If `false`, the API returns an exception when encountering multiple values
	// for a field.
	// If `true`, the API is lenient and returns the first value from the array with
	// no guarantee of consistent results.
	FieldMultiValueLeniency *bool `json:"field_multi_value_leniency,omitempty"`
	// Filter The Elasticsearch query DSL for additional filtering.
	Filter *types.Query `json:"filter,omitempty"`
	// IndexUsingFrozen If `true`, the search can run on frozen indices.
	IndexUsingFrozen *bool `json:"index_using_frozen,omitempty"`
	// KeepAlive The retention period for an async or saved synchronous search.
	KeepAlive types.Duration `json:"keep_alive,omitempty"`
	// KeepOnCompletion If `true`, Elasticsearch stores synchronous searches if you also specify the
	// `wait_for_completion_timeout` parameter.
	// If `false`, Elasticsearch only stores async searches that don't finish before
	// the `wait_for_completion_timeout`.
	KeepOnCompletion *bool `json:"keep_on_completion,omitempty"`
	// PageTimeout The minimum retention period for the scroll cursor.
	// After this time period, a pagination request might fail because the scroll
	// cursor is no longer available.
	// Subsequent scroll requests prolong the lifetime of the scroll cursor by the
	// duration of `page_timeout` in the scroll request.
	PageTimeout types.Duration `json:"page_timeout,omitempty"`
	// Params The values for parameters in the query.
	Params map[string]json.RawMessage `json:"params,omitempty"`
	// Query The SQL query to run.
	Query *string `json:"query,omitempty"`
	// RequestTimeout The timeout before the request fails.
	RequestTimeout types.Duration `json:"request_timeout,omitempty"`
	// RuntimeMappings One or more runtime fields for the search request.
	// These fields take precedence over mapped fields with the same name.
	RuntimeMappings types.RuntimeFields `json:"runtime_mappings,omitempty"`
	// TimeZone The ISO-8601 time zone ID for the search.
	TimeZone *string `json:"time_zone,omitempty"`
	// WaitForCompletionTimeout The period to wait for complete results.
	// It defaults to no timeout, meaning the request waits for complete search
	// results.
	// If the search doesn't finish within this period, the search becomes async.
	//
	// To save a synchronous search, you must specify this parameter and the
	// `keep_on_completion` parameter.
	WaitForCompletionTimeout types.Duration `json:"wait_for_completion_timeout,omitempty"`
}

Request holds the request body struct for the package query

https://github.com/elastic/elasticsearch-specification/blob/52c473efb1fb5320a5bac12572d0b285882862fb/specification/sql/query/QuerySqlRequest.ts#L28-L152

func NewRequest

func NewRequest() *Request

NewRequest returns a Request

func (*Request) FromJSON

func (r *Request) FromJSON(data string) (*Request, error)

FromJSON allows to load an arbitrary json into the request structure

func (*Request) UnmarshalJSON

func (s *Request) UnmarshalJSON(data []byte) error

type Response

type Response struct {

	// Columns Column headings for the search results. Each object is a column.
	Columns []types.Column `json:"columns,omitempty"`
	// Cursor The cursor for the next set of paginated results.
	// For CSV, TSV, and TXT responses, this value is returned in the `Cursor` HTTP
	// header.
	Cursor *string `json:"cursor,omitempty"`
	// Id The identifier for the search.
	// This value is returned only for async and saved synchronous searches.
	// For CSV, TSV, and TXT responses, this value is returned in the `Async-ID`
	// HTTP header.
	Id *string `json:"id,omitempty"`
	// IsPartial If `true`, the response does not contain complete search results.
	// If `is_partial` is `true` and `is_running` is `true`, the search is still
	// running.
	// If `is_partial` is `true` but `is_running` is `false`, the results are
	// partial due to a failure or timeout.
	// This value is returned only for async and saved synchronous searches.
	// For CSV, TSV, and TXT responses, this value is returned in the
	// `Async-partial` HTTP header.
	IsPartial *bool `json:"is_partial,omitempty"`
	// IsRunning If `true`, the search is still running.
	// If `false`, the search has finished.
	// This value is returned only for async and saved synchronous searches.
	// For CSV, TSV, and TXT responses, this value is returned in the
	// `Async-partial` HTTP header.
	IsRunning *bool `json:"is_running,omitempty"`
	// Rows The values for the search results.
	Rows [][]json.RawMessage `json:"rows"`
}

Response holds the response body struct for the package query

https://github.com/elastic/elasticsearch-specification/blob/52c473efb1fb5320a5bac12572d0b285882862fb/specification/sql/query/QuerySqlResponse.ts#L23-L60

func NewResponse

func NewResponse() *Response

NewResponse returns a Response