批量条件查询开放

This commit is contained in:
97694731 2026-03-09 12:05:47 +08:00
parent 82daef6bb8
commit 8130d83dba
2 changed files with 87 additions and 17 deletions

View File

@ -1050,7 +1050,7 @@ func (svc *ESSearchService) SearchBookBaseInfoES(c *gin.Context) ([]ESBook, int,
}
// ===== saleSelect 对应字段映射 =====
saleSelect := c.DefaultQuery("saleSelect", "2")
saleSelect := c.DefaultQuery("saleSelect", "")
saleField := map[string]string{
"7": "day_sale_7",
"15": "day_sale_15",
@ -1089,7 +1089,7 @@ func (svc *ESSearchService) SearchBookBaseInfoES(c *gin.Context) ([]ESBook, int,
continue
}
if key == "page" || key == "pageSize" || key == "per_page" || key == "saleSelect" || key == "picType" {
if key == "page" || key == "pageSize" || key == "per_page" || key == "saleSelect" || key == "picType" || key == "shopType" {
continue
}
@ -1113,16 +1113,78 @@ func (svc *ESSearchService) SearchBookBaseInfoES(c *gin.Context) ([]ESBook, int,
// ===== is_suit =====
if key == "is_suit" {
fmt.Printf("[DEBUG] is_suit val=%q\n", val)
if num, err := strconv.Atoi(val); err == nil {
cond := map[string]interface{}{
"term": map[string]interface{}{"is_suit": num},
}
must = append(must, cond)
fmt.Printf("[DEBUG] must += %v\n", cond)
} else {
fmt.Printf("[ERROR] is_suit Atoi error: %v\n", err)
}
continue
}
// ===== is_return =====
if key == "is_return" {
fmt.Printf("[DEBUG] is_return val=%q\n", val)
if num, err := strconv.Atoi(val); err == nil {
cond := map[string]interface{}{
"term": map[string]interface{}{"is_return": num},
}
must = append(must, cond)
fmt.Printf("[DEBUG] must += %v\n", cond)
} else {
fmt.Printf("[ERROR] is_return Atoi error: %v\n", err)
}
continue
}
// ===== is_filter =====
// ===== is_filter按 shopType 位匹配)=====
// ===== is_filter按 shopType 位匹配)=====
if key == "is_filter" {
fmt.Printf("[DEBUG] is_filter val=%q\n", val)
// 只处理 1=1 和 2=0
if val != "1" && val != "2" {
continue
}
shopType := c.DefaultQuery("shopType", "")
var pattern string
// val=1 -> 位=1
// val=2 -> 位=0
targetBit := "1"
if val == "2" {
targetBit = "0"
}
switch shopType {
case "0":
pattern = targetBit + "*"
case "1":
pattern = "?" + targetBit + "*"
case "2":
pattern = "??" + targetBit + "*"
case "3":
pattern = "???" + targetBit + "*"
default:
continue
}
cond := map[string]interface{}{
"wildcard": map[string]interface{}{
"is_filter": pattern,
},
}
must = append(must, cond)
fmt.Printf("[DEBUG] must += %v\n", cond)
continue
}
// ===== categoryType =====
if originalKey == "categoryType" {
var cond map[string]interface{}
@ -1143,7 +1205,6 @@ func (svc *ESSearchService) SearchBookBaseInfoES(c *gin.Context) ([]ESBook, int,
fmt.Printf("[DEBUG] must += %v\n", cond)
continue
}
// ===== category =====
if key == "category" {
var cond map[string]interface{}
@ -1353,9 +1414,18 @@ func (svc *ESSearchService) SearchBookBaseInfoES(c *gin.Context) ([]ESBook, int,
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", c.DefaultQuery("per_page", "10")))
from := (page - 1) * pageSize
// ========== pageSize大于500则根据id查询 =========
fmt.Printf("[DEBUG] page=%d pageSize=%d from=%d\n", page, pageSize, from)
var sort []map[string]interface{}
if pageSize >= 500 {
sort = []map[string]interface{}{
{"id": map[string]interface{}{"order": "asc"}},
}
} else {
sort = []map[string]interface{}{
{"update_time": map[string]interface{}{"order": "desc"}},
}
}
// ========== 构建 ES 查询 ==========
query := map[string]interface{}{
"from": from,
@ -1365,9 +1435,8 @@ func (svc *ESSearchService) SearchBookBaseInfoES(c *gin.Context) ([]ESBook, int,
"must": must,
},
},
"sort": []map[string]interface{}{
{"update_time": map[string]interface{}{"order": "desc"}},
},
"sort": sort,
}
body, _ := json.MarshalIndent(query, "", " ")
@ -1433,6 +1502,7 @@ func (svc *ESSearchService) SearchBookBaseInfoES(c *gin.Context) ([]ESBook, int,
return list, parsed.Hits.Total.Value, nil
}
func (svc *ESSearchService) BatchGetBookBaseInfoES(c *gin.Context) ([]ESBook, int, error) {
q := c.Request.URL.Query()
@ -1447,7 +1517,7 @@ func (svc *ESSearchService) BatchGetBookBaseInfoES(c *gin.Context) ([]ESBook, in
}
// ===== saleSelect 对应字段映射 =====
saleSelect := c.DefaultQuery("saleSelect", "2")
saleSelect := c.DefaultQuery("saleSelect", "")
saleField := map[string]string{
"7": "day_sale_7",
"15": "day_sale_15",

16
main.go
View File

@ -175,17 +175,17 @@ func main() {
//)
/** 新ES任务2 **/
esClient, err := es.NewESClient(
[]string{"http://localhost:9200"},
"elastic",
"zDzSXel3PFwx9=6Ybmqv",
)
///** ES2 本地测试 **/
//esClient, err := es.NewESClient(
// []string{"http://36.212.1.63:9200"},
// []string{"http://localhost:9200"},
// "elastic",
// "zDzSXel3PFwx9=6Ybmqv",
//)
/** ES2 本地测试 **/
esClient, err := es.NewESClient(
[]string{"http://36.212.1.63:9200"},
"elastic",
"zDzSXel3PFwx9=6Ybmqv",
)
if err != nil {
log.Fatalf("初始化 ES 客户端失败: %s", err)
@ -299,7 +299,7 @@ func main() {
// 全字段搜索
r.GET("/api/es/searchAll", esService.SearchBooksAllFieldsHandler)
// 根据条件查询 ES 图书信息
//r.GET("/api/es/getBookBaseInfoES", esService.SearchBookBaseInfoESHandler)
r.GET("/api/es/getBookBaseInfoES", esService.SearchBookBaseInfoESHandler)
// 新:核价软件用批量获取
r.GET("/api/es/batchGetBookBaseInfoES", esService.BatchGetBookBaseInfoESHandler)
// 多条件高级搜索