|
@@ -1375,3 +1375,50 @@ func GetResForJYView(index, itype string, keys []KeyConfig, allquery, findfields
|
|
|
return nil
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+//返回count 和 res
|
|
|
+func GetWithCount(index, itype, query string) (int64, *[]map[string]interface{}) {
|
|
|
+ client := GetEsConn()
|
|
|
+ defer func() {
|
|
|
+ go DestoryEsConn(client)
|
|
|
+ }()
|
|
|
+ var res []map[string]interface{}
|
|
|
+ var count int64 = 0
|
|
|
+ if client != nil {
|
|
|
+ defer func() {
|
|
|
+ if r := recover(); r != nil {
|
|
|
+ log.Println("[E]", r)
|
|
|
+ for skip := 1; ; skip++ {
|
|
|
+ _, file, line, ok := runtime.Caller(skip)
|
|
|
+ if !ok {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ go log.Printf("%v,%v\n", file, line)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ searchResult, err := client.Search().Index(index).Type(itype).Source(query).Do()
|
|
|
+ if err != nil {
|
|
|
+ log.Println("从ES查询出错", err.Error())
|
|
|
+ return count, nil
|
|
|
+ }
|
|
|
+
|
|
|
+ if searchResult.Hits != nil {
|
|
|
+ resNum := len(searchResult.Hits.Hits)
|
|
|
+ count = searchResult.Hits.TotalHits
|
|
|
+ if resNum > 5000 {
|
|
|
+ log.Println("查询结果太多,查询到:", resNum, "条")
|
|
|
+ } else {
|
|
|
+ res = make([]map[string]interface{}, resNum)
|
|
|
+ for i, hit := range searchResult.Hits.Hits {
|
|
|
+ parseErr := json.Unmarshal(*hit.Source, &res[i])
|
|
|
+ if parseErr == nil && hit.Highlight != nil && res[i] != nil {
|
|
|
+ res[i]["highlight"] = map[string][]string(hit.Highlight)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return count, &res
|
|
|
+}
|