GoLang+Elasticsearch 普通分页过滤查询

mb601cf79d3f881 · · 1179 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

不多说直接看代码吧

封装Search 查询条件过滤

search.go

func Search(param map[string]interface{})(err,data [] elastic.Query){
	var query [] elastic.Query

	elastic.NewDateRangeAggregation()
	if param["name"]!=nil{
		query =append(query,elastic.NewMatchQuery("name", param["name"]))
	}
	  
    //全文搜索
	if param["searchkey"]!=nil{
		query =append(query,elastic.NewMultiMatchQuery(param["searchkey"]).
			Type("best_fields").
			Lenient(true).
			MinimumShouldMatch("30%"))
		//.Analyzer("ik_smart"))
	}
	return err,query
}

getList 查询数据

func GetList(index string ,info map[string]interface{},pagesize,pagestart int,searchcondition [] elastic.Query, sort string)(err error,ret interface{},total int64){
	client, _ = elastic.NewClient(elastic.SetURL(host...))



	boolQuery := elastic.NewBoolQuery()
	boolQuery.Filter(searchcondition...)
	//排序
	isAsc := true
	if sort != "" {
		sortSlice := strings.Split(sort, " ")
		sort = sortSlice[0]
		if sortSlice[1] == "desc" {
			isAsc = false
		}
	}
	res, err := client.Search().
		Index(index).
		Query(boolQuery).
		From(pagestart).
		Size(pagesize).
		Sort(sort, isAsc).
		Pretty(true).
		Do(context.Background())

	if err != nil {
		log.Fatalf("Error getting response: %s", err)
	}

	return err,res.Hits.Hits, res.Hits.TotalHits.Value
}

引用

func GetList(c *gin.Context){
	var pageInfo = make(map[string]interface{})
	_ =c.ShouldBindJSON(&pageInfo) 

	order := ""
	if pageInfo["order"] !=nil{
		order = pageInfo["order"].(string)
	} 
	//分页
	if pageInfo["pageSize"] ==nil{
		pageInfo["pageSize"] =float64(10)
	}
	if pageInfo["page"] ==nil{
		pageInfo["page"] =float64(1)
	}
	pagesize := int(pageInfo["pageSize"].(float64))
	pagestart := int(pageInfo["pageSize"].(float64)) * (int(pageInfo["page"].(float64))-1)

	_,search :=service.SearchTest(pageInfo)
	if err,list,total :=service.GetList("test",pageInfo,pagesize,pagestart,search,order); err !=nil { 
		response.FailWithMessage(err.Error(),c)
	}else{
		response.OkWithDetailed(response.PageResult{
			List: list,
			Page: int(pageInfo["page"].(float64)),
			Total: total,
			PageSize:int(pageInfo["pageSize"].(float64)),
		},"获取成功",c)
	}
}


 

请求参数

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:mb601cf79d3f881

查看原文:GoLang+Elasticsearch 普通分页过滤查询

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1179 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传