标签:res fmt 查询 神器 Println Result go data es
可以通过关键字和时间间隔进行查询,关键字可以像kibana上的查询语句填写,代码搞起
//搜索返回的内容
type Result struct {
Message string `json:"message"`
Source string `json:"source"`
//Host string `json:"host"`
}
type SearchEs struct {
}
func NewSearchEs() *SearchEs {
return &SearchEs{}
}
func (s *SearchEs) GetMessage(alerts model.Alerts) ([]Result,error) {
fmt.Println("开始通过es查找关键字。。。",alerts.KeyWorld)
boolQuery := elastic.NewBoolQuery()
stringQuery := elastic.NewQueryStringQuery(alerts.KeyWorld)
//查询时间时间
startTime := "now-" + alerts.IntervalTime + "m"
rangeQuery := elastic.NewRangeQuery("@timestamp").Gte(startTime).Lte("now")
boolQuery.Filter(stringQuery,rangeQuery)
//index前缀+index时间
indexTime := time.Now().Format("2006.01.02")
fmt.Println(indexTime)
index := alerts.IndexName + "-" + indexTime
fmt.Println(index)
//查询
res,err := es.EsClient.Search(index).Query(boolQuery).Sort("@timestamp",false).Do(es.Ctx)
if err !=nil{
log.Println("查询失败,",err)
return nil, err
}
fmt.Println("查询命中次数,",res.TotalHits())
if res.TotalHits() > 0 {
fmt.Println("开始转换值")
data := NewSearchEs().SearchValue(res)
return data,nil
}
return nil, err
}
//转换需要返回的数据
func (s *SearchEs) SearchValue(res *elastic.SearchResult) []Result {
var result Result
data := make([]Result,0)
fmt.Println(res.TotalHits())
for _,item := range res.Each(reflect.TypeOf(result)){
t := item.(Result)
fmt.Println("查询结果为,",t)
data = append(data, t)
}
return data
}
标签:res,fmt,查询,神器,Println,Result,go,data,es 来源: https://www.cnblogs.com/aiverhua/p/16615674.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。