批量条件查询开放
This commit is contained in:
parent
82daef6bb8
commit
8130d83dba
@ -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
16
main.go
@ -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)
|
||||
// 多条件高级搜索
|
||||
|
||||
Loading…
Reference in New Issue
Block a user