| | |
| | | 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 { |
| | |
| | | if middle == 0 { |
| | | mes = "已经追加" |
| | | } |
| | | return mes,nil |
| | | return mes, nil |
| | | |
| | | } |
| | | |
| | |
| | | return statu |
| | | } |
| | | |
| | | //获取当前节点抓拍库所有人员ID |
| | | //获取当前节点抓拍库所有人员ID*缓存* |
| | | func GetAllLocalVideopersonsId(compareArgs protomsg.CompareArgs, indexName string, serverIp string, serverPort string, alarmLevelTypes string) (capturetable []string) { |
| | | queryStr := "" |
| | | queryBody := compareArgs.InputValue |
| | |
| | | "/" + 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, ",") + ` |
| | | ] |
| | | } |
| | | },` |
| | |
| | | } |
| | | |
| | | /****************************************以下为sdkCompare比对缓存使用方法*********************************************/ |
| | | //获取查询总数 |
| | | 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 |
| | |
| | | |
| | | } |
| | | |
| | | //查询时间段数据 |
| | | 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": { |
| | |
| | | "filter": [ |
| | | { |
| | | "term": { |
| | | "targetInfo.targetType.raw": "face" |
| | | "targetInfo.targetType.raw": "`+targetType+`" |
| | | } |
| | | }, |
| | | { |
| | |
| | | } |
| | | }, |
| | | "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!") |
| | |
| | | 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 + `, |
| | |
| | | "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)) |
| | |
| | | } |
| | | } |
| | | |
| | | 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 { |
| | |
| | | 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 |
| | | } |