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