sunty
2019-12-09 845f643c1aaaa37a53219b6f11b77a1b333cf619
add track cache util
2个文件已修改
120 ■■■■■ 已修改文件
EsApi.go 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EsClient.go 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
}
//获取当前节点抓拍库所有人员ID
//获取当前节点抓拍库所有人员ID*缓存*
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 @@
}
/****************************************以下为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
@@ -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))
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
}