elastic

package
v2.3.1 Latest Latest
Warning

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

Go to latest
Published: Jan 29, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BulkInsertWithRetry

func BulkInsertWithRetry(index string, cfg BulkIndexerConfig, documents []map[string]any, maxRetries int, retryInterval time.Duration) error

BulkInsertWithRetry 带重试的批量插入

func GetIlmPolicy

func GetIlmPolicy(client *elasticsearch.Client)

Types

type BulkError

type BulkError struct {
	Type   string `json:"type"`
	Reason string `json:"reason"`
}

BulkError 表示索引错误信息

type BulkIndexerConfig

type BulkIndexerConfig struct {
	FlushBytes    int           `json:"flush_bytes" yaml:"flush_bytes" ini:"flush_bytes"`          // 刷新字节阈值
	FlushInterval time.Duration `json:"flush_interval" yaml:"flush_interval" ini:"flush_interval"` // 刷新时间间隔
	NumWorkers    int           `json:"num_workers" yaml:"num_workers" ini:"num_workers"`          // 工作协程数
	Silent        bool          `json:"silent" yaml:"silent" ini:"silent"`                         // 是否静默模式
	Client        *elasticsearch.Client
	Ctx           context.Context
	ErrLogr       func(err error, msg ...any)
}

BulkIndexerConfig 批量索引器配置

func DefaultBulkIndexerConfig

func DefaultBulkIndexerConfig(client *elasticsearch.Client, ctx context.Context) BulkIndexerConfig

DefaultBulkIndexerConfig 返回默认的批量索引器配置

type BulkInsertResult

type BulkInsertResult struct {
	SuccessCount int                              `json:"success_count"`
	FailedCount  int                              `json:"failed_count"`
	Responses    []esutil.BulkIndexerResponseItem `json:"responses"`
}

BulkInsertResult 批量插入结果

func BulkInsert

func BulkInsert(index string, cfg BulkIndexerConfig, documents []map[string]any) (*BulkInsertResult, error)

BulkInsert 批量插入文档到Elasticsearch

type Config

type Config struct {
	DbIdentifier string `ini:"db_identifier" yaml:"db_identifier,omitempty" json:"db_identifier"`
	Schema       string `json:"schema" yaml:"schema" ini:"schema"`

	Addresses                   []string                                            `json:"addresses" yaml:"addresses" ini:"addresses"`                                           // 一个包含 Elasticsearch 节点地址的列表,用于客户端连接到 Elasticsearch 集群。
	Username                    string                                              `json:"username" yaml:"username" ini:"username"`                                              // HTTP 基本认证的用户名。
	Password                    string                                              `json:"password" yaml:"password" ini:"password"`                                              // HTTP 基本认证的密码。
	CloudID                     string                                              `json:"cloud_id" yaml:"cloud_id" ini:"cloud_id"`                                              // 当使用 Elastic 提供的服务时(例如通过 https://elastic.co/cloud),这是服务的终端地址。
	APIKey                      string                                              `json:"api_key" yaml:"api_key" ini:"api_key"`                                                 // 用于鉴权的 Base64 编码令牌。如果设置了该值,则会覆盖 Username/Password 和服务令牌进行鉴权
	ServiceToken                string                                              `json:"service_token" yaml:"service_token" ini:"service_token"`                               // 另一种形式的鉴权令牌。如果设置,它会覆盖 Username 和 Password 进行鉴权。
	CertificateFingerprint      string                                              `json:"certificate_fingerprint" yaml:"certificate_fingerprint" ini:"certificate_fingerprint"` // 在首次启动 Elasticsearch 时提供的 SHA256 散列指纹,用于验证服务器证书的真实性。
	Header                      http.Header                                         `json:"header" yaml:"header" ini:"header"`                                                    // 全局 HTTP 请求头,可以用来添加自定义头部信息到所有请求中。
	CACert                      []byte                                              `json:"ca_cert" yaml:"ca_cert" ini:"ca_cert"`                                                 // PEM 编码的证书颁发机构(CA)证书列表。当设置时,会创建一个新的空证书池,并将这些证书添加进去。仅在未指定传输或使用的是 http.Transport 时有效。
	CAPath                      string                                              `json:"ca_path" yaml:"ca_path" ini:"ca_path"`
	RetryOnStatus               []int                                               `json:"retry_on_status" yaml:"retry_on_status" ini:"retry_on_status"`                                     // 状态码列表,指示哪些状态码发生时应该重试请求。默认包括 502, 503, 504。
	DisableRetry                bool                                                `json:"disable_retry" yaml:"disable_retry" ini:"disable_retry"`                                           // 是否禁用自动重试功能,默认为 false。
	MaxRetries                  int                                                 `json:"max_retries" yaml:"max_retries" ini:"max_retries"`                                                 //  自动重试的最大次数,默认为 3 次。
	CompressRequestBody         bool                                                `json:"compress_request_body" yaml:"compress_request_body" ini:"compress_request_body"`                   // 是否压缩请求体,默认为 false。
	CompressRequestBodyLevel    int                                                 `json:"compress_request_body_level" yaml:"compress_request_body_level" ini:"compress_request_body_level"` // 如果启用请求体压缩,此选项设定压缩级别,默认为 gzip.DefaultCompression。
	PoolCompressor              bool                                                `json:"pool_compressor" yaml:"pool_compressor" ini:"pool_compressor"`                                     // 如果设置为 true,则使用基于 sync.Pool 的 gzip writer 来管理压缩器对象,默认为 false。
	DiscoverNodesOnStart        bool                                                `json:"discover_nodes_on_start" yaml:"discover_nodes_on_start" ini:"discover_nodes_on_start"`             // 初始化客户端时是否发现节点,默认为 false。
	DiscoverNodesInterval       time.Duration                                       `json:"discover_nodes_interval" yaml:"discover_nodes_interval" ini:"discover_nodes_interval"`             // 定期发现节点的时间间隔,默认为禁用。单位秒
	EnableMetrics               bool                                                `json:"enable_metrics" yaml:"enable_metrics" ini:"enable_metrics"`                                        // 启用指标收集,默认为 false。
	EnableDebugLogger           bool                                                `json:"enable_debug_logger" yaml:"enable_debug_logger" ini:"enable_debug_logger"`                         // 启用调试日志记录,默认为 false。
	EnableCompatibilityMode     bool                                                `json:"enable_compatibility_mode" yaml:"enable_compatibility_mode" ini:"enable_compatibility_mode"`       //  启用发送兼容性头部,默认为 false。
	DisableMetaHeader           bool                                                `json:"disable_meta_header" yaml:"disable_meta_header" ini:"disable_meta_header"`                         // 禁用额外的 "X-Elastic-Client-Meta" HTTP 头部,默认为 false。
	*simpleHttpClient.Transport `json:"transport" yaml:"transport" ini:"transport"` // 传输配置,
}

Config elastic 配置

func (Config) NewClient

func (this Config) NewClient() (*elasticsearch.Client, error)

func (*Config) SetInfo

func (this *Config) SetInfo(args ...any)

type IlmPolicy

type IlmPolicy struct {
	IlmPolicyName       string `json:"ilm_policy_name" yaml:"ilm_policy_name" ini:"ilm_policy_name"`                      // ilm策略名称
	MaxAge              string `json:"max_age" yaml:"max_age" ini:"max_age"`                                              // 最大存在时间
	MaxPrimaryShardDocs int    `json:"max_primary_shard_docs" yaml:"max_primary_shard_docs" ini:"max_primary_shard_docs"` // 最大文档数
	MaxPrimaryShardSize string `json:"max_primary_shard_size" yaml:"max_primary_shard_size" ini:"max_primary_shard_size"` // 最大主分片大小
	MaxDocs             int    `json:"max_docs" yaml:"max_docs" ini:"max_docs"`                                           // 最大文档数
	DeleteMinAge        string `json:"delete_min_age" yaml:"delete_min_age" ini:"delete_min_age"`                         // 处于删除阶段的数据留存时间 0d
}

func (IlmPolicy) Create

func (this IlmPolicy) Create(client *elasticsearch.Client) error

Create 创建生命周期策略

type Index

type Index struct {
	IndexName     string            `json:"index_name" yaml:"index_name" ini:"index_name"`                // 索引名
	ExtName       string            `json:"ext_name" yaml:"ext_name" ini:"ext_name"`                      // 扩展名
	IlmPolicyName string            `json:"ilm_policy_name" yaml:"ilm_policy_name" ini:"ilm_policy_name"` // ilm策略名
	Mappings      map[string]string `json:"mappings" yaml:"mappings" ini:"mappings"`                      // 索引映射
}

func (Index) Create

func (this Index) Create(client *elasticsearch.Client) error

Create 创建索引

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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