提交 68db1e7c authored 作者: limeng's avatar limeng

增加拆分逻辑 为私有化使用 后续优化

上级 c61dd6b2
...@@ -84,7 +84,64 @@ func GetList(req GetListReq) (searchResult *elastic.SearchResult,err error) { ...@@ -84,7 +84,64 @@ func GetList(req GetListReq) (searchResult *elastic.SearchResult,err error) {
return return
} }
//获取搜索service 准备数据
func GetSearchService(req GetListReq) (searchService *elastic.SearchService,err error) {
//连接Es
client, err := connection()
if err != nil || client == nil {
err = errors.New("elastic连接失败"+err.Error())
return
}
defer client.Stop()
_, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
//准备查询条件
searchService = client.Search().Index(req.IndexName).Pretty(true).Query(req.Condition)
return
}
func DoSearchService(req DoSearchServiceReq) (searchResult *elastic.SearchResult,err error) {
//检测是from_size查询还是search_after滚动式查询
isSearchAfter, from, size := checkDoParam(req)
//连接Es
client, err := connection()
if err != nil || client == nil {
err = errors.New("elastic连接失败"+err.Error())
return
}
defer client.Stop()
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
//准备查询条件
if isSearchAfter == false {
//分页查询Es
searchResult, err = req.SearchService.From(from).Size(size).Do(ctx)
}
if isSearchAfter == true {
//滚动式查询Es
searchResult, err = req.SearchService.
SearchAfter(req.SearchAfter.Value).
From(from).Size(size).
Sort(req.SearchAfter.SortField.Field, req.SearchAfter.SortField.Sort).
Do(ctx)
}
return
}
//检验参数 区分 分页查询 滚动式查询
func checkDoParam(req DoSearchServiceReq) (isSearchAfter bool, from int, size int) {
if req.Page != 0 && req.Limit != 0 {
from = (req.Page - 1) * req.Limit
size = req.Limit
}
if req.SearchAfter != nil {
from = 0
size = 50
isSearchAfter = true
}
return
}
//检验参数 区分 分页查询 滚动式查询 //检验参数 区分 分页查询 滚动式查询
func checkParam(req GetListReq) (isSearchAfter bool, from int, size int) { func checkParam(req GetListReq) (isSearchAfter bool, from int, size int) {
if req.Page != 0 && req.Limit != 0 { if req.Page != 0 && req.Limit != 0 {
......
...@@ -35,6 +35,15 @@ type GetListReq struct { ...@@ -35,6 +35,15 @@ type GetListReq struct {
SearchAfter *SearchAfter `json:"search_after"` SearchAfter *SearchAfter `json:"search_after"`
IndexName string `json:"index_name"` IndexName string `json:"index_name"`
}
type DoSearchServiceReq struct {
SearchService *elastic.SearchService
Page int `json:"page"`
Limit int `json:"limit"`
SearchAfter *SearchAfter `json:"search_after"`
IndexName string `json:"index_name"`
} }
type SearchAfter struct { type SearchAfter struct {
SortField struct{ SortField struct{
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论