//es内容如下:
skip := (req.Page - 1) * req.PageSize
searchResult, err := types.EsClient.Search().Index(types.ES_OPERATOR_INDEX).
Sort("dates", true).
From(skip). //第几页
Size((*req).PageSize). //每页多少条
Pretty(true).//返回json
Do(ctx)
//
我在用es的查询功能,如果有Sort("dates",true)参数,将会报错:
elastic: Error 400 (Bad Request): all shards failed [type=search_phase_execution_exception]
golang es查询排序出错
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
阿里嘎多学长 2025-10-14 16:54关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
问题分析
根据你的问题描述,似乎是使用 Go 语言与 Elasticsearch 进行交互时,排序查询出现了问题。具体来说,可能是
skip和req.PageSize的计算导致排序结果不正确。解决方案
- 检查
skip计算逻辑 确保skip的计算逻辑正确,避免由于整数溢出或其他原因导致的错误。 - 使用 Elasticsearch 的排序功能 检查 Elasticsearch 的排序功能是否正确配置,确保排序字段和顺序正确。
- 检查
req.PageSize的值 确保req.PageSize的值是正确的,避免由于 pageSize 太小导致的排序结果不正确。
核心代码
// 检查 skip 计算逻辑 skip := (req.Page - 1) * req.PageSize if skip < 0 { // 处理 skip 值小于 0 的情况 } // 使用 Elasticsearch 的排序功能 searchResult, err := types.EsClient.Search(). Index(indexName). Body(searchBody). Sort(sortField). From(skip). Size(req.PageSize). Do(context.Background())注意 上述代码仅提供了一个示例,具体的解决方案可能需要根据你的实际情况进行调整。
解决 无用评论 打赏 举报- 检查