package esutil import ( "encoding/json" "errors" "fmt" "strconv" "strings" "basic.com/pubsub/protomsg.git" ) // 查询底库人员信息 func Personinfos( queryIndex int, queryNums int, indexName string, serverIp string, serverPort string, analyServerId string) ([]*protomsg.Esinfo, error){ var dbinfos []*protomsg.Esinfo point := strconv.Itoa(queryIndex) number := strconv.Itoa(queryNums) JsonDSL := "" if indexName == "videopersons" { JsonDSL = ` { "from": ` + point + `, "query": { "bool": { "filter": [ { "term": { "analyServerId": "` + analyServerId + `" } } ] } }, "size":`+ number +`, "_source": [ "id", "faceFeature" ] }` }else { JsonDSL = ` { "from": ` + point + `, "query": { "match_all": {} }, "size":`+ number +`, "_source": [ "id", "tableId", "faceFeature" ] }` } //fmt.Println("url: "+"http://"+serverIp+":"+serverPort+"/"+indexName+"/_search","body: ",JsonDSL) buf, err := EsReq("POST", "http://"+serverIp+":"+serverPort+"/"+indexName+"/_search",[]byte(JsonDSL)) if err != nil { return dbinfos ,errors.New("http request dbtablename info is err!") } // 返回 _source 数组 sources, err := Sourcelist(buf) if err != nil { return dbinfos,err } // 返回所有查询的数据 dbpersoninfos := Parsesources(sources) return dbpersoninfos, nil } // 根据底库id查询底库信息 func Dbtablefosbyid (id []string, indexName string, serverIp string, serverPort string) ([]protomsg.Dbtable, error) { var dbinfo []protomsg.Dbtable dbtableId := strings.Replace(strings.Trim(fmt.Sprint(id), "[]"), " ", "\",\"", -1) var dbinfoRequest = ` { "query": { "bool": { "filter": [{ "terms": { "id": [ "`+ dbtableId +`" ] } }] } } } ` buf, err := EsReq("POST", "http://"+serverIp+":"+serverPort+"/"+indexName+"/_search",[]byte(dbinfoRequest)) if err != nil { return dbinfo, err } sources, err := Sourcelist(buf) if err != nil { return dbinfo , err } dbtable := Dbtablebyid(sources) return dbtable, nil } // 根据底库人员id查询底库人员信息 func Dbpersoninfosbyid (id []string, indexName string, serverIp string, serverPort string) ([]protomsg.Dbperson, error) { var dbinfo []protomsg.Dbperson dbtablePersonId := strings.Replace(strings.Trim(fmt.Sprint(id), "[]"), " ", "\",\"", -1) var dbinfoRequest = ` { "query": { "bool": { "filter": [{ "terms": { "id": [ "`+ dbtablePersonId +`" ] } }] } } } ` buf, err := EsReq("POST", "http://"+serverIp+":"+serverPort+"/"+indexName+"/_search",[]byte(dbinfoRequest)) if err != nil { return dbinfo, err } sources, err := Sourcelist(buf) if err != nil { return dbinfo , err } dbperson := Dbpersonbyid(sources) println(dbperson) return dbperson,nil } // 根据tableid 查询tablename func Dbtablename(tableid string, indexName string, serverIp string, serverPort string) (tablename string, err error) { var dbinfotable =` { "query": { "bool": { "filter": [ { "term": { "id":"`+tableid+`" } } ] } }, "_source": [ "tableName" ] } ` buf, err := EsReq("POST", "http://"+serverIp+":"+serverPort+"/"+indexName+"/_search",[]byte(dbinfotable)) if err != nil { return "" ,errors.New("http request dbtablename info is err!") } sources, err := Sourcelist(buf) if err != nil { return "",err } for _, source := range sources { if name, ok := source["tableName"].(string); ok { tablename = name break } } return tablename, nil } //根据抓拍人员id更新(videourl)摄像机地址 func UpdateVideourlById(id string, videoUrl string, indexName string, serverIp string, serverPort string)(statu int){ var info interface{} var videoUrlInfo = ` { "script": { "source": "ctx._source.videoUrl='` + videoUrl + `'" }, "query": { "term": { "id": "` +id+ `" } } } ` buf, err := EsReq("POST", "http://"+serverIp+":"+serverPort+"/"+indexName+"/_update_by_query",[]byte(videoUrlInfo)) if err != nil { fmt.Println("http request videoUrlInfo info is err!") statu = 500 return } json.Unmarshal(buf, &info) out, ok := info.(map[string]interface{}) if !ok { fmt.Println("http response interface can not change map[string]interface{}") statu = 500 return } middle, ok := out["updated"].(float64) if !ok { fmt.Println("first updated change error!") statu = 500 return } if middle == 1{ statu = 200 return } if middle == 0{ statu = 201 return } return statu }