filter data

This commit is contained in:
liugq 2022-05-26 16:41:34 +08:00
parent 310497242b
commit 30ec0b6bfb
1 changed files with 37 additions and 15 deletions

View File

@ -25,8 +25,24 @@ func (handler APIHandler) ElasticsearchOverviewAction(w http.ResponseWriter, req
// return true // return true
//}) //})
esClient := elastic.GetClient(handler.Config.Elasticsearch) esClient := elastic.GetClient(handler.Config.Elasticsearch)
queryDsl := util.MapStr{
"size": 100,
}
clusterFilter, hasAllPrivilege := handler.GetClusterFilter(req, "_id")
if !hasAllPrivilege && clusterFilter == nil{
handler.WriteJSON(w, util.MapStr{
"nodes_count": 0,
"cluster_count":0,
"total_used_store_in_bytes": 0,
"hosts_count": 0,
}, http.StatusOK)
return
}
if !hasAllPrivilege {
queryDsl["query"] = clusterFilter
}
searchRes, err := esClient.SearchWithRawQueryDSL(orm.GetIndexName(elastic.ElasticsearchConfig{}), nil) searchRes, err := esClient.SearchWithRawQueryDSL(orm.GetIndexName(elastic.ElasticsearchConfig{}), util.MustToJSONBytes(queryDsl))
if err != nil { if err != nil {
log.Error(err) log.Error(err)
handler.WriteJSON(w, util.MapStr{ handler.WriteJSON(w, util.MapStr{
@ -64,11 +80,11 @@ func (handler APIHandler) ElasticsearchOverviewAction(w http.ResponseWriter, req
} }
} }
hostCount, err := handler.getMetricCount(orm.GetIndexName(elastic.NodeConfig{}), "metadata.host") hostCount, err := handler.getMetricCount(orm.GetIndexName(elastic.NodeConfig{}), "metadata.host", clusterIDs)
if err != nil{ if err != nil{
log.Error(err) log.Error(err)
} }
nodeCount, err := handler.getMetricCount(orm.GetIndexName(elastic.NodeConfig{}), "id") nodeCount, err := handler.getMetricCount(orm.GetIndexName(elastic.NodeConfig{}), "id", clusterIDs)
if err != nil{ if err != nil{
log.Error(err) log.Error(err)
} }
@ -130,20 +146,26 @@ func (handler APIHandler) getLatestClusterMonitorData(clusterIDs []interface{})
} }
func (handler APIHandler) getMetricCount(indexName, field string) (interface{}, error){ func (handler APIHandler) getMetricCount(indexName, field string, clusterIDs []interface{}) (interface{}, error){
client := elastic.GetClient(handler.Config.Elasticsearch) client := elastic.GetClient(handler.Config.Elasticsearch)
queryDSL := `{ queryDSL := util.MapStr{
"size": 0, "size": 0,
"aggs": { "aggs": util.MapStr{
"field_count": { "field_count": util.MapStr{
"cardinality": { "cardinality": util.MapStr{
"field": "%s" "field": field,
},
},
},
}
if len(clusterIDs) > 0 {
queryDSL["query"] = util.MapStr{
"terms": util.MapStr{
"metadata.cluster_id": clusterIDs,
},
} }
} }
} searchRes, err := client.SearchWithRawQueryDSL(indexName, util.MustToJSONBytes(queryDSL))
}`
queryDSL = fmt.Sprintf(queryDSL, field)
searchRes, err := client.SearchWithRawQueryDSL(indexName, []byte(queryDSL))
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return 0, err return 0, err