批量条件查询开放

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 对应字段映射 =====
saleSelect := c.DefaultQuery("saleSelect", "2") saleSelect := c.DefaultQuery("saleSelect", "")
saleField := map[string]string{ saleField := map[string]string{
"7": "day_sale_7", "7": "day_sale_7",
"15": "day_sale_15", "15": "day_sale_15",
@ -1089,7 +1089,7 @@ func (svc *ESSearchService) SearchBookBaseInfoES(c *gin.Context) ([]ESBook, int,
continue 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 continue
} }
@ -1113,16 +1113,78 @@ func (svc *ESSearchService) SearchBookBaseInfoES(c *gin.Context) ([]ESBook, int,
// ===== is_suit ===== // ===== is_suit =====
if key == "is_suit" { if key == "is_suit" {
fmt.Printf("[DEBUG] is_suit val=%q\n", val)
if num, err := strconv.Atoi(val); err == nil { if num, err := strconv.Atoi(val); err == nil {
cond := map[string]interface{}{ cond := map[string]interface{}{
"term": map[string]interface{}{"is_suit": num}, "term": map[string]interface{}{"is_suit": num},
} }
must = append(must, cond) must = append(must, cond)
fmt.Printf("[DEBUG] must += %v\n", cond) fmt.Printf("[DEBUG] must += %v\n", cond)
} else {
fmt.Printf("[ERROR] is_suit Atoi error: %v\n", err)
} }
continue 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 ===== // ===== categoryType =====
if originalKey == "categoryType" { if originalKey == "categoryType" {
var cond map[string]interface{} 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) fmt.Printf("[DEBUG] must += %v\n", cond)
continue continue
} }
// ===== category ===== // ===== category =====
if key == "category" { if key == "category" {
var cond map[string]interface{} 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")) page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", c.DefaultQuery("per_page", "10"))) pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", c.DefaultQuery("per_page", "10")))
from := (page - 1) * pageSize from := (page - 1) * pageSize
// ========== pageSize大于500则根据id查询 =========
fmt.Printf("[DEBUG] page=%d pageSize=%d from=%d\n", page, pageSize, from) 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 查询 ========== // ========== 构建 ES 查询 ==========
query := map[string]interface{}{ query := map[string]interface{}{
"from": from, "from": from,
@ -1365,9 +1435,8 @@ func (svc *ESSearchService) SearchBookBaseInfoES(c *gin.Context) ([]ESBook, int,
"must": must, "must": must,
}, },
}, },
"sort": []map[string]interface{}{
{"update_time": map[string]interface{}{"order": "desc"}}, "sort": sort,
},
} }
body, _ := json.MarshalIndent(query, "", " ") body, _ := json.MarshalIndent(query, "", " ")
@ -1433,6 +1502,7 @@ func (svc *ESSearchService) SearchBookBaseInfoES(c *gin.Context) ([]ESBook, int,
return list, parsed.Hits.Total.Value, nil return list, parsed.Hits.Total.Value, nil
} }
func (svc *ESSearchService) BatchGetBookBaseInfoES(c *gin.Context) ([]ESBook, int, error) { func (svc *ESSearchService) BatchGetBookBaseInfoES(c *gin.Context) ([]ESBook, int, error) {
q := c.Request.URL.Query() q := c.Request.URL.Query()
@ -1447,7 +1517,7 @@ func (svc *ESSearchService) BatchGetBookBaseInfoES(c *gin.Context) ([]ESBook, in
} }
// ===== saleSelect 对应字段映射 ===== // ===== saleSelect 对应字段映射 =====
saleSelect := c.DefaultQuery("saleSelect", "2") saleSelect := c.DefaultQuery("saleSelect", "")
saleField := map[string]string{ saleField := map[string]string{
"7": "day_sale_7", "7": "day_sale_7",
"15": "day_sale_15", "15": "day_sale_15",

16
main.go
View File

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