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