wangshan 2 tahun lalu
induk
melakukan
0946c2a41a
1 mengubah file dengan 47 tambahan dan 0 penghapusan
  1. 47 0
      src/qfw/util/elastic/elasticutil.go

+ 47 - 0
src/qfw/util/elastic/elasticutil.go

@@ -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
+}