elastic

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Dec 16, 2024 License: AGPL-3.0 Imports: 34 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ElasticsearchConfigSourceFile          = "file"
	ElasticsearchConfigSourceElasticsearch = "elastic"
)
View Source
const (
	ModeAgent     = "agent"
	ModeAgentless = "agentless"
)
View Source
const (
	Elasticsearch = "elasticsearch"
	Easysearch    = "easysearch"
	Opensearch    = "opensearch"
)
View Source
const (
	PartitionByDate    = "date"
	PartitionByKeyword = "keyword"
	PartitionByNumber  = "number"
)
View Source
const GlobalSystemElasticsearchID = "global_system_elasticsearch_id"
View Source
const KVElasticClusterSettings = "kv_elastic_cluster_settings"
View Source
const KVElasticIndexMetadata = "kv_elastic_index_metadata"
View Source
const KVElasticNodeMetadata = "kv_elastic_node_metadata"
View Source
const QueueElasticIndexHealthStatus = "elasticsearch##metadata##index_health_change"
View Source
const QueueElasticIndexState = "elasticsearch##metadata##index_state_change_v1"

Variables

View Source
var ActionCreate = "create"
View Source
var ActionDelete = "delete"
View Source
var ActionEnd = []byte("\"")
View Source
var ActionIndex = "index"
View Source
var ActionStart = []byte("\"")
View Source
var ActionUpdate = "update"
View Source
var Actions = []string{"index", "delete", "create", "update"}
View Source
var DefaultBulkProcessorConfig = BulkProcessorConfig{
	BulkMaxDocsCount:     1000,
	BulkSizeInMb:         10,
	Compress:             false,
	RetryDelayInSeconds:  1,
	RejectDelayInSeconds: 1,
	MaxRejectRetryTimes:  0,

	DeadletterRequestsQueue: "bulk_dead_requests",
	InvalidRequestsQueue:    "bulk_invalid_requests",
	BulkResponseParseConfig: BulkResponseParseConfig{
		BulkResultMessageMaxRequestBodyLength:  10 * 1024,
		BulkResultMessageMaxResponseBodyLength: 10 * 1024,

		BulkResultMessageQueue: "bulk_result_messages",

		SaveSuccessBulkResultToMessageQueue: false,
		SaveErrorBulkResultToMessageQueue:   true,
		SaveBusyBulkResultToMessageQueue:    true,
		OutputBulkStats:                     false,

		IncludeErrorDetails:        true,
		IncludeIndexStats:          true,
		IncludeActionStats:         true,
		MaxItemOfErrorDetailsCount: 50,
	},
	RetryRules:             RetryRules{Retry429: true, Default: true, Retry4xx: false},
	RequestTimeoutInSecond: 60,
}
View Source
var NEWLINEBYTES = []byte("\n")

Functions

func Abs

func Abs(x int) int

func BuildSearchHighlight

func BuildSearchHighlight(highlightParam *SearchHighlightParam) util.MapStr

func BuildSearchTermAggregations

func BuildSearchTermAggregations(params []SearchAggParam) util.MapStr

func BuildSearchTermFilter

func BuildSearchTermFilter(filterParam SearchFilterParam) []util.MapStr

func GetDateHistogramIntervalField

func GetDateHistogramIntervalField(distribution, version string, bucketSize string) (string, error)

func GetIndexTypes

func GetIndexTypes(client API, indexName string) (map[string]interface{}, error)

func GetShardID

func GetShardID(esMajorVersion int, docID []byte, numberOfShards int) int

func GetShardIDWithRoutingOffset

func GetShardIDWithRoutingOffset(esMajorVersion int, docID []byte, numberOfShards int, routingNumShards int, partitionOffset int) int

func IsHostAvailable

func IsHostAvailable(host string) bool

func IsHostDead

func IsHostDead(host string) bool

func ParseActionMeta

func ParseActionMeta(data []byte) (action, index, typeName, id, routing string, err error)

func ParseUrlLevelBulkMeta

func ParseUrlLevelBulkMeta(pathStr string) (urlLevelIndex, urlLevelType string)

func RegisterInstance

func RegisterInstance(cfg ElasticsearchConfig, handler API)

* 注册elastic实例,初始化elastic metadata并保存到metas(sync.Map{})

cfg.ID = cfg.Name = 集群名称

把handle(API)保存到apis(sync.Map)

把ElasticsearchConfig保存到cfgs(sync.Map)

func RegisterMetadataChangeEvent

func RegisterMetadataChangeEvent(evt MetadataChangeEvent)

RegisterMetadataChangeEvent register a metadata change event

func RemoveDotFromIndexName

func RemoveDotFromIndexName(indexName, dotReplaceTo string) string

func RemoveHostsByClusterID

func RemoveHostsByClusterID(clusterID string)

func RemoveInstance

func RemoveInstance(elastic string)

func SafetyAddNewlineBetweenData

func SafetyAddNewlineBetweenData(buffer *bytebufferpool.ByteBuffer, data []byte)

func SetMetadata

func SetMetadata(k string, v *ElasticsearchMetadata)

func UpdateClient

func UpdateClient(cfg ElasticsearchConfig, handler API)

func UpdateConfig

func UpdateConfig(cfg ElasticsearchConfig)

func ValidateBulkRequest

func ValidateBulkRequest(where, body string)

func WalkBulkRequests

func WalkBulkRequests(data []byte, eachLineFunc func(eachLine []byte) (skipNextLine bool),
	metaFunc func(metaBytes []byte, actionStr, index, typeName, id, routing string, offset int) (err error),
	payloadFunc func(payloadBytes []byte, actionStr, index, typeName, id, routing string),
	operationFunc func(actionStr, index, typeName, id, routing string)) (int, error)

func WalkConfigs

func WalkConfigs(walkFunc func(key, value interface{}) bool)

func WalkHosts

func WalkHosts(walkFunc func(key, value interface{}) bool)

func WalkMetadata

func WalkMetadata(walkFunc func(key, value interface{}) bool)

最后返回的为判断是否继续 walk

Types

type AAIR_Alias

type AAIR_Alias struct {
	Name    string   `json:"name"`
	Indices []string `json:"indices"`
}

type AAIR_Indices

type AAIR_Indices struct {
	Name       string   `json:"name"`
	Attributes []string `json:"attributes"`
	Aliases    []string `json:"aliases,omitempty"`
}

type API

type API interface {
	ScrollAPI
	MappingAPI
	TemplateAPI
	ReplicationAPI
	SecurityAPI
	ScriptAPI

	InitDefaultTemplate(templateName, indexPrefix string)

	GetMajorVersion() int

	ClusterHealth(ctx context.Context) (*ClusterHealth, error)
	ClusterHealthSpecEndpoint(ctx context.Context, endPoint string, level string) (*ClusterHealth, error)

	GetClusterState() (*ClusterState, error)

	GetClusterStats(ctx context.Context, node string) (*ClusterStats, error)
	GetClusterStatsSpecEndpoint(ctx context.Context, node string, endPoint string) (*ClusterStats, error)

	GetNodesStats(nodeID, host string, level string) *NodesStats

	GetIndicesStats() *IndicesStats

	GetVersion() Version

	CreateIndex(name string, settings map[string]interface{}) error

	Index(indexName, docType string, id interface{}, data interface{}, refresh string) (*InsertResponse, error)

	Update(indexName, docType string, id interface{}, data interface{}, refresh string) (*InsertResponse, error)

	Bulk(data []byte) (*util.Result, error)

	Get(indexName, docType, id string) (*GetResponse, error)
	Delete(indexName, docType, id string, refresh ...string) (*DeleteResponse, error)
	Count(ctx context.Context, indexName string, body []byte) (*CountResponse, error)
	Search(indexName string, query *SearchRequest) (*SearchResponse, error)

	QueryDSL(ctx context.Context, indexName string, queryArgs *[]util.KV, queryDSL []byte) (*SearchResponse, error)

	SearchWithRawQueryDSL(indexName string, queryDSL []byte) (*SearchResponse, error)

	GetIndexSettings(indexNames string) (*util.MapStr, error)
	UpdateIndexSettings(indexName string, settings map[string]interface{}) error

	IndexExists(indexName string) (bool, error)

	DeleteIndex(name string) error

	Refresh(name string) (err error)

	GetNodes() (*map[string]NodesInfo, error)

	GetNodeInfo(nodeID string) (*NodesInfo, error)

	GetIndices(pattern string) (*map[string]IndexInfo, error)

	GetPrimaryShards() (*map[string]map[int]ShardInfo, error)
	GetAliases() (*map[string]AliasInfo, error)
	GetAliasesDetail() (*map[string]AliasDetailInfo, error)
	GetAliasesAndIndices() (*AliasAndIndicesResponse, error)

	SearchTasksByIds(ids []string) (*SearchResponse, error)
	Reindex(body []byte) (*ReindexResponse, error)
	DeleteByQuery(indexName string, body []byte) (*DeleteByQueryResponse, error)
	UpdateByQuery(indexName string, body []byte) (*UpdateByQueryResponse, error)

	GetIndexStats(indexName string) (*util.MapStr, error)
	GetStats() (*Stats, error)
	Forcemerge(indexName string, maxCount int) error
	SetSearchTemplate(templateID string, body []byte) error
	DeleteSearchTemplate(templateID string) error
	RenderTemplate(body map[string]interface{}) ([]byte, error)
	SearchTemplate(body map[string]interface{}) ([]byte, error)
	Alias(body []byte) error
	FieldCaps(target string) ([]byte, error)
	CatShards() ([]CatShardResponse, error)
	CatShardsSpecEndpoint(endPoint string) ([]CatShardResponse, error)
	CatNodes(colStr string) ([]CatNodeResponse, error)

	GetIndexRoutingTable(index string) (map[string][]IndexShardRouting, error)
	GetClusterSettings(values url.Values) (map[string]interface{}, error)
	UpdateClusterSettings(body []byte) error
	GetIndex(indexName string) (map[string]interface{}, error)
	Exists(target string) (bool, error)
	GetILMPolicy(target string) (map[string]interface{}, error)
	PutILMPolicy(target string, policyConfig []byte) error
	DeleteILMPolicy(target string) error
	GetRemoteInfo() ([]byte, error)
	Flush(indexName string) ([]byte, error)
}

func GetClient

func GetClient(k string) API

func GetClientNoPanic

func GetClientNoPanic(k string) API

add by ck

type APIContext

type APIContext struct {
	context.Context `json:"-"`
	Client          *fasthttp.Client
	Request         *fasthttp.Request
	Response        *fasthttp.Response
}

type Aggregation

type Aggregation struct {
}

type AggregationRequest

type AggregationRequest struct {
	Aggregations map[string]Aggregation `json:"aggregations,omitempty"`
}

type AggregationResponse

type AggregationResponse struct {
	Buckets []BucketBase `json:"buckets,omitempty"`
	Value   interface{}  `json:"value,omitempty"`
}

type AliasAction

type AliasAction map[string]map[string]interface{}

type AliasActionBody

type AliasActionBody struct {
	Index         string                 `json:"index,omitempty"`
	Alias         string                 `json:"alias"`
	Indices       []string               `json:"indices,omitempty"`
	Filter        map[string]interface{} `json:"filter,omitempty"`
	Routing       string                 `json:"routing,omitempty"`
	SearchRouting string                 `json:"search_routing,omitempty"`
	IndexRouting  string                 `json:"index_routing,omitempty"`
	IsWriteIndex  bool                   `json:"is_write_index,omitempty"`
}

type AliasAndIndicesResponse

type AliasAndIndicesResponse struct {
	Aliases []AAIR_Alias   `json:"aliases"`
	Indices []AAIR_Indices `json:"indices"`
}

type AliasDetailInfo

type AliasDetailInfo struct {
	Alias      string       `json:"alias,omitempty"`
	Indexes    []AliasIndex `json:"indexes,omitempty"`
	WriteIndex string       `json:"write_index,omitempty"`
}

type AliasIndex

type AliasIndex struct {
	Index         string      `json:"index"`
	Filter        interface{} `json:"filter"`
	IndexRouting  string      `json:"index_routing"`
	SearchRouting string      `json:"search_routing"`
	IsHidden      bool        `json:"is_hidden"`
	IsWriteIndex  bool        `json:"is_write_index"`
}

type AliasInfo

type AliasInfo struct {
	Alias      string   `json:"alias,omitempty"`
	Index      []string `json:"index,omitempty"`
	WriteIndex string   `json:"write_index,omitempty"`
}

type AliasRequest

type AliasRequest struct {
	Actions []AliasAction `json:"actions"`
}

type BoolQuery

type BoolQuery struct {
	Must    []interface{} `json:"must,omitempty"`
	MustNot []interface{} `json:"must_not,omitempty"`
	Should  []interface{} `json:"should,omitempty"`
}

BoolQuery wrapper queries

type BoundValuesResult

type BoundValuesResult struct {
	Min             float64
	Max             float64
	Null            int64
	NotExistsFilter map[string]interface{}
}

type Bucket

type Bucket struct {
	KeyAsString interface{} `json:"key_as_string,omitempty"`
	Key         interface{} `json:"key,omitempty"`
	DocCount    int64       `json:"doc_count,omitempty"`
}

type BucketBase

type BucketBase map[string]interface{}

type BulkActionMetadata

type BulkActionMetadata struct {
	Index  *BulkIndexMetadata `json:"index,omitempty"`
	Delete *BulkIndexMetadata `json:"delete,omitempty"`
	Create *BulkIndexMetadata `json:"create,omitempty"`
	Update *BulkIndexMetadata `json:"update,omitempty"`
	Stats  int                `json:"-,omitempty"`
}

func (*BulkActionMetadata) GetItem

func (meta *BulkActionMetadata) GetItem() *BulkIndexMetadata

type BulkBuffer

type BulkBuffer struct {
	Queue string

	MessageIDs []string
	Reason     []string
	// contains filtered or unexported fields
}

func (*BulkBuffer) Add

func (receiver *BulkBuffer) Add(id string, data []byte)

func (*BulkBuffer) GetMessageBytes

func (receiver *BulkBuffer) GetMessageBytes() []byte

func (*BulkBuffer) GetMessageCount

func (receiver *BulkBuffer) GetMessageCount() int

func (*BulkBuffer) GetMessageSize

func (receiver *BulkBuffer) GetMessageSize() int

func (*BulkBuffer) Reset

func (receiver *BulkBuffer) Reset()

func (*BulkBuffer) ResetData

func (receiver *BulkBuffer) ResetData()

func (*BulkBuffer) SafetyEndWithNewline

func (receiver *BulkBuffer) SafetyEndWithNewline()

func (*BulkBuffer) Write

func (receiver *BulkBuffer) Write(data []byte)

func (*BulkBuffer) WriteByteBuffer

func (receiver *BulkBuffer) WriteByteBuffer(data []byte)

func (*BulkBuffer) WriteErrorReason

func (receiver *BulkBuffer) WriteErrorReason(reason string)

func (*BulkBuffer) WriteMessageID

func (receiver *BulkBuffer) WriteMessageID(id string)

func (*BulkBuffer) WriteNewByteBufferLine

func (receiver *BulkBuffer) WriteNewByteBufferLine(tag string, data []byte)

func (*BulkBuffer) WriteStringBuffer

func (receiver *BulkBuffer) WriteStringBuffer(data string)

type BulkBufferPool

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

func NewBulkBufferPool

func NewBulkBufferPool(tag string, maxSize, maxItems uint32) *BulkBufferPool

func (*BulkBufferPool) AcquireBulkBuffer

func (pool *BulkBufferPool) AcquireBulkBuffer() *BulkBuffer

func (*BulkBufferPool) ReturnBulkBuffer

func (pool *BulkBufferPool) ReturnBulkBuffer(item *BulkBuffer)

type BulkDetail

type BulkDetail struct {
	Failure BulkDetailItem `json:"failure,omitempty"`
	Invalid BulkDetailItem `json:"invalid,omitempty"`
}

type BulkDetailItem

type BulkDetailItem struct {
	Documents []string `json:"documents,omitempty"`
	Reasons   []string `json:"reasons,omitempty"`
}

type BulkIndexMetadata

type BulkIndexMetadata struct {
	Index           string      `json:"_index,omitempty"`
	Type            string      `json:"_type,omitempty"`
	ID              string      `json:"_id,omitempty"`
	Pipeline        string      `json:"pipeline,omitempty"`
	Refresh         string      `json:"refresh,omitempty"`
	Source          interface{} `json:"_source,omitempty"`
	SourceExcludes  interface{} `json:"_source_excludes,omitempty"`
	SourceIncludes  interface{} `json:"_source_includes,omitempty"`
	RetryOnConflict interface{} `json:"retry_on_conflict,omitempty"`
	RequireAlias    interface{} `json:"require_alias,omitempty"`
	Parent1         interface{} `json:"_parent,omitempty"`
	Parent2         interface{} `json:"parent,omitempty"`
	Routing1        interface{} `json:"routing,omitempty"`
	Routing2        interface{} `json:"_routing,omitempty"`
	Version1        interface{} `json:"_version,omitempty"`
	Version2        interface{} `json:"version,omitempty"`

	//for bulk response
	Result      string    `json:"result,omitempty"`
	SeqNo       int64     `json:"_seq_no,omitempty"`
	PrimaryTerm int64     `json:"_primary_term,omitempty"`
	Shards      *struct{} `json:"_shards,omitempty"`

	ErrorResponse
}

type BulkProcessor

type BulkProcessor struct {
	Config         BulkProcessorConfig
	BulkBufferPool *BulkBufferPool
	HttpPool       *fasthttp.RequestResponsePool
}

func NewBulkProcessor

func NewBulkProcessor(tag, esClusterID string, cfg BulkProcessorConfig) BulkProcessor

func (*BulkProcessor) Bulk

func (joint *BulkProcessor) Bulk(ctx context.Context, tag string, metadata *ElasticsearchMetadata, host string, buffer *BulkBuffer) (continueNext bool, statsRet map[int]int, bulkResult *BulkResult, err error)

bulkResult is valid only if max_reject_retry_times == 0

type BulkProcessorConfig

type BulkProcessorConfig struct {
	BulkSizeInKb     int `config:"batch_size_in_kb,omitempty"`
	BulkSizeInMb     int `config:"batch_size_in_mb,omitempty"`
	BulkMaxDocsCount int `config:"batch_size_in_docs,omitempty"`

	Compress               bool `config:"compress"`
	RetryDelayInSeconds    int  `config:"retry_delay_in_seconds"`
	RejectDelayInSeconds   int  `config:"reject_retry_delay_in_seconds"`
	MaxRejectRetryTimes    int  `config:"max_reject_retry_times"`
	RequestTimeoutInSecond int  `config:"request_timeout_in_second"`

	InvalidRequestsQueue    string `config:"invalid_queue"`
	DeadletterRequestsQueue string `config:"dead_letter_queue"`

	RetryRules RetryRules `config:"retry_rules"`

	BulkResponseParseConfig BulkResponseParseConfig `config:"response_handle"`

	RemoveDuplicatedNewlines bool `config:"remove_duplicated_newlines"`
	// contains filtered or unexported fields
}

func (*BulkProcessorConfig) GetBulkSizeInBytes

func (this *BulkProcessorConfig) GetBulkSizeInBytes() int

type BulkResponse

type BulkResponse struct {
	Took   int                  `json:"took"`
	Errors bool                 `json:"errors"`
	Items  []BulkActionMetadata `json:"items"`
}

type BulkResponseParseConfig

type BulkResponseParseConfig struct {
	SaveSuccessBulkResultToMessageQueue bool `config:"save_success_results"`
	SaveErrorBulkResultToMessageQueue   bool `config:"save_error_results"`
	SaveBusyBulkResultToMessageQueue    bool `config:"save_busy_results"`

	//save bulk results to message queue, include versions
	OutputVersions          bool   `config:"output_result_versions"`
	ResultVersionsQueueName string `config:"result_versions_queue_name"`

	OutputBulkStats    bool `config:"output_bulk_stats"`
	IncludeIndexStats  bool `config:"include_index_stats"`
	IncludeActionStats bool `config:"include_action_stats"`

	IncludeErrorDetails        bool `config:"include_error_details"`
	MaxItemOfErrorDetailsCount int  `config:"max_error_details_count"`

	BulkResultMessageQueue                 string `config:"bulk_result_message_queue"`
	BulkResultMessageMaxRequestBodyLength  int    `config:"max_request_body_size"`
	BulkResultMessageMaxResponseBodyLength int    `config:"max_response_body_size"`
}

type BulkResult

type BulkResult struct {
	Error     bool          `json:"error,omitempty"`
	ErrorMsgs []string      `json:"error_msgs,omitempty"`
	Codes     []int         `json:"codes,omitempty"`
	Indices   []string      `json:"indices,omitempty"`
	Actions   []string      `json:"actions,omitempty"`
	Summary   BulkSummary   `json:"summary,omitempty"`
	Stats     BulkStats     `json:"stats,omitempty"`
	Detail    BulkDetail    `json:"detail,omitempty"`
	Versions  []VersionInfo `json:"versions,omitempty"`
}

func HandleBulkResponse

func HandleBulkResponse(req *fasthttp.Request, resp *fasthttp.Response, tag util.MapStr, requestBytes, resbody []byte, successItems *BulkBuffer, nonRetryableItems, retryableItems *BulkBuffer, options BulkResponseParseConfig, retryRules RetryRules) (bool, map[int]int, *BulkResult)

type BulkStats

type BulkStats struct {
	Code    map[int]int    `json:"code,omitempty"`
	Indices map[string]int `json:"indices,omitempty"`
	Actions map[string]int `json:"actions,omitempty"`
}

type BulkSummary

type BulkSummary struct {
	Failure BulkSummaryItem `json:"failure,omitempty"`
	Invalid BulkSummaryItem `json:"invalid,omitempty"`
	Success BulkSummaryItem `json:"success,omitempty"`
}

type BulkSummaryItem

type BulkSummaryItem struct {
	Count int `json:"count,omitempty"`
	Size  int `json:"size,omitempty"`
}

type CatIndexResponse

type CatIndexResponse struct {
	Health       string `json:"health,omitempty"`
	Status       string `json:"status,omitempty"`
	Index        string `json:"index,omitempty"`
	Uuid         string `json:"uuid,omitempty"`
	Pri          string `json:"pri,omitempty"`
	Rep          string `json:"rep,omitempty"`
	DocsCount    string `json:"docs.count,omitempty"`
	DocsDeleted  string `json:"docs.deleted,omitempty"`
	StoreSize    string `json:"store.size,omitempty"`
	PriStoreSize string `json:"pri.store.size,omitempty"`
	SegmentCount string `json:"segments.count,omitempty"`
}

type CatNodeResponse

type CatNodeResponse struct {
	Id          string      `json:"id"`
	Ip          string      `json:"ip"`
	Port        string      `json:"port"`
	HeapPercent string      `json:"heap.percent"`
	RamPercent  string      `json:"ram.percent"`
	Cpu         string      `json:"cpu"`
	Load1M      string      `json:"load_1m"`
	Load5M      interface{} `json:"load_5m"`
	Load15M     interface{} `json:"load_15m"`
	NodeRole    string      `json:"node.role"`
	Master      string      `json:"master"`
	Name        string      `json:"name"`
	DiskAvail   string      `json:"disk.avail"`
	DiskUsed    string      `json:"disk.used"`
	Shards      int         `json:"shards,omitempty"`
	Uptime      string      `json:"uptime"`
	HeapMax     string      `json:"heap.max"`
}

type CatShardResponse

type CatShardResponse struct {
	Index            string `json:"index,omitempty"`
	ShardID          string `json:"shard,omitempty"`
	ShardType        string `json:"prirep,omitempty"`
	State            string `json:"state,omitempty"`
	UnassignedReason string `json:"unassigned,omitempty"`
	Docs             string `json:"docs,omitempty"`
	Store            string `json:"store,omitempty"`
	StoreInBytes     int64  `json:"store_in_bytes,omitempty"`
	NodeID           string `json:"id,omitempty"`
	NodeName         string `json:"node,omitempty"`
	NodeIP           string `json:"ip,omitempty"`
}

{ "index" : ".monitoring-es-7-2020.12.29", "shard" : "0", "prirep" : "p", "state" : "STARTED", "unassigned.reason" : null, "docs" : "227608", "store" : "132.5mb", "id" : "qIgTsxtuQ8mzAGiBATkqHw", "node" : "dev", "ip" : "192.168.3.98" }

type ClusterHealth

type ClusterHealth struct {
	ResponseBase
	Name                        string                            `json:"cluster_name"`
	Status                      string                            `json:"status"`
	TimedOut                    bool                              `json:"timed_out"`
	NumberOfNodes               int                               `json:"number_of_nodes"`
	NumberOf_data_nodes         int                               `json:"number_of_data_nodes"`
	ActivePrimary_shards        int                               `json:"active_primary_shards"`
	ActiveShards                int                               `json:"active_shards"`
	RelocatingShards            int                               `json:"relocating_shards"`
	InitializingShards          int                               `json:"initializing_shards"`
	UnassignedShards            int                               `json:"unassigned_shards"`
	DelayedUnassignedShards     int                               `json:"delayed_unassigned_shards"`
	NumberOfPendingTasks        int                               `json:"number_of_pending_tasks"`
	NumberOfInFlightFetch       int                               `json:"number_of_in_flight_fetch"`
	TaskMaxWaitingInQueueMillis float64                           `json:"task_max_waiting_in_queue_millis"`
	ActiveShardsPercentAsNumber float64                           `json:"active_shards_percent_as_number"`
	Indices                     map[string]map[string]interface{} `json:"indices"`
}

type ClusterInformation

type ClusterInformation struct {
	Name        string `json:"name,intern"`
	ClusterName string `json:"cluster_name,intern"`
	ClusterUUID string `json:"cluster_uuid"`
	Version     struct {
		Number        string `json:"number,intern"`
		LuceneVersion string `json:"lucene_version,intern"`
		Distribution  string `json:"distribution"`
	} `json:"version"`
}

type ClusterRoutingTable

type ClusterRoutingTable struct {
	Indices map[string]struct {
		Shards map[string][]IndexShardRouting `json:"shards"`
	} `json:"indices"`
}

type ClusterState

type ClusterState struct {
	ResponseBase

	ClusterName string `json:"cluster_name"`
	Version     int64  `json:"version"`
	StateUUID   string `json:"state_uuid"`
	ClusterUUID string `json:"cluster_uuid"`
	MasterNode  string `json:"master_node"`
	//Nodes        map[string]ClusterStateNodes `json:"nodes"`
	RoutingTable *ClusterRoutingTable `json:"routing_table,omitempty"`

	CompressedSizeInBytes int `json:"compressed_size_in_bytes"` //v6.0+
	Metadata              *struct {
		Indices map[string]interface{} `json:"indices"`
	} `json:"metadata,omitempty"`
}

type ClusterStateNodes

type ClusterStateNodes struct {
	Name string `json:"name"`

	EphemeralId string `json:"ephemeral_id"` //v5.0+

	TransportAddress string                 `json:"transport_address"`
	Attributes       map[string]interface{} `json:"attributes,omitempty"`
}

type ClusterStats

type ClusterStats struct {
	ResponseBase
	ClusterName string                 `json:"cluster_name"`
	Status      string                 `json:"status"`
	ClusterUUID string                 `json:"cluster_uuid"`
	Timestamp   int64                  `json:"timestamp"`
	Indices     map[string]interface{} `json:"indices"`
	Nodes       map[string]interface{} `json:"nodes"`
}

type Collapse

type Collapse struct {
	Field string `json:"field,omitempty"`
}

type CommandRequest

type CommandRequest struct {
	Path   string `json:"path"`
	Method string `json:"method"`
	Body   string `json:"body"`
}

type CommonCommand

type CommonCommand struct {
	ID       string           `json:"-" index:"id"`
	Title    string           `json:"title" elastic_mapping:"title:{type:text,fields:{keyword:{type:keyword}}}"`
	Tag      []string         `json:"tag" elastic_mapping:"tag:{type:keyword}"`
	Requests []CommandRequest `json:"requests" elastic_mapping:"requests:{type:object}"`
	Created  time.Time        `json:"created,omitempty" elastic_mapping:"created:{type:date}"`
}

type CountResponse

type CountResponse struct {
	ResponseBase
	Count int64 `json:"count"`
}

CountResponse is a count response object

type DeleteByQueryResponse

type DeleteByQueryResponse struct {
	Deleted int64 `json:"deleted"`
	Total   int64 `json:"total"`
}

type DeleteResponse

type DeleteResponse struct {
	ResponseBase
	Result  string `json:"result"`
	Index   string `json:"_index"`
	Type    string `json:"_type"`
	ID      string `json:"_id"`
	Version int    `json:"_version"`
	Shards  struct {
		Total      int `json:"total" `
		Failed     int `json:"failed"`
		Successful int `json:"successful"`
	} `json:"_shards"` //es 2.x index api
}

DeleteResponse is a delete response object

type DiscoveryResult

type DiscoveryResult struct {
	Nodes          map[string]*LocalNodeInfo `json:"nodes,omitempty,nocopy"`
	UnknownProcess []model.ProcessInfo       `json:"unknown_process,omitempty,nocopy"`
}

type ElasticField

type ElasticField struct {
	Aggregatable      bool     `json:"aggregatable"`
	ESTypes           []string `json:"esTypes"`
	Name              string   `json:"name"`
	ReadFromDocValues bool     `json:"readFromDocValues"`
	Searchable        bool     `json:"searchable"`
	Type              string   `json:"type"`
}

func GetFieldCaps

func GetFieldCaps(client API, pattern string, metaFields []string) ([]ElasticField, error)

type ElasticFieldType

type ElasticFieldType struct {
	Name    string
	ESTypes []string
}

type ElasticsearchConfig

type ElasticsearchConfig struct {
	orm.ORMObjectBase

	Source      string `json:"source,omitempty"`
	Name        string `json:"name,omitempty" config:"name" elastic_mapping:"name:{type:keyword,fields:{text: {type: text}}}"`
	Description string `json:"description,omitempty" elastic_mapping:"description:{type:text}"`

	//reserved means can't be deleted from console or API
	Reserved       bool           `json:"reserved,omitempty" config:"reserved" elastic_mapping:"reserved:{type:boolean}"`
	Enabled        bool           `json:"enabled,omitempty" config:"enabled" elastic_mapping:"enabled:{type:boolean}"`
	Monitored      bool           `json:"monitored,omitempty" config:"monitored" elastic_mapping:"monitored:{type:boolean}"`
	MonitorConfigs *MonitorConfig `config:"monitor_configs" json:"monitor_configs,omitempty" elastic_mapping:"monitor_configs:{type:object}"`
	HttpProxy      string         `json:"http_proxy,omitempty" config:"http_proxy"`
	Endpoint       string         `json:"endpoint,omitempty" config:"endpoint" elastic_mapping:"endpoint:{type:keyword}"`
	Endpoints      []string       `json:"endpoints,omitempty" config:"endpoints" elastic_mapping:"endpoints:{type:keyword}"`
	Version        string         `json:"version,omitempty" config:"version" elastic_mapping:"version:{type:keyword,copy_to:search_text}"`
	ClientMode     string         `json:"client_mode,omitempty" config:"client_mode"`

	RequestTimeout  int  `json:"request_timeout,omitempty" config:"request_timeout"`
	RequestCompress bool `json:"request_compress,omitempty" config:"request_compress"`

	MetadataCacheEnabled bool `json:"metadata_cache_enabled,omitempty" config:"metadata_cache_enabled"`

	AllowAccessWhenMasterNotFound bool `json:"allow_access_when_master_not_found,omitempty" config:"allow_access_when_master_not_found"`

	BasicAuth *model.BasicAuth `config:"basic_auth" json:"basic_auth,omitempty" elastic_mapping:"basic_auth:{type:object}"`

	TrafficControl *struct {
		Enabled              bool `json:"enabled,omitempty" config:"enabled"`
		MaxConnectionPerNode int  `` /* 130-byte string literal not displayed */
		MaxWaitTimeInMs      int  `json:"max_wait_time_in_ms,omitempty" config:"max_wait_time_in_ms" elastic_mapping:"max_wait_time_in_ms:{type:keyword}"`
		MaxBytesPerNode      int  `json:"max_bytes_per_node,omitempty" config:"max_bytes_per_node" elastic_mapping:"max_bytes_per_node:{type:keyword}"`
		MaxQpsPerNode        int  `json:"max_qps_per_node,omitempty" config:"max_qps_per_node" elastic_mapping:"max_qps_per_node:{type:keyword}"`
	} `config:"traffic_control" json:"traffic_control,omitempty" elastic_mapping:"traffic_control:{type:object}"`

	Discovery struct {
		Enabled bool     `json:"enabled,omitempty" config:"enabled"`
		Modules []string `json:"module,omitempty" config:"module"`
		Refresh struct {
			Enabled  bool   `json:"enabled,omitempty" config:"enabled"`
			Interval string `json:"interval,omitempty" config:"interval"`
		} `json:"refresh,omitempty" config:"refresh"`
	} `json:"discovery,omitempty" config:"discovery"`

	Order int `json:"order,omitempty" elastic_mapping:"order:{type:integer}"`

	Schema string `json:"schema,omitempty" elastic_mapping:"schema:{type:keyword}"`

	Host  string   `json:"host,omitempty" elastic_mapping:"host:{type:keyword,copy_to:search_text}"`
	Hosts []string `json:"hosts,omitempty" elastic_mapping:"hosts:{type:keyword}"`

	GeoLocation *GeoLocation `json:"location,omitempty" elastic_mapping:"location:{type:object}"`

	Project string `json:"project,omitempty" elastic_mapping:"project:{type:keyword,copy_to:search_text}"`

	Owner []struct {
		Department string `json:"department,omitempty" elastic_mapping:"department:{type:keyword,copy_to:search_text}"`
		Name       string `json:"name,omitempty" elastic_mapping:"name:{type:keyword,copy_to:search_text}"`
		ID         string `json:"id,omitempty" elastic_mapping:"id:{type:keyword}"`
	} `json:"owner,omitempty" elastic_mapping:"owner:{type:object}"`
	Labels          util.MapStr     `json:"labels,omitempty"`
	Tags            []string        `json:"tags,omitempty" elastic_mapping:"tags:{type:keyword,copy_to:search_text}"`
	SearchText      string          `` /* 138-byte string literal not displayed */
	MaxCachedSize   int64           `json:"max_cached_size,omitempty" elastic_mapping:"max_cached_size:{type:integer}"`
	MetadataConfigs *MetadataConfig `config:"metadata_configs" json:"metadata_configs,omitempty" elastic_mapping:"metadata_configs:{type:object}"`
	ClusterUUID     string          `json:"cluster_uuid,omitempty" elastic_mapping:"cluster_uuid:{type:keyword}"`
	RawName         string          `json:"raw_name,omitempty" elastic_mapping:"raw_name:{type:keyword}"`
	CredentialID    string          `json:"credential_id,omitempty" elastic_mapping:"credential_id:{type:keyword}"`

	//TODO merge to cluster settings
	AgentCredentialID string           `json:"agent_credential_id,omitempty" elastic_mapping:"agent_credential_id:{type:keyword}"`
	AgentBasicAuth    *model.BasicAuth `config:"agent_basic_auth" json:"agent_basic_auth,omitempty" elastic_mapping:"agent_basic_auth:{type:object}"`

	Distribution          string `json:"distribution,omitempty" elastic_mapping:"distribution:{type:keyword}"`
	NoDefaultAuthForAgent bool   `json:"no_default_auth_for_agent,omitempty" config:"no_default_auth_for_agent"`
	MetricCollectionMode  string `json:"metric_collection_mode,omitempty" elastic_mapping:"metric_collection_mode:{type:keyword}"`
}

ElasticsearchConfig contains common settings for elasticsearch

func GetConfig

func GetConfig(k string) *ElasticsearchConfig

func GetConfigNoPanic

func GetConfigNoPanic(k string) *ElasticsearchConfig

func (*ElasticsearchConfig) GetAnyEndpoint

func (c *ElasticsearchConfig) GetAnyEndpoint() string

func (*ElasticsearchConfig) ParseMajorVersion

func (c *ElasticsearchConfig) ParseMajorVersion() int

type ElasticsearchMetadata

type ElasticsearchMetadata struct {
	Config *ElasticsearchConfig

	ClusterState *ClusterState

	NodesTopologyVersion int

	Nodes *map[string]NodesInfo

	IndexSettings map[string]*util.MapStr

	//PrimaryShards *map[string]map[int]ShardInfo
	Aliases *map[string]AliasInfo
	Health  *ClusterHealth

	IsAgentMode bool
	// contains filtered or unexported fields
}

func GetMetadata

func GetMetadata(k string) *ElasticsearchMetadata

func GetOrInitMetadata

func GetOrInitMetadata(cfg *ElasticsearchConfig) *ElasticsearchMetadata

func InitMetadata

func InitMetadata(cfg *ElasticsearchConfig, defaultHealth bool) *ElasticsearchMetadata

* 初始化: ElasticsearchMetadata = ElasticsearchConfig + cache

并保存到metas(sync.Map)

func (*ElasticsearchMetadata) CheckNodeTrafficThrottle

func (metadata *ElasticsearchMetadata) CheckNodeTrafficThrottle(node string, req, dataSize, maxWaitInMS int)

func (*ElasticsearchMetadata) GetActiveEndpoint

func (meta *ElasticsearchMetadata) GetActiveEndpoint() string

func (*ElasticsearchMetadata) GetActiveHost

func (meta *ElasticsearchMetadata) GetActiveHost() string

func (*ElasticsearchMetadata) GetActiveHosts

func (meta *ElasticsearchMetadata) GetActiveHosts() int

func (*ElasticsearchMetadata) GetActivePreferredEndpoint

func (meta *ElasticsearchMetadata) GetActivePreferredEndpoint(host string) string

func (*ElasticsearchMetadata) GetActivePreferredEndpoints

func (meta *ElasticsearchMetadata) GetActivePreferredEndpoints(hosts []string) string

func (*ElasticsearchMetadata) GetActivePreferredHost

func (metadata *ElasticsearchMetadata) GetActivePreferredHost(host string) string

func (*ElasticsearchMetadata) GetActivePreferredSeedEndpoint

func (meta *ElasticsearchMetadata) GetActivePreferredSeedEndpoint() string

func (*ElasticsearchMetadata) GetActivePreferredSeedHost

func (meta *ElasticsearchMetadata) GetActivePreferredSeedHost() string

func (*ElasticsearchMetadata) GetHttpClient

func (metadata *ElasticsearchMetadata) GetHttpClient(host string) *fasthttp.Client

func (*ElasticsearchMetadata) GetIndexPrimaryShardRoutingTable

func (metadata *ElasticsearchMetadata) GetIndexPrimaryShardRoutingTable(index string, shard int) (*IndexShardRouting, error)

func (*ElasticsearchMetadata) GetIndexPrimaryShardsRoutingTable

func (metadata *ElasticsearchMetadata) GetIndexPrimaryShardsRoutingTable(index string) ([]IndexShardRouting, error)

func (*ElasticsearchMetadata) GetIndexRoutingTable

func (metadata *ElasticsearchMetadata) GetIndexRoutingTable(index string) (map[string][]IndexShardRouting, error)

func (*ElasticsearchMetadata) GetIndexSetting

func (metadata *ElasticsearchMetadata) GetIndexSetting(index string) (string, *util.MapStr, error)

func (*ElasticsearchMetadata) GetIndexStats

func (metadata *ElasticsearchMetadata) GetIndexStats(indexName string) (*util.MapStr, error)

func (*ElasticsearchMetadata) GetMajorVersion

func (meta *ElasticsearchMetadata) GetMajorVersion() int

func (*ElasticsearchMetadata) GetNodeInfo

func (meta *ElasticsearchMetadata) GetNodeInfo(nodeID string) *NodesInfo

func (*ElasticsearchMetadata) GetPrimaryShardInfo

func (meta *ElasticsearchMetadata) GetPrimaryShardInfo(index string, shardID string) (*IndexShardRouting, error)

func (*ElasticsearchMetadata) GetSchema

func (meta *ElasticsearchMetadata) GetSchema() string

func (*ElasticsearchMetadata) GetSeedHosts

func (meta *ElasticsearchMetadata) GetSeedHosts() []string

这是把所有有可能的地址,都获取一遍。

Config.Hosts / Config.Host 用户可能配置1个/多个host,都拿一遍

Config.Endpoint / Config.Endpoints 用户可能配置1个/多个Endpoint,都拿一遍

func (*ElasticsearchMetadata) GetValue

func (metadata *ElasticsearchMetadata) GetValue(s string) (interface{}, error)

func (*ElasticsearchMetadata) Init

func (meta *ElasticsearchMetadata) Init(health bool)

func (*ElasticsearchMetadata) IsAvailable

func (meta *ElasticsearchMetadata) IsAvailable() bool

func (*ElasticsearchMetadata) IsTLS

func (meta *ElasticsearchMetadata) IsTLS() bool

func (*ElasticsearchMetadata) LastSuccess

func (metadata *ElasticsearchMetadata) LastSuccess() time.Time

func (*ElasticsearchMetadata) NewHttpClient

func (metadata *ElasticsearchMetadata) NewHttpClient(host string) *fasthttp.Client

func (*ElasticsearchMetadata) PrepareEndpoint

func (meta *ElasticsearchMetadata) PrepareEndpoint(host string) string

func (*ElasticsearchMetadata) ReportFailure

func (meta *ElasticsearchMetadata) ReportFailure(errorMessage error) bool

func (*ElasticsearchMetadata) ReportSuccess

func (meta *ElasticsearchMetadata) ReportSuccess()

type ErrorResponse

type ErrorResponse struct {
	Status    int         `json:"status,omitempty"`
	RootCause interface{} `json:"root_cause,omitempty"`
	Error     *struct {
		Type   string `json:"type,omitempty"`
		Reason string `json:"reason,omitempty"`
	} `json:"error,omitempty"`
}

type EventAction

type EventAction string

EventAction represents a metadata change operation

const (
	EventActionCreate EventAction = "create"
	EventActionUpdate EventAction = "update"
	EventActionDelete EventAction = "delete"
)

type FieldCap

type FieldCap struct {
	Type         string   `json:"type"`
	Searchable   bool     `json:"searchable"`
	Aggregatable bool     `json:"aggregatable"`
	Indices      []string `json:"indices"`
}

type FieldCapsResponse

type FieldCapsResponse struct {
	Indices []string                       `json:"indices"`
	Fields  map[string]map[string]FieldCap `json:"fields"`
}

type GeoLocation

type GeoLocation struct {
	Provider string `json:"provider,omitempty" elastic_mapping:"provider:{type:keyword}"`
	Region   string `json:"region,omitempty" elastic_mapping:"region:{type:keyword}"`
	DC       string `json:"dc,omitempty" elastic_mapping:"dc:{type:keyword}"`
	Rack     string `json:"rack,omitempty" elastic_mapping:"rack:{type:keyword}"`
}

type GetResponse

type GetResponse struct {
	ResponseBase
	Found   bool                   `json:"found"`
	Index   string                 `json:"_index"`
	Type    string                 `json:"_type"`
	ID      string                 `json:"_id"`
	Version int                    `json:"_version"`
	Source  map[string]interface{} `json:"_source"`
}

GetResponse is a get response object

type HostMetadata

type HostMetadata struct {
	ID        string    `json:"id,omitempty"      elastic_meta:"_id" elastic_mapping:"id: { type: keyword }"`
	Timestamp time.Time `json:"timestamp,omitempty" elastic_mapping:"timestamp: { type: date }"`
	ClusterID string    `json:"cluster_id" elastic_mapping:"cluster_id:{type:keyword}"`
	NodeID    string    `json:"node_id" elastic_mapping:"node_id:{type:keyword}"`
	Metadata  struct {
		Host string                 `json:"host" elastic_mapping:"host:{type:keyword}"`
		IPs  []string               `json:"ips" elastic_mapping:"ips:{type:keyword}"`
		OS   map[string]interface{} `json:"os" elastic_mapping:"os:{type:object,enabled:false}"`
	} `json:"metadata" elastic_mapping:"metadata:{type:object}"`
}

type IndexConfig

type IndexConfig struct {
	ID         string        `json:"id,omitempty"      elastic_meta:"_id" elastic_mapping:"id: { type: keyword }"`
	Timestamp  time.Time     `json:"timestamp,omitempty" elastic_mapping:"timestamp: { type: date }"`
	Metadata   IndexMetadata `json:"metadata"`
	Fields     util.MapStr   `json:"payload" elastic_mapping:"payload:{type:object,enabled:false}"`
	SearchText string        `` /* 138-byte string literal not displayed */
}

type IndexDocument

type IndexDocument struct {
	Index     string                   `json:"_index,omitempty"`
	Type      string                   `json:"_type,omitempty"`
	ID        string                   `json:"_id,omitempty"`
	Routing   string                   `json:"_routing,omitempty"`
	Source    map[string]interface{}   `json:"_source,omitempty"`
	Highlight map[string][]interface{} `json:"highlight,omitempty"`
}

IndexDocument used to construct indexing document

type IndexInfo

type IndexInfo struct {
	ID            string `json:"id,omitempty"`
	Index         string `json:"index,omitempty"`
	Status        string `json:"status,omitempty"`
	Health        string `json:"health,omitempty"`
	Shards        int    `json:"shards,omitempty"`
	Replicas      int    `json:"replicas,omitempty"`
	DocsCount     int64  `json:"docs_count,omitempty"`
	DocsDeleted   int64  `json:"docs_deleted,omitempty"`
	SegmentsCount int64  `json:"segments_count,omitempty"`
	StoreSize     string `json:"store_size,omitempty"`
	PriStoreSize  string `json:"pri_store_size,omitempty"`
}

type IndexLevelStats

type IndexLevelStats struct {
	Docs struct {
		Count   int `json:"count"`
		Deleted int `json:"deleted"`
	} `json:"docs"`
	Store struct {
		SizeInBytes             int `json:"size_in_bytes"`
		TotalDataSetSizeInBytes int `json:"total_data_set_size_in_bytes"`
		ReservedInBytes         int `json:"reserved_in_bytes"`
	} `json:"store"`
	Indexing struct {
		IndexTotal           int  `json:"index_total"`
		IndexTimeInMillis    int  `json:"index_time_in_millis"`
		IndexCurrent         int  `json:"index_current"`
		IndexFailed          int  `json:"index_failed"`
		DeleteTotal          int  `json:"delete_total"`
		DeleteTimeInMillis   int  `json:"delete_time_in_millis"`
		DeleteCurrent        int  `json:"delete_current"`
		NoopUpdateTotal      int  `json:"noop_update_total"`
		IsThrottled          bool `json:"is_throttled"`
		ThrottleTimeInMillis int  `json:"throttle_time_in_millis"`
	} `json:"indexing"`
	Get struct {
		Total               int `json:"total"`
		TimeInMillis        int `json:"time_in_millis"`
		ExistsTotal         int `json:"exists_total"`
		ExistsTimeInMillis  int `json:"exists_time_in_millis"`
		MissingTotal        int `json:"missing_total"`
		MissingTimeInMillis int `json:"missing_time_in_millis"`
		Current             int `json:"current"`
	} `json:"get"`
	Search struct {
		OpenContexts        int `json:"open_contexts"`
		QueryTotal          int `json:"query_total"`
		QueryTimeInMillis   int `json:"query_time_in_millis"`
		QueryCurrent        int `json:"query_current"`
		FetchTotal          int `json:"fetch_total"`
		FetchTimeInMillis   int `json:"fetch_time_in_millis"`
		FetchCurrent        int `json:"fetch_current"`
		ScrollTotal         int `json:"scroll_total"`
		ScrollTimeInMillis  int `json:"scroll_time_in_millis"`
		ScrollCurrent       int `json:"scroll_current"`
		SuggestTotal        int `json:"suggest_total"`
		SuggestTimeInMillis int `json:"suggest_time_in_millis"`
		SuggestCurrent      int `json:"suggest_current"`
	} `json:"search"`
	Merges struct {
		Current                    int `json:"current"`
		CurrentDocs                int `json:"current_docs"`
		CurrentSizeInBytes         int `json:"current_size_in_bytes"`
		Total                      int `json:"total"`
		TotalTimeInMillis          int `json:"total_time_in_millis"`
		TotalDocs                  int `json:"total_docs"`
		TotalSizeInBytes           int `json:"total_size_in_bytes"`
		TotalStoppedTimeInMillis   int `json:"total_stopped_time_in_millis"`
		TotalThrottledTimeInMillis int `json:"total_throttled_time_in_millis"`
		TotalAutoThrottleInBytes   int `json:"total_auto_throttle_in_bytes"`
	} `json:"merges"`
	Refresh struct {
		Total                     int `json:"total"`
		TotalTimeInMillis         int `json:"total_time_in_millis"`
		ExternalTotal             int `json:"external_total"`
		ExternalTotalTimeInMillis int `json:"external_total_time_in_millis"`
		Listeners                 int `json:"listeners"`
	} `json:"refresh"`
	Flush struct {
		Total             int `json:"total"`
		Periodic          int `json:"periodic"`
		TotalTimeInMillis int `json:"total_time_in_millis"`
	} `json:"flush"`
	Warmer struct {
		Current           int `json:"current"`
		Total             int `json:"total"`
		TotalTimeInMillis int `json:"total_time_in_millis"`
	} `json:"warmer"`
	QueryCache struct {
		MemorySizeInBytes int `json:"memory_size_in_bytes"`
		TotalCount        int `json:"total_count"`
		HitCount          int `json:"hit_count"`
		MissCount         int `json:"miss_count"`
		CacheSize         int `json:"cache_size"`
		CacheCount        int `json:"cache_count"`
		Evictions         int `json:"evictions"`
	} `json:"query_cache"`
	Fielddata struct {
		MemorySizeInBytes int `json:"memory_size_in_bytes"`
		Evictions         int `json:"evictions"`
	} `json:"fielddata"`
	Completion struct {
		SizeInBytes int `json:"size_in_bytes"`
	} `json:"completion"`
	Segments struct {
		Count                     int   `json:"count"`
		MemoryInBytes             int   `json:"memory_in_bytes"`
		TermsMemoryInBytes        int   `json:"terms_memory_in_bytes"`
		StoredFieldsMemoryInBytes int   `json:"stored_fields_memory_in_bytes"`
		TermVectorsMemoryInBytes  int   `json:"term_vectors_memory_in_bytes"`
		NormsMemoryInBytes        int   `json:"norms_memory_in_bytes"`
		PointsMemoryInBytes       int   `json:"points_memory_in_bytes"`
		DocValuesMemoryInBytes    int   `json:"doc_values_memory_in_bytes"`
		IndexWriterMemoryInBytes  int   `json:"index_writer_memory_in_bytes"`
		VersionMapMemoryInBytes   int   `json:"version_map_memory_in_bytes"`
		FixedBitSetMemoryInBytes  int   `json:"fixed_bit_set_memory_in_bytes"`
		MaxUnsafeAutoIdTimestamp  int64 `json:"max_unsafe_auto_id_timestamp"`
		FileSizes                 struct {
		} `json:"file_sizes"`
	} `json:"segments"`
	Translog struct {
		Operations              int `json:"operations"`
		SizeInBytes             int `json:"size_in_bytes"`
		UncommittedOperations   int `json:"uncommitted_operations"`
		UncommittedSizeInBytes  int `json:"uncommitted_size_in_bytes"`
		EarliestLastModifiedAge int `json:"earliest_last_modified_age"`
	} `json:"translog"`
	RequestCache struct {
		MemorySizeInBytes int `json:"memory_size_in_bytes"`
		Evictions         int `json:"evictions"`
		HitCount          int `json:"hit_count"`
		MissCount         int `json:"miss_count"`
	} `json:"request_cache"`
	Recovery struct {
		CurrentAsSource      int `json:"current_as_source"`
		CurrentAsTarget      int `json:"current_as_target"`
		ThrottleTimeInMillis int `json:"throttle_time_in_millis"`
	} `json:"recovery"`
}

type IndexMetadata

type IndexMetadata struct {
	ClusterID   string        `json:"cluster_id" elastic_mapping:"cluster_id:{type:keyword}"`
	IndexID     string        `json:"index_id" elastic_mapping:"index_id:{type:keyword}"` //cluster_id:index_name (some metrics not return index uuid of lower es version )
	IndexName   string        `json:"index_name" elastic_mapping:"index_name:{type:keyword,copy_to:search_text}"`
	ClusterName string        `json:"cluster_name" elastic_mapping:"cluster_name:{type:keyword,copy_to:search_text}"`
	Labels      util.MapStr   `json:"labels,omitempty"`
	Aliases     interface{}   `json:"aliases,omitempty" elastic_mapping:"aliases:{type:keyword,copy_to:search_text}"`
	Category    string        `json:"category,omitempty"`
	Tags        []interface{} `json:"tags,omitempty" elastic_mapping:"tags:{type:keyword,copy_to:search_text}"`
}

type IndexShardRouting

type IndexShardRouting struct {
	State          string      `json:"state"`
	Primary        bool        `json:"primary"`
	Node           string      `json:"node"`
	RelocatingNode interface{} `json:"relocating_node,omitempty"`
	Shard          int         `json:"shard"`
	Index          string      `json:"index"`
	Version        int         `json:"version"` //< v5.0

	//v5.0+ START
	RecoverySource *struct {
		Type string `json:"type"`
	} `json:"recovery_source,omitempty"`
	UnassignedInfo *struct {
		Reason           string    `json:"reason"`
		At               time.Time `json:"at"`
		Delayed          bool      `json:"delayed"`
		AllocationStatus string    `json:"allocation_status"`
	} `json:"unassigned_info,omitempty"`

	AllocationId *struct {
		Id string `json:"id"`
	} `json:"allocation_id,omitempty"`
}

type IndexStats

type IndexStats struct {
	All struct {
		Primary struct {
			Store struct {
				SizeInBytes int64 `json:"size_in_bytes"`
			} `json:"store"`

			Segments struct {
				Count int `json:"count"`
			} `json:"segments"`

			Merges struct {
				Current int `json:"current"`
			} `json:"merges"`
		} `json:"primaries"`
	} `json:"_all"`
}

type IndicesStats

type IndicesStats struct {
	ResponseBase
	Nodes map[string]interface{} `json:"indices"`
}

type InsertResponse

type InsertResponse struct {
	ResponseBase
	Result  string `json:"result"`
	Index   string `json:"_index"`
	Type    string `json:"_type"`
	ID      string `json:"_id"`
	Version int    `json:"_version"`

	Shards struct {
		Total      int `json:"total" `
		Failed     int `json:"failed"`
		Successful int `json:"successful"`
	} `json:"_shards"` //es 2.x index api
}

InsertResponse is a index response object

type LocalNodeInfo

type LocalNodeInfo struct {
	Enrolled    bool                `json:"enrolled,omitempty,nocopy"`   //whether this node is enrolled or not
	ClusterID   string              `json:"cluster_id,omitempty,nocopy"` //infini system assigned cluster id
	ClusterInfo *ClusterInformation `json:"cluster_info,omitempty,nocopy"`
	NodeUUID    string              `json:"node_id,omitempty,nocopy"`
	NodeInfo    *NodesInfo          `json:"node_info,omitempty,nocopy"`
	Status      string              `json:"status,omitempty,nocopy"`
}

type MappingAPI

type MappingAPI interface {
	GetMapping(copyAllIndexes bool, indexNames string) (string, int, *util.MapStr, error)
	UpdateMapping(indexName string, docType string, mappings []byte) ([]byte, error)
}

type MatchQuery

type MatchQuery struct {
	Match map[string]interface{} `json:"match,omitempty"`
}

func (*MatchQuery) Set

func (match *MatchQuery) Set(field string, v interface{})

Init match query's condition

type MetadataChangeEvent

type MetadataChangeEvent func(meta *ElasticsearchMetadata, action EventAction)

MetadataChangeEvent represents a callback of metadata change

type MetadataConfig

type MetadataConfig struct {
	HealthCheck           TaskConfig `json:"health_check"`
	ClusterSettingsCheck  TaskConfig `json:"cluster_settings_check"`
	MetadataRefresh       TaskConfig `json:"metadata_refresh"`
	NodeAvailabilityCheck TaskConfig `json:"node_availability_check"`
}

type MonitorConfig

type MonitorConfig struct {
	ClusterHealth TaskConfig `json:"cluster_health"`
	ClusterStats  TaskConfig `json:"cluster_stats"`
	NodeStats     TaskConfig `json:"node_stats"`
	IndexStats    TaskConfig `json:"index_stats"`
}

type NodeAvailable

type NodeAvailable struct {
	ClusterID string //TODO should be removed
	Host      string
	// contains filtered or unexported fields
}

func GetHostAvailableInfo

func GetHostAvailableInfo(host string) (*NodeAvailable, bool)

func GetOrInitHost

func GetOrInitHost(host string, clusterID string) *NodeAvailable

* 根据IP地址,返回可用的Node信息。 这里的Node并不包含es配置信息。 仅仅是集群的状态(是否可用)

如果根据IP从hosts(sync.Map)查询不到Node,则根据入参(host string,clusterID string)创建Node并保存

func (*NodeAvailable) FailureTickets

func (node *NodeAvailable) FailureTickets() int

func (*NodeAvailable) IsAvailable

func (node *NodeAvailable) IsAvailable() bool

func (*NodeAvailable) IsDead

func (node *NodeAvailable) IsDead() bool

func (*NodeAvailable) LastCheck

func (node *NodeAvailable) LastCheck() time.Time

func (*NodeAvailable) LastSuccess

func (node *NodeAvailable) LastSuccess() time.Time

func (*NodeAvailable) ReportFailure

func (node *NodeAvailable) ReportFailure()

func (*NodeAvailable) ReportSuccess

func (node *NodeAvailable) ReportSuccess()

type NodeConfig

type NodeConfig struct {
	ID         string       `json:"id,omitempty"      elastic_meta:"_id" elastic_mapping:"id: { type: keyword }"`
	Timestamp  time.Time    `json:"timestamp,omitempty" elastic_mapping:"timestamp: { type: date }"`
	Metadata   NodeMetadata `json:"metadata" elastic_mapping:"metadata: { type: object }"`
	Payload    NodePayload  `json:"payload" elastic_mapping:"payload:{type:object,enabled:false}"`
	SearchText string       `` /* 138-byte string literal not displayed */
}

type NodeMetadata

type NodeMetadata struct {
	ClusterID   string      `json:"cluster_id" elastic_mapping:"cluster_id:{type:keyword}"`
	ClusterName string      `json:"cluster_name" elastic_mapping:"cluster_name:{type:keyword,copy_to:search_text}"`
	Host        string      `json:"host" elastic_mapping:"host:{type:keyword,copy_to:search_text}"`
	NodeID      string      `json:"node_id" elastic_mapping:"node_id:{type:keyword}"`
	NodeName    string      `json:"node_name" elastic_mapping:"node_name:{type:keyword,copy_to:search_text}"`
	Tags        []string    `json:"tags,omitempty" elastic_mapping:"tags:{type:keyword,copy_to:search_text}"`
	Labels      util.MapStr `json:"labels,omitempty"`
	Category    string      `json:"category,omitempty"`
}

type NodePayload

type NodePayload struct {
	NodeInfo *NodesInfo `json:"node_state,omitempty" elastic_mapping:"node_state:{type:object,enabled:false}"`
}

type NodesInfo

type NodesInfo struct {
	Name    string `json:"name,omitempty,nocopy"`
	Version string `json:"version,omitempty,nocopy"`

	Http struct {
		BoundAddress            []string `json:"bound_address"`
		PublishAddress          string   `json:"publish_address,omitempty"`
		MaxContentLengthInBytes int64    `json:"max_content_length_in_bytes,omitempty"`
	} `json:"http,omitempty"`

	Attributes map[string]interface{} `json:"attributes,omitempty"`
	Roles      []string               `json:"roles,omitempty"`

	TransportAddress string `json:"transport_address"`
	Host             string `json:"host"`
	Ip               string `json:"ip"`

	BuildFlavor string `json:"build_flavor"`
	BuildType   string `json:"build_type"`
	BuildHash   string `json:"build_hash"`

	TotalIndexingBuffer int64 `json:"total_indexing_buffer,omitempty"`

	Settings map[string]interface{} `json:"settings"`
	Os       map[string]interface{} `json:"os"`
	Process  struct {
		RefreshIntervalInMillis int  `json:"refresh_interval_in_millis"`
		Id                      int  `json:"id"`
		Mlockall                bool `json:"mlockall"`
	} `json:"process"`
	Jvm        map[string]interface{} `json:"jvm"`
	ThreadPool map[string]interface{} `json:"thread_pool"`
	Transport  struct {
		BoundAddress   []string `json:"bound_address"`
		PublishAddress string   `json:"publish_address"`
		Profiles       struct {
		} `json:"profiles"`
	} `json:"transport"`

	Plugins      []interface{}            `json:"plugins"`
	Modules      []map[string]interface{} `json:"modules"`
	Ingest       map[string]interface{}   `json:"ingest"`
	Aggregations map[string]interface{}   `json:"aggregations"`
}

func (*NodesInfo) GetHttpPublishHost

func (node *NodesInfo) GetHttpPublishHost() string

func (*NodesInfo) GetPathLogs

func (node *NodesInfo) GetPathLogs() string

type NodesResponse

type NodesResponse struct {
	NodesCount  map[string]interface{} `json:"_nodes"`
	ClusterName string                 `json:"cluster_name"`
	Nodes       map[string]NodesInfo   `json:"nodes"`
}

type NodesStats

type NodesStats struct {
	ResponseBase
	Nodes map[string]interface{} `json:"nodes"`
}

type PartitionInfo

type PartitionInfo struct {
	Key    float64                `json:"key"`
	Start  float64                `json:"start"`
	End    float64                `json:"end"`
	Filter map[string]interface{} `json:"filter"`
	Docs   int64                  `json:"docs"`
	Other  bool
}

func GetPartitions

func GetPartitions(q *PartitionQuery, client API) ([]PartitionInfo, error)

func MergePartitions

func MergePartitions(sourcePartitions []PartitionInfo, targetPartitions []PartitionInfo, fieldName, fieldType string, filter interface{}) []PartitionInfo

NOTE: we assume GetPartitions returned sorted buckets from ES, if not, we need to manually sort source & target partitions by keys sourcePartitions & targetPartitions must've been generated with same bucket step & offset

type PartitionQuery

type PartitionQuery struct {
	IndexName string      `json:"index_name"`
	FieldType string      `json:"field_type"`
	FieldName string      `json:"field_name"`
	Step      interface{} `json:"step"`
	Filter    interface{} `json:"filter"`
	DocType   string      `json:"doc_type"`
}

type Query

type Query struct {
	BoolQuery *BoolQuery `json:"bool"`
}

Query is the root query object

func (*Query) Must

func (q *Query) Must(query interface{})

type QueryStringQuery

type QueryStringQuery struct {
	Query map[string]interface{} `json:"query_string,omitempty"`
}

func NewQueryString

func NewQueryString(q string) *QueryStringQuery

func (*QueryStringQuery) DefaultOperator

func (query *QueryStringQuery) DefaultOperator(op string)

func (*QueryStringQuery) Fields

func (query *QueryStringQuery) Fields(fields ...string)

func (*QueryStringQuery) QueryString

func (query *QueryStringQuery) QueryString(q string)

type RangeQuery

type RangeQuery struct {
	Range map[string]map[string]interface{} `json:"range,omitempty"`
}

RangeQuery is used to find value in range

func (*RangeQuery) Gt

func (query *RangeQuery) Gt(field string, value interface{})

func (*RangeQuery) Gte

func (query *RangeQuery) Gte(field string, value interface{})

func (*RangeQuery) Lt

func (query *RangeQuery) Lt(field string, value interface{})

func (*RangeQuery) Lte

func (query *RangeQuery) Lte(field string, value interface{})

type ReindexResponse

type ReindexResponse struct {
	Task string `json:"task"`
}

type ReplicationAPI

type ReplicationAPI interface {
	StartReplication(followIndex string, body []byte) error
	StopReplication(indexName string, body []byte) error
	PauseReplication(followIndex string, body []byte) error
	ResumeReplication(followIndex string, body []byte) error
	GetReplicationStatus(followIndex string) ([]byte, error)
	GetReplicationFollowerStats(followIndex string) ([]byte, error)
	CreateAutoFollowReplication(autoFollowPatternName string, body []byte) error
	GetAutoFollowStats(autoFollowPatternName string) ([]byte, error)
	DeleteAutoFollowReplication(autoFollowPatternName string, body []byte) error
}

type ResponseBase

type ResponseBase struct {
	RawResult   *util.Result `json:"-"`
	StatusCode  int          `json:"-"`
	ErrorObject error        `json:"-"`
	ESError     interface{}  `json:"error,omitempty"`
}

func (*ResponseBase) GetBoolByJsonPath

func (this *ResponseBase) GetBoolByJsonPath(path string) (interface{}, error)

func (*ResponseBase) GetBytesByJsonPath

func (this *ResponseBase) GetBytesByJsonPath(path string) ([]byte, error)

func (*ResponseBase) GetIntByJsonPath

func (this *ResponseBase) GetIntByJsonPath(path string) (interface{}, error)

func (*ResponseBase) GetStringByJsonPath

func (this *ResponseBase) GetStringByJsonPath(path string) (interface{}, error)

type RetryRule

type RetryRule struct {
	//response
	Status  []int    `config:"status"`
	Keyword []string `config:"keyword"`
}

type RetryRules

type RetryRules struct {
	//Retry3xx        bool     `config:"retry_3xx"`
	Retry4xx bool `config:"retry_4xx"`
	Retry429 bool `config:"retry_429"`

	Default bool `config:"default"`

	Permitted RetryRule `config:"permitted"`
	Denied    RetryRule `config:"denied"`
}

func (*RetryRules) Retryable

func (this *RetryRules) Retryable(code int, msg string) bool

type ScriptAPI

type ScriptAPI interface {
	ScriptExists(scriptName string) (bool, error)
	PutScript(scriptName string, script []byte) ([]byte, error)
	SearchByTemplate(indexName, scriptName string, params map[string]interface{}) (*SearchResponse, error)
}

type ScrollAPI

type ScrollAPI interface {
	NewScroll(indexNames string, scrollTime string, docBufferCount int, query *SearchRequest, slicedId, maxSlicedCount int) ([]byte, error)
	NextScroll(ctx *APIContext, scrollTime string, scrollId string) ([]byte, error)
	ClearScroll(scrollId string) error
}

type ScrollResponse

type ScrollResponse struct {
	Took     int    `json:"took,omitempty"`
	ScrollId string `json:"_scroll_id,omitempty,nocopy"`
	TimedOut bool   `json:"timed_out,omitempty"`
	Hits     struct {
		MaxScore float32         `json:"max_score,omitempty"`
		Total    int64           `json:"total,omitempty"`
		Docs     []IndexDocument `json:"hits,omitempty"`
	} `json:"hits"`
	Shards ShardResponse `json:"_shards,omitempty"`
}

func (*ScrollResponse) GetDocs

func (scroll *ScrollResponse) GetDocs() []IndexDocument

func (*ScrollResponse) GetHitsTotal

func (scroll *ScrollResponse) GetHitsTotal() int64

func (*ScrollResponse) GetScrollId

func (scroll *ScrollResponse) GetScrollId() string

func (*ScrollResponse) GetShardResponse

func (scroll *ScrollResponse) GetShardResponse() ShardResponse

func (ScrollResponse) MarshalEasyJSON

func (v ScrollResponse) MarshalEasyJSON(w *jwriter.Writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (ScrollResponse) MarshalJSON

func (v ScrollResponse) MarshalJSON() ([]byte, error)

MarshalJSON supports json.Marshaler interface

func (*ScrollResponse) SetScrollId

func (scroll *ScrollResponse) SetScrollId(id string)

func (*ScrollResponse) UnmarshalEasyJSON

func (v *ScrollResponse) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*ScrollResponse) UnmarshalJSON

func (v *ScrollResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON supports json.Unmarshaler interface

type ScrollResponseAPI

type ScrollResponseAPI interface {
	GetScrollId() string
	SetScrollId(id string)
	GetHitsTotal() int64
	GetShardResponse() ShardResponse
	GetDocs() []IndexDocument
}

type ScrollResponseV7

type ScrollResponseV7 struct {
	Took     int    `json:"took,omitempty"`
	ScrollId string `json:"_scroll_id,omitempty,nocopy"`
	TimedOut bool   `json:"timed_out,omitempty"`
	Hits     struct {
		MaxScore float32 `json:"max_score,omitempty"`
		Total    struct {
			Value    int64  `json:"value,omitempty"`
			Relation string `json:"relation,omitempty"`
		} `json:"total,omitempty"`
		Docs []IndexDocument `json:"hits,omitempty"`
	} `json:"hits"`
	Shards ShardResponse `json:"_shards,omitempty"`
}

func (*ScrollResponseV7) GetDocs

func (scroll *ScrollResponseV7) GetDocs() []IndexDocument

func (*ScrollResponseV7) GetHitsTotal

func (scroll *ScrollResponseV7) GetHitsTotal() int64

func (*ScrollResponseV7) GetScrollId

func (scroll *ScrollResponseV7) GetScrollId() string

func (*ScrollResponseV7) GetShardResponse

func (scroll *ScrollResponseV7) GetShardResponse() ShardResponse

func (ScrollResponseV7) MarshalEasyJSON

func (v ScrollResponseV7) MarshalEasyJSON(w *jwriter.Writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (ScrollResponseV7) MarshalJSON

func (v ScrollResponseV7) MarshalJSON() ([]byte, error)

MarshalJSON supports json.Marshaler interface

func (*ScrollResponseV7) SetScrollId

func (scroll *ScrollResponseV7) SetScrollId(id string)

func (*ScrollResponseV7) UnmarshalEasyJSON

func (v *ScrollResponseV7) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*ScrollResponseV7) UnmarshalJSON

func (v *ScrollResponseV7) UnmarshalJSON(data []byte) error

UnmarshalJSON supports json.Unmarshaler interface

type SearchAggParam

type SearchAggParam struct {
	Field          string      `json:"field"`
	TermsAggParams util.MapStr `json:"params"`
}

type SearchFilterParam

type SearchFilterParam map[string][]string

type SearchHighlightParam

type SearchHighlightParam struct {
	Fields           []string `json:"fields"`
	FragmentSize     int      `json:"fragment_size"`
	NumberOfFragment int      `json:"number_of_fragment"`
}

type SearchRequest

type SearchRequest struct {
	Query *Query `json:"query,omitempty"`
	From  int    `json:"from"`
	Size  int    `json:"size"`

	Collapse *Collapse `json:"collapse,omitempty"`

	Sort               *[]interface{}      `json:"sort,omitempty"`
	Source             interface{}         `json:"_source,omitempty"`
	AggregationRequest *AggregationRequest `json:"aggs,omitempty"`
	// contains filtered or unexported fields
}

SearchRequest is the root search query object

func GetSearchRequest

func GetSearchRequest(querystring, dsl, sourceFields string, sortField, sortType string) *SearchRequest

func (*SearchRequest) AddSort

func (request *SearchRequest) AddSort(field string, order string)

AddSort add sort conditions to SearchRequest

func (*SearchRequest) Set

func (request *SearchRequest) Set(key string, value interface{}) error

func (*SearchRequest) ToJSONString

func (request *SearchRequest) ToJSONString() string

type SearchResponse

type SearchResponse struct {
	ResponseBase
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Hits     struct {
		Total    interface{}     `json:"total"`
		MaxScore float32         `json:"max_score"`
		Hits     []IndexDocument `json:"hits,omitempty"`
	} `json:"hits"`
	Aggregations map[string]AggregationResponse `json:"aggregations,omitempty"`
}

SearchResponse is a count response object

func (*SearchResponse) GetTotal

func (response *SearchResponse) GetTotal() int64

type SearchTemplate

type SearchTemplate struct {
	ID        string    `json:"-" index:"id"`
	Name      string    `json:"name" elastic_mapping:"name:{type:text}"`
	Source    string    `json:"source" elastic_mapping:"source:{type:text}"`
	ClusterID string    `json:"cluster_id" elastic_mapping:"cluster_id:{type:keyword}"`
	Created   time.Time `json:"created,omitempty" elastic_mapping:"created:{type:date}"`
	Updated   time.Time `json:"updated,omitempty" elastic_mapping:"updated:{type:date}"`
}

type SearchTemplateHistory

type SearchTemplateHistory struct {
	ID         string                 `json:"-" index:"id"`
	TemplateID string                 `json:"template_id" elastic_mapping:"template_id:{type:keyword}"`
	Action     string                 `json:"action" elastic_mapping:"action:{type:keyword}"`
	Content    map[string]interface{} `json:"content,omitempty" elastic_mapping:"content:{type:object}"`
	Created    time.Time              `json:"created,omitempty" elastic_mapping:"created:{type:date}"`
}

type SecurityAPI

type SecurityAPI interface {
	GetUser(username string) ([]byte, error)
	GetUsers() ([]byte, error)
	DeleteUser(username string) error
	PutUser(username string, body []byte) error
	GetRole(roleName string) ([]byte, error)
	GetRoles() ([]byte, error)
	DeleteRole(roleName string) error
	PutRole(roleName string, body []byte) error
	GetPrivileges() ([]byte, error)
}

type Setting

type Setting struct {
	ID        string    `json:"-" index:"id"`
	ClusterID string    `json:"cluster_id" elastic_mapping:"cluster_id:{type:keyword}"`
	Key       string    `json:"key" elastic_mapping:"key:{type:keyword}"`
	Value     string    `json:"value" elastic_mapping:"value:{type:keyword}"`
	UpdatedAt time.Time `json:"updated_at,omitempty" elastic_mapping:"updated_at:{type:date}"`
}

type ShardInfo

type ShardInfo struct {
	Index            string `json:"index,omitempty"`
	ShardID          string `json:"shard_id,omitempty"`
	Primary          bool   `json:"primary,omitempty"`
	State            string `json:"state,omitempty"`
	UnassignedReason string `json:"unassigned_reason,omitempty"`
	Docs             int64  `json:"docs_count,omitempty"`
	Store            string `json:"store_size,omitempty"`
	NodeID           string `json:"node_id,omitempty"`
	NodeName         string `json:"node_name,omitempty"`
	NodeIP           string `json:"node_ip,omitempty"`
}

type ShardResponse

type ShardResponse struct {
	Total      int `json:"total,omitempty"`
	Successful int `json:"successful,omitempty"`
	Skipped    int `json:"skipped,omitempty"`
	Failed     int `json:"failed,omitempty"`
	Failures   []struct {
		Shard  int             `json:"shard,omitempty"`
		Index  string          `json:"index,omitempty,intern"`
		Status int             `json:"status,omitempty"`
		Reason json.RawMessage `json:"reason,omitempty,nocopy"`
	} `json:"failures,omitempty"`
}

type Stats

type Stats struct {
	All struct {
		Primaries IndexLevelStats `json:"primaries"`
		Total     IndexLevelStats `json:"total"`
	} `json:"_all"`

	Indices map[string]struct {
		Uuid      string          `json:"uuid"` //v7.0+
		Primaries IndexLevelStats `json:"primaries"`
		Total     IndexLevelStats `json:"total"`
	} `json:"indices"`
}

type TaskConfig

type TaskConfig struct {
	Enabled  bool   `json:"enabled"`
	Interval string `json:"interval"`
}

type TemplateAPI

type TemplateAPI interface {
	TemplateExists(scriptName string) (bool, error)
	PutTemplate(scriptName string, template []byte) ([]byte, error)
	GetTemplate(scriptName string) (map[string]interface{}, error)
	SearchByTemplate(indexName, scriptName string, params map[string]interface{}) (*SearchResponse, error)
}

type TermsAggregationQuery

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

func NewTermsAggregation

func NewTermsAggregation() (query *TermsAggregationQuery)

func (*TermsAggregationQuery) Field

func (query *TermsAggregationQuery) Field(field string) *TermsAggregationQuery

func (*TermsAggregationQuery) Size

func (query *TermsAggregationQuery) Size(size int) *TermsAggregationQuery

type TermsQuery

type TermsQuery struct {
	Match map[string][]interface{} `json:"terms,omitempty"`
}

func (*TermsQuery) Set

func (match *TermsQuery) Set(field string, v []interface{})

func (*TermsQuery) SetStringArray

func (match *TermsQuery) SetStringArray(field string, v []string)

type TraceMeta

type TraceMeta struct {
	TraceID   bool   `json:"trace_id" elastic_mapping:"trace_id:{type:keyword}"`
	Index     string `json:"index" elastic_mapping:"index:{type:keyword}"`
	ClusterID string `json:"cluster_id" elastic_mapping:"cluster_id:{type:keyword}"`
}

type TraceTemplate

type TraceTemplate struct {
	ID             string    `json:"-" index:"id"`
	Name           string    `json:"name" elastic_mapping:"name:{type:text}"`
	MetaIndex      string    `json:"meta_index" elastic_mapping:"meta_index:{type:keyword}"`
	TraceField     string    `json:"trace_field" elastic_mapping:"trace_field:{type:keyword}"`
	TimestampField string    `json:"timestamp_field" elastic_mapping:"timestamp_field:{type:keyword}"`
	AggField       string    `json:"agg_field" elastic_mapping:"agg_field:{type:keyword}"`
	Description    string    `json:"description" elastic_mapping:"description:{type:text}"`
	ClusterID      string    `json:"cluster_id" elastic_mapping:"cluster_id:{type:keyword}"`
	Created        time.Time `json:"created,omitempty" elastic_mapping:"created:{type:date}"`
	Updated        time.Time `json:"updated,omitempty" elastic_mapping:"updated:{type:date}"`
}

type UpdateByQueryResponse

type UpdateByQueryResponse struct {
	Updated  int64         `json:"updated"`
	Total    int64         `json:"total"`
	Failures []interface{} `json:"failures"`
}

type Version

type Version struct {
	Number       string
	Major        int
	Distribution string
}

type VersionInfo

type VersionInfo struct {
	Path           string `json:"path"`
	Index          string `json:"_index"`
	ID             string `json:"_id"`
	Version        int64  `json:"_version"`
	PrimaryTerm    int64  `json:"_primary_term"`
	SequenceNumber int64  `json:"_seq_no"`
	Status         int64  `json:"status"`

	Payload [][]byte `json:"-"` //request

	Time              time.Time    //Not record time, but local access time
	DocOffset         int          `json:"doc_offset,omitempty"`
	MessageOffset     string       `json:"msg_offset,omitempty"`
	ThisMessageOffset queue.Offset `json:"this_msg_offset,omitempty"`
	ReplicationID     string       `json:"replication_id,omitempty"`
	MessageTime       time.Time
}

func (*VersionInfo) GetKey

func (ver *VersionInfo) GetKey() string

type View

type View struct {
	ID              string    `json:"-" elastic_meta:"_id" elastic_mapping:"id: { type: keyword }"`
	ClusterID       string    `json:"cluster_id" elastic_mapping:"cluster_id:{type:keyword}"`
	Title           string    `json:"title" elastic_mapping:"title:{type:keyword}"`
	ViewName        string    `json:"viewName" elastic_mapping:"view_name:{type:text}`
	TimeFieldName   string    `json:"timeFieldName" elastic_mapping:"timeFieldName:{type:keyword}"`
	Fields          string    `json:"fields" elastic_mapping:"fields:{type:text}"`
	FieldFormatMap  string    `json:"fieldFormatMap" elastic_mapping:"fields:{type:text}`
	UpdatedAt       time.Time `json:"updated_at,omitempty" elastic_mapping:"updated_at:{type:date}"`
	DefaultLayoutID string    `json:"default_layout_id" elastic_mapping:"default_layout_id:{type:keyword}"`
}

type ViewRequest

type ViewRequest struct {
	Attributes View `json:"attributes"`
}

Jump to

Keyboard shortcuts

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