//聊天记录结构
type chat_list struct {
Createat int `json:"create_at"`
ToUid int64 `json:"to_uid"`
Uid int `json:"uid"`
Content string `json:"content"`
}
skip := (req.Page - 1) * req.PageSize
boolQuery := elastic.NewBoolQuery()
subQuery1 := elastic.NewBoolQuery().
Must(elastic.NewTermQuery("to_uid", req.StreamerId)).
Must(elastic.NewTermQuery("uid", req.MemberId))
subQuery2 := elastic.NewBoolQuery().
Must(elastic.NewTermQuery("to_uid", req.MemberId)).
Must(elastic.NewTermQuery("uid", req.StreamerId))
boolQuery = boolQuery.Should(subQuery1, subQuery2).MinimumShouldMatch("1")
searchResult, err := types.EsClient.Search().
Index(types.LU_CHANT_INDEX).
Query(boolQuery).
Sort("create_at", true).
From(skip). //第几页
Size((*req).PageSize). //每页多少条
Pretty(true).//返回json
Do(ctx)
//fmt.Printf("查询消耗时间 %d ms, 结果总数: %d\n", searchResult.TookInMillis, searchResult.TotalHits())
if searchResult.TotalHits() < 1{
resp.List = make([]iapi.GuildStreamerChatList,0)
return
}
var chat_detail chat_list
//var member_id int64
for _, item := range searchResult.Each(reflect.TypeOf(chat_detail)) {
//主播为接收者,uid一定为会员
if (*req).StreamerId == item.ToUid{
member_id = item.Uid()
}
if (*req).StreamerId == item.Uid{
member_id = item.ToUid
}
break
}
通过for _, item := range searchResult.Each(reflect.TypeOf(chat_detail)) 解析数据到chat_detail里,报错:item.ToUid undefined (type interface{} has no field or method ToUid)