package controllers import ( "andriodServer/esutil" "encoding/json" "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) 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, []byte(jsonDSL)) if err != nil { 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 "" }