package controllers
|
|
import (
|
"andriodServer/esutil"
|
"encoding/json"
|
"fmt"
|
"github.com/gin-gonic/gin"
|
"io"
|
"strings"
|
)
|
|
type EsController struct {
|
|
}
|
|
func (ec *EsController) GetEsVideoById(c *gin.Context) {
|
id := c.Param("id")
|
if id == "" {
|
c.JSON(500, map[string]interface{}{
|
"success": false,
|
"data":"",
|
"msg": "参数id不能为空",
|
})
|
return
|
}
|
videoUrl := getVideoUrlById(id)
|
if videoUrl != "" {
|
videoUrl = "http://"+videoUrl
|
}
|
|
c.JSON(200, map[string]interface{}{
|
"success": true,
|
"data": map[string]string{
|
"videoUrl": videoUrl,
|
},
|
"msg": "请求成功",
|
})
|
}
|
|
var EsUrl string
|
func getVideoUrlById(_id string) string {
|
jsonDSL:= `{
|
"query": {
|
"bool": {
|
"filter": [
|
{
|
"term": {
|
"_id": "5q5VxXIBpPOUuw7XfG_L"
|
}
|
}
|
]
|
}
|
},
|
"_source": [
|
"videoUrl"
|
]
|
}`
|
body, err := esutil.EsReq("POST", EsUrl+"ai_ocean/_search", []byte(jsonDSL))
|
if err != nil {
|
fmt.Println("err:", err)
|
return ""
|
}
|
jsonStr := string(body)
|
var dat map[string]interface{}
|
dec := json.NewDecoder(strings.NewReader(jsonStr))
|
|
if err := dec.Decode(&dat); err == io.EOF {
|
return ""
|
} else if err != nil {
|
return ""
|
}
|
hitJson, ok := dat["hits"].(map[string]interface{})
|
if !ok {
|
return ""
|
}
|
for _, value := range hitJson["hits"].([]interface{}) {
|
source, ok := value.(map[string]interface{})["_source"].(map[string]interface{})
|
if !ok {
|
return ""
|
}
|
return source["videoUrl"].(string)
|
}
|
return ""
|
}
|