From 845f643c1aaaa37a53219b6f11b77a1b333cf619 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期一, 09 十二月 2019 20:42:28 +0800
Subject: [PATCH] add track cache util
---
EsClient.go | 29 +++++++++++++-
EsApi.go | 91 ++++++++++++++++++++++++---------------------
2 files changed, 75 insertions(+), 45 deletions(-)
diff --git a/EsApi.go b/EsApi.go
index ccf41b4..1ab935d 100644
--- a/EsApi.go
+++ b/EsApi.go
@@ -72,45 +72,46 @@
if err != nil {
return "", err
}
+
feature := sources[0]["targetInfo"].([]interface{})[0].(map[string]interface{})["feature"].(string)
return feature, nil
}
//鏍规嵁鐩爣id杩藉姞璺熻釜淇℃伅
-func AppendTargetInfo(id string,targetInfo string, indexName string, serverIp string, serverPort string)(string,error){
- if targetInfo == ""{
- return "",errors.New("append data is nil")
+func AppendTargetInfo(id string, targetInfo string, indexName string, serverIp string, serverPort string) (string, error) {
+ if targetInfo == "" {
+ return "", errors.New("append data is nil")
}
var info interface{}
url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_update_by_query?refresh=true"
jsonDSL := `{
"query": {
"term":{
- "id":"`+id+`"
+ "id":"` + id + `"
}
},
"script": {
"lang": "painless",
"inline": "ctx._source.linkTagInfo.add(params.newparam)",
"params": {
- "newparam": `+targetInfo+`
+ "newparam": ` + targetInfo + `
}
}
}`
fmt.Println(jsonDSL)
buf, err := EsReq("POST", url, []byte(jsonDSL))
if err != nil {
- return "",err
+ return "", err
}
- json.Unmarshal(buf,&info)
+ json.Unmarshal(buf, &info)
out, ok := info.(map[string]interface{})
fmt.Println(out)
if !ok {
- return "",errors.New("http response interface can not change map[string]interface{}")
+ return "", errors.New("http response interface can not change map[string]interface{}")
}
middle, ok := out["updated"].(float64)
if !ok {
- return "",errors.New("first updated change error!")
+ return "", errors.New("first updated change error!")
}
mes := ""
if middle == 1 {
@@ -119,7 +120,7 @@
if middle == 0 {
mes = "宸茬粡杩藉姞"
}
- return mes,nil
+ return mes, nil
}
@@ -176,7 +177,7 @@
return statu
}
-//鑾峰彇褰撳墠鑺傜偣鎶撴媿搴撴墍鏈変汉鍛業D
+//鑾峰彇褰撳墠鑺傜偣鎶撴媿搴撴墍鏈変汉鍛業D*缂撳瓨*
func GetAllLocalVideopersonsId(compareArgs protomsg.CompareArgs, indexName string, serverIp string, serverPort string, alarmLevelTypes string) (capturetable []string) {
queryStr := ""
queryBody := compareArgs.InputValue
@@ -347,26 +348,26 @@
"/" + indexName + "/_search"
var filterArr []string
if isAlarm != "all" {
- filterArr = append(filterArr,` {
+ filterArr = append(filterArr, ` {
"term":{
- "isAlarm":"` + isAlarm + `"
+ "isAlarm":"`+isAlarm+`"
}
}`)
}
if category != "all" {
- filterArr = append(filterArr,` {
+ filterArr = append(filterArr, ` {
"term":{
- "targetInfo.targetType":"` + category + `"
+ "targetInfo.targetType":"`+category+`"
}
}`)
}
- queryStr := `"query":{
+ queryStr := `"query":{
"bool":{
"filter":[
- `+strings.Join(filterArr,",")+`
+ ` + strings.Join(filterArr, ",") + `
]
}
},`
@@ -635,22 +636,22 @@
}
/****************************************浠ヤ笅涓簊dkCompare姣斿缂撳瓨浣跨敤鏂规硶*********************************************/
-//鑾峰彇鏌ヨ鎬绘暟
-func GetTotal(serverIp string, serverPort string, indexName string, shards string) (total int) {
+//鑾峰彇鏌ヨ鎬绘暟 *缂撳瓨*
+func GetTotal(serverIp string, serverPort string, indexName string, shards string, targetType string) (total int) {
JsonDSL := `{
"size": 0,
"query": {
"bool": {
"filter": [{
"term": {
- "targetInfo.targetType.raw": "face"
+ "targetInfo.targetType.raw": "`+targetType+`"
}
}]
}
}
}`
- url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search"
+ url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search?preference=_shards:" + shards + "|_only_local"
buf, err := EsReq("POST", url, []byte(JsonDSL))
if err != nil {
return
@@ -670,11 +671,17 @@
}
-//鏌ヨ鏃堕棿娈垫暟鎹�
-func GetPeriodInfos(serverIp string, serverPort string, startTime string, endTime string, indexName string, shards string) ([]*protomsg.Esinfo, error) {
- var capdbinfo []*protomsg.Esinfo
+//鏌ヨ鏃堕棿娈垫暟鎹� *缂撳瓨*
+func GetPeriodInfos(serverIp string, serverPort string, startTime string, endTime string, indexName string, shards string, targetType string) ([]*protomsg.MultiFeaCache, error) {
+ var capdbinfo []*protomsg.MultiFeaCache
url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search?preference=_shards:" + shards + "|_only_local"
-
+ var source []string
+ switch targetType {
+ case "face":
+ source = []string{"id","targetInfo.feature","analyServerId","cameraId"}
+ case "track":
+ source = []string{"id","targetInfo.feature","analyServerId","cameraId","targetInfo.attachTarget.feature","linkTagInfo.targetInfo.feature","linkTagInfo.targetInfo.attachTarget.feature","linkTagInfo.cameraId"}
+ }
JsonDSL := `
{
"query": {
@@ -682,7 +689,7 @@
"filter": [
{
"term": {
- "targetInfo.targetType.raw": "face"
+ "targetInfo.targetType.raw": "`+targetType+`"
}
},
{
@@ -697,15 +704,12 @@
}
},
"size": 1000000,
- "_source": [
- "id",
- "targetInfo.feature",
- "analyServerId"
- ]
+ "_source": ["`+strings.Replace(strings.Trim(fmt.Sprint(source), "[]"), " ", "\",\"", -1)+`"]
}
`
//logger.Debug(url)
//logger.Debug(JsonDSL)
+ //fmt.Println(JsonDSL)
buf, err := EsReq("POST", url, []byte(JsonDSL))
if err != nil {
return capdbinfo, errors.New("http request dbtablename info is err!")
@@ -716,19 +720,26 @@
if err != nil {
return capdbinfo, err
}
-
+ //fmt.Println(sources)
// 杩斿洖鎵�鏈夋煡璇㈢殑鏁版嵁
capdbinfos := Parsesources(sources)
return capdbinfos, nil
-
}
-// 鏌ヨ搴曞簱浜哄憳淇℃伅
-func GetOceanFeatures(serverIp string, serverPort string, queryIndexNum int, queryNums int, indexName string, shards string) ([]*protomsg.Esinfo, error) {
- var dbinfos []*protomsg.Esinfo
+// 鏌ヨ搴曞簱浜哄憳淇℃伅*缂撳瓨*
+func GetOceanFeatures(serverIp string, serverPort string, queryIndexNum int, queryNums int, indexName string, shards string, targetType string) ([]*protomsg.MultiFeaCache, error) {
+ var dbinfos []*protomsg.MultiFeaCache
point := strconv.Itoa(queryIndexNum)
number := strconv.Itoa(queryNums)
JsonDSL := ""
+ var source []string
+ switch targetType {
+ case "face":
+ source = []string{"id","targetInfo.feature","analyServerId"}
+ case "track":
+ source = []string{"id","targetInfo.feature","analyServerId","targetInfo.attachTarget.feature","linkTagInfo.targetInfo.feature","linkTagInfo.targetInfo.attachTarget.feature"}
+ }
+
url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search?preference=_shards:" + shards + "|_only_local"
JsonDSL = ` {
"from": ` + point + `,
@@ -737,18 +748,14 @@
"filter": [
{
"term": {
- "targetInfo.targetType.raw": "face"
+ "targetInfo.targetType.raw": "`+targetType+`"
}
}
]
}
},
"size":` + number + `,
- "_source": [
- "id",
- "targetInfo.feature",
- "analyServerId"
- ]
+ "_source": ["`+strings.Replace(strings.Trim(fmt.Sprint(source), "[]"), " ", "\",\"", -1)+`"]
}`
buf, err := EsReq("POST", url, []byte(JsonDSL))
diff --git a/EsClient.go b/EsClient.go
index 5bb105d..6064067 100644
--- a/EsClient.go
+++ b/EsClient.go
@@ -57,9 +57,10 @@
}
}
-func Parsesources(sources []map[string]interface{}) (esinfos []*protomsg.Esinfo) {
+func Parsesources(sources []map[string]interface{}) (multiInfos []*protomsg.MultiFeaCache) {
var ok bool
for _, source := range sources {
+ var multiInfo protomsg.MultiFeaCache
var tmpinfo protomsg.Esinfo
tmpinfo.Id, ok = source["id"].(string)
if !ok {
@@ -72,14 +73,36 @@
if !ok {
continue
}
+ if m["attachTarget"] != nil {
+ multiInfo.AttachFeature, ok = m["attachTarget"].(map[string]interface{})["feature"].(string)
+ }
}
}
tmpinfo.AnalyServerId, ok = source["analyServerId"].(string)
if !ok {
continue
}
- esinfos = append(esinfos, &tmpinfo)
-
+ multiInfo.EsInfo = &tmpinfo
+ multiInfo.CameraId, ok = source["cameraId"].(string)
+ //fmt.Println(source["cameraId"])
+ leis := make([]*protomsg.LinkEsInfo,0)
+ if source["linkTagInfo"] != nil{
+ for _,v := range source["linkTagInfo"].([]interface{}) {
+ var lei protomsg.LinkEsInfo
+ mi := v.(map[string]interface{})
+ lei.CameraId, ok = mi["feature"].(string)
+ if mi["targetInfo"] != nil {
+ for _,val := range mi["targetInfo"].([]interface{}){
+ fmi := val.(map[string]interface{})
+ lei.Feature,ok = fmi["feature"].(string)
+ lei.AttachFeature, ok = fmi["attachTarget"].(map[string]interface{})["feature"].(string)
+ }
+ }
+ leis = append(leis, &lei)
+ }
+ }
+ multiInfo.LinkEsInfo = leis
+ multiInfos = append(multiInfos, &multiInfo)
}
return
}
--
Gitblit v1.8.0