Documentation ¶
Index ¶
- Constants
- func BatchGenerateMetricsAgg(scene string, agg *elastic.TermsAggregation, params map[string]interface{}, ...) *elastic.TermsAggregation
- func BatchGetValueFromAggData(aggRes elastic.Aggregations, metricList []string) (result map[string]interface{}, err error)
- func BuildHistogramMetricsAgg(histogramName string, params map[string]interface{}, metricsList []string, ...) elastic.Aggregation
- func BuildTermAgg(scene string, params map[string]interface{}, termList []string, ...) elastic.Aggregation
- func CheckAggNeeReverse(metricName string, sceneName ...string) bool
- func CheckKeyNested(key string) (pth string, ky string, isNested bool)
- func GenTermKey(key string) string
- func GetBasicMetrics(ctx context.Context, metricsList []string, params map[string]interface{}, ...) (result map[string]interface{}, err error)
- func GetBasicMetricsWithQuery(ctx context.Context, params map[string]interface{}, metricsList []string, ...) (result map[string]interface{}, err error)
- func GetValueFromAggData(aggRes elastic.Aggregations, metricsName string) (result interface{})
- func SetESIndexNameFunc(fn ESIndexFunc)
- func SetEsIndex(index string)
- func SetHistogramAgg(histogramName string, metricsFunc AggHistogramFunc)
- func SetMetricsAgg(metricName string, aggFuncList ...AggFunc)
- func SetMetricsAggFunc(fn GetAggFunc)
- func SetMetricsReverse(fn CheckAggReverseNest)
- type AggFunc
- type AggHistogramFunc
- type CheckAggReverseNest
- type ESConfig
- type ESIndexFunc
- type EsAggregation
- type EsQueryBuilder
- func (builder *EsQueryBuilder) GetStringQuery() string
- func (builder *EsQueryBuilder) GetTermsMetrics(ctx context.Context, client *elastic.Client, indexList []string, ...) (result TermResult, requestQuery string, err error)
- func (builder *EsQueryBuilder) LoadParams(termsList []string, metricsList []string, params map[string]interface{}, ...) *EsQueryBuilder
- func (builder *EsQueryBuilder) ParseAgg(params map[string]interface{}, termsList []string, metricsList []string, ...) interface{}
- func (builder *EsQueryBuilder) ParseParamsToQuery(termsList []string, metricsList []string, params map[string]interface{}, ...) interface{}
- func (builder *EsQueryBuilder) ParseQuery(params map[string]interface{}) interface{}
- func (builder *EsQueryBuilder) ParseSearchResult(searchResult *elastic.SearchResult) (result TermResult, err error)
- type EsQueryCondition
- type EsQueryConfig
- type EsTerm
- type FilterFunc
- type GetAggFunc
- type HistogramItem
- type HistogramResult
- type ParamsMapList
- func (pl *ParamsMapList) GenerateEsQueryConfig() []*EsQueryCondition
- func (pl *ParamsMapList) GenerateQuery() elastic.Query
- func (pl *ParamsMapList) GetKeyBodyOnce(path string, key string) (item *SearchCondition, exist bool)
- func (pl *ParamsMapList) LoadConfig(sceneName string, params map[string]interface{}) *ParamsMapList
- type SearchCondition
- type TermItem
- type TermResult
- func BatchGetValueFromTerms(aggRes elastic.Aggregations, metricList []string, termsList []string) (result TermResult, err error)
- func GetTermsMetrics(ctx context.Context, termsList []string, metricsList []string, ...) (result TermResult, err error)
- func GetTermsMetricsWithQuery(ctx context.Context, params map[string]interface{}, termsList []string, ...) (result TermResult, err error)
- func (ti *TermResult) GetMapDataResult(outputTerm []int, termFilter FilterFunc) (result []map[string]interface{}, err error)
- func (ti *TermResult) LoopTermsFromAgg(aggRes *elastic.AggregationBucketKeyItems, columnValue []interface{}, ...) error
- func (ti *TermResult) TermFilter(targetTerms TermItem, termFilter ...interface{}) bool
Constants ¶
const ( SignAggList = "metrics_list" SignSingle = "metric_data" SignFilter = "metric_filter" SignFilterReverse = "metric_filter_reverse" SignTerms = "metrics_terms" SignChild = "metrics_child" SignNested = "." // nested类型字段连接方式 nested A下的字段B, 写成 A.B 实际按 SignObject = ">" // object类型字段链接方式 object A下的字段 B, 写成 A>B, 最终转换成 A.B SignTimeRange = "agg_time_range" // 从外来参数传入到指标中的参数标识 )
const ( TypeTerms = "terms" TypeCount = "count" TypeTerm = "term" TypeSum = "sum" TypeAvg = "avg" TypeNested = "nested" QueryMust = "must" QueryRange = "range" QueryMustMulti = "mustMulti" QueryMustNot = "MustNot" QueryMustNotMulti = "mustNotMulti" SignNotNull = "NOT_NULL" // 非空标识符 SignMustNot = "MUST_NOT" // 标记必须非空 SignExist = "COLUMN_EXIST" // 标记字段必须存在 MaxSize = 10000000 // 聚合 terms 的时候的最大数量 )
Variables ¶
This section is empty.
Functions ¶
func BatchGenerateMetricsAgg ¶
func BatchGenerateMetricsAgg(scene string, agg *elastic.TermsAggregation, params map[string]interface{}, metricsList []string, currentTerm string) *elastic.TermsAggregation
BatchGenerateMetricsAgg 将指标批量加载进去
func BatchGetValueFromAggData ¶
func BatchGetValueFromAggData(aggRes elastic.Aggregations, metricList []string) (result map[string]interface{}, err error)
BatchGetValueFromAggData 从 agg 中提取数据
func BuildHistogramMetricsAgg ¶
func BuildHistogramMetricsAgg(histogramName string, params map[string]interface{}, metricsList []string, sceneName ...string) elastic.Aggregation
BuildHistogramMetricsAgg 构建直方图的agg
func BuildTermAgg ¶
func BuildTermAgg(scene string, params map[string]interface{}, termList []string, metricsList []string, level ...int) elastic.Aggregation
BuildTermAgg 递归生成多级 term
func CheckAggNeeReverse ¶ added in v0.0.23
CheckAggNeeReverse 检测该指标是否就是需要在 nested 环境下使用 true 则不执行 reverse_nested
func CheckKeyNested ¶ added in v0.0.6
func GetBasicMetrics ¶
func GetBasicMetrics(ctx context.Context, metricsList []string, params map[string]interface{}, client *elastic.Client, sceneName ...string) (result map[string]interface{}, err error)
GetBasicMetrics 获取简单指标
func GetBasicMetricsWithQuery ¶
func GetBasicMetricsWithQuery(ctx context.Context, params map[string]interface{}, metricsList []string, query elastic.Query, client *elastic.Client, sceneName ...string) (result map[string]interface{}, err error)
GetBasicMetricsWithQuery 以原生传query 的方式获取值
func GetValueFromAggData ¶
func GetValueFromAggData(aggRes elastic.Aggregations, metricsName string) (result interface{})
GetValueFromAggData 单个指标从 agg 中取数
func SetESIndexNameFunc ¶ added in v0.1.2
func SetESIndexNameFunc(fn ESIndexFunc)
SetESIndexNameFunc 设置默认的索引
func SetHistogramAgg ¶
func SetHistogramAgg(histogramName string, metricsFunc AggHistogramFunc)
SetHistogramAgg 设置
func SetMetricsAgg ¶
func SetMetricsAggFunc ¶ added in v0.0.22
func SetMetricsAggFunc(fn GetAggFunc)
SetMetricsAggFunc 设置获取指标信息的方法
func SetMetricsReverse ¶ added in v0.0.23
func SetMetricsReverse(fn CheckAggReverseNest)
Types ¶
type AggHistogramFunc ¶
type AggHistogramFunc func(aggList map[string]elastic.Aggregation) elastic.Aggregation
AggHistogramFunc 直方聚合查询
type CheckAggReverseNest ¶ added in v0.0.23
type ESConfig ¶
type ESConfig struct { EsIndex string // 要用到的 es 文档 AggFuncList map[string]AggFunc // 存放 AggFunc 函数 HistogramList map[string]AggHistogramFunc // 存放直方图聚合指标 GetAggListFunc GetAggFunc ESIndexNameFunc ESIndexFunc sync.Mutex }
func GetEsConfig ¶ added in v0.0.7
func GetEsConfig() *ESConfig
func (*ESConfig) GetEsIndex ¶
func (*ESConfig) GetHistogramAgg ¶
type ESIndexFunc ¶ added in v0.1.2
type EsAggregation ¶
type EsAggregation struct { ESIndex string `json:"es_index"` Type string `json:"type"` // 聚合类型 count/terms/avg MetricsName string `json:"metrics_name"` // 指标名称 Field string `json:"field"` // 要聚合的字段名 FieldPath string `json:"filed_path"` // 字段路径 Size int `json:"size"` // 数量限制 1000 FieldType string `json:"filed_type"` // 字段类型 term/nested TermQuery *EsQueryConfig `json:"term_query"` // 如果是type是 terms 的, 需要指定筛选条件 SearchQuery *EsQueryConfig `json:"search_query"` // 整体数据的搜索条件 ParamsMapList *ParamsMapList // 初始化后的参数配置 // contains filtered or unexported fields }
type EsQueryBuilder ¶ added in v0.0.6
type EsQueryBuilder struct { RequestQuery interface{} `json:"request_query"` // contains filtered or unexported fields }
func (*EsQueryBuilder) GetStringQuery ¶ added in v0.0.6
func (builder *EsQueryBuilder) GetStringQuery() string
func (*EsQueryBuilder) GetTermsMetrics ¶ added in v0.0.22
func (*EsQueryBuilder) LoadParams ¶ added in v0.0.6
func (builder *EsQueryBuilder) LoadParams(termsList []string, metricsList []string, params map[string]interface{}, sceneName ...string) *EsQueryBuilder
LoadParams 这里是一切的入口
func (*EsQueryBuilder) ParseAgg ¶ added in v0.0.6
func (builder *EsQueryBuilder) ParseAgg(params map[string]interface{}, termsList []string, metricsList []string, sceneName ...string) interface{}
ParseAgg 解析 agg
func (*EsQueryBuilder) ParseParamsToQuery ¶ added in v0.0.6
func (builder *EsQueryBuilder) ParseParamsToQuery(termsList []string, metricsList []string, params map[string]interface{}, sceneName ...string) interface{}
ParseParamsToQuery 返回完整的 terms 聚合query, 直接用到es查询中
func (*EsQueryBuilder) ParseQuery ¶ added in v0.0.6
func (builder *EsQueryBuilder) ParseQuery(params map[string]interface{}) interface{}
ParseQuery 解析筛选主文档的 query
func (*EsQueryBuilder) ParseSearchResult ¶ added in v0.0.6
func (builder *EsQueryBuilder) ParseSearchResult(searchResult *elastic.SearchResult) (result TermResult, err error)
ParseSearchResult 解析结果, 得是从 builder 生成出去的 query 返回的结果这里能解析出来
type EsQueryCondition ¶
type EsQueryCondition struct { Type string // key 类型 term/terms/nested Path string // nested 的路径 join_classes Conditions []*SearchCondition }
EsQueryCondition es 搜索条件
func (*EsQueryCondition) BuildWithQuery ¶
func (ec *EsQueryCondition) BuildWithQuery(query *elastic.BoolQuery) *elastic.BoolQuery
func (*EsQueryCondition) LoadConditionsFromParamsConfig ¶
func (ec *EsQueryCondition) LoadConditionsFromParamsConfig(mapList map[string]bool, pl *ParamsMapList)
LoadConditionsFromParamsConfig 从参数配置中加载对应的配置
func (*EsQueryCondition) LoadValueFromParams ¶
func (ec *EsQueryCondition) LoadValueFromParams(params map[string]interface{}) error
LoadValueFromParams 从外部传入的 params 中获取参数
type EsQueryConfig ¶
type EsQueryConfig struct {
Conditions []*EsQueryCondition
}
func (*EsQueryConfig) BuildBoolQuery ¶
func (ecg *EsQueryConfig) BuildBoolQuery() *elastic.BoolQuery
func (*EsQueryConfig) CombineParamsConfig ¶
func (eqc *EsQueryConfig) CombineParamsConfig(paramsConfig *ParamsMapList)
CombineParamsConfig 将 params 的配置合并到当前搜索中
func (*EsQueryConfig) LoadValueFromParams ¶
func (eqc *EsQueryConfig) LoadValueFromParams(params map[string]interface{}) error
LoadValueFromParams 从外部传入的 params 中获取参数
type EsTerm ¶
type EsTerm struct { ConfigType string //指标的类型 terms ColumnType string //字段类型 term/nested Path string // 字段是 nested 时的路径, 如 join_classes ColumnName string // 字段 key 值, 例如 join_classes.cust_wxid }
EsTerm 指标配置, 只允许一个字段值做指标
type FilterFunc ¶ added in v0.0.12
type FilterFunc func(curTermItem []interface{}) bool
type GetAggFunc ¶ added in v0.0.22
type HistogramItem ¶
type HistogramItem struct { KeyAsString string Key interface{} DocCount int64 Metrics map[string]interface{} }
func (*HistogramItem) LoadDataFromItem ¶
func (hi *HistogramItem) LoadDataFromItem(bucketItem *elastic.AggregationBucketHistogramItem, metricsList []string) error
type HistogramResult ¶
type HistogramResult struct { HistogramName string MetricsList []string Result []HistogramItem }
func GetHistogramMetrics ¶
func GetHistogramMetrics(ctx context.Context, histogramName string, metricsList []string, params map[string]interface{}, client *elastic.Client, sceneName ...string) (result HistogramResult, err error)
GetHistogramMetrics 获取直方图聚合指标
func GetHistogramMetricsWithQuery ¶
func GetHistogramMetricsWithQuery(ctx context.Context, histogramName string, params map[string]interface{}, metricsList []string, query elastic.Query, client *elastic.Client, sceneName ...string) (result HistogramResult, err error)
GetHistogramMetricsWithQuery 获取直方图, 参数由 query 格式传入
func (*HistogramResult) LoadDataFromAggregations ¶
func (hr *HistogramResult) LoadDataFromAggregations(aggRes elastic.Aggregations) (HistogramResult, error)
LoadDataFromAggregations 从返回结果中解析直方图的结果
type ParamsMapList ¶
type ParamsMapList struct { SceneName string `json:"scene_name"` //MetricsName string `json:"metrics_name"` Params map[string]string `json:"params"` NestedGroup map[string]map[string]bool // 结构是 nested path: []key OriginList map[string]*SearchCondition // 指定的 key => 最终生效的查询 EsQueryConfig *EsQueryConfig // 最终生成的 query 组合 }
ParamsMapList 参数映射图
func (*ParamsMapList) GenerateEsQueryConfig ¶
func (pl *ParamsMapList) GenerateEsQueryConfig() []*EsQueryCondition
func (*ParamsMapList) GenerateQuery ¶
func (pl *ParamsMapList) GenerateQuery() elastic.Query
func (*ParamsMapList) GetKeyBodyOnce ¶
func (pl *ParamsMapList) GetKeyBodyOnce(path string, key string) (item *SearchCondition, exist bool)
GetKeyBodyOnce 从 OriginList 去除
func (*ParamsMapList) LoadConfig ¶
func (pl *ParamsMapList) LoadConfig(sceneName string, params map[string]interface{}) *ParamsMapList
type SearchCondition ¶
type SearchCondition struct { Type string // term/terms/range/ Key string // 字段名 join_classes.cust_wxid Optional int // 是否可选, 1 可选, 0 必填 Value interface{} //字段值 xxxwww }
func (*SearchCondition) LoadValueFromParams ¶
func (sc *SearchCondition) LoadValueFromParams(params map[string]interface{}) error
LoadValueFromParams 从外部传入的 params 中获取参数
type TermItem ¶
type TermItem struct { Terms []interface{} Cnt int64 Data map[string]interface{} // contains filtered or unexported fields }
func (*TermItem) GetCombineTerm ¶
GetCombineTerm 获取
func (*TermItem) GetFilteredData ¶
GetFilteredData 将 nil 值转成0
type TermResult ¶
func BatchGetValueFromTerms ¶
func BatchGetValueFromTerms(aggRes elastic.Aggregations, metricList []string, termsList []string) (result TermResult, err error)
BatchGetValueFromTerms 从聚合 terms 中批量获取值
func GetTermsMetrics ¶
func GetTermsMetrics(ctx context.Context, termsList []string, metricsList []string, params map[string]interface{}, client *elastic.Client, sceneName ...string) (result TermResult, err error)
GetTermsMetrics 获取多级指标
func GetTermsMetricsWithQuery ¶
func GetTermsMetricsWithQuery(ctx context.Context, params map[string]interface{}, termsList []string, metricsList []string, query elastic.Query, client *elastic.Client, sceneName ...string) (result TermResult, err error)
GetTermsMetricsWithQuery 以原生传参的方式, 获取聚合指标
func (*TermResult) GetMapDataResult ¶
func (ti *TermResult) GetMapDataResult(outputTerm []int, termFilter FilterFunc) (result []map[string]interface{}, err error)
GetMapDataResult 获取扁平化的结果, 如果存在 termFilter , 则根据filter 值得顺序进行过滤
func (*TermResult) LoopTermsFromAgg ¶
func (ti *TermResult) LoopTermsFromAgg(aggRes *elastic.AggregationBucketKeyItems, columnValue []interface{}, level ...int) error
LoopTermsFromAgg 当传入到这里的时候, 已经能取一级 term 的 bucket 了 LoopTermsFromAgg 当传入到这里的时候, 已经能取一级 term 的 bucket 了
func (*TermResult) TermFilter ¶ added in v0.0.11
func (ti *TermResult) TermFilter(targetTerms TermItem, termFilter ...interface{}) bool