mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
未排单管理-创建排单es查询优化
This commit is contained in:
+17
-15
@@ -825,13 +825,13 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
long total = totalResponse.count();
|
||||
|
||||
// 分页查询
|
||||
int pageNum = PageUtil.totalPage(total, 2000);
|
||||
int pageNum = PageUtil.totalPage(total, 500);
|
||||
|
||||
FieldValue searchAfterSortId = FieldValue.of(1);
|
||||
List<FieldValue> searchAfterSortValues = null;
|
||||
for (int page = 1; page <= pageNum; page++) {
|
||||
SearchRequest.Builder searchBuilder = new SearchRequest.Builder()
|
||||
.index(ORDER_PLATE_MODEL.getIndex())
|
||||
.size(2000)
|
||||
.size(500)
|
||||
.sort(s -> s.field(f -> f.field("id.keyword").order(SortOrder.Asc)))
|
||||
.query(q -> q.bool(b -> b
|
||||
.filter(f -> f.terms(t -> t.field("orderId").terms(e -> e.value(orderIds.stream().map(FieldValue::of).toList()))))
|
||||
@@ -843,7 +843,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
)
|
||||
.trackTotalHits(t -> t.enabled(false));
|
||||
|
||||
searchBuilder.searchAfter(searchAfterSortId);
|
||||
// 设置 search_after,非第一页时才需要
|
||||
if (searchAfterSortValues != null) {
|
||||
searchBuilder.searchAfter(searchAfterSortValues);
|
||||
}
|
||||
|
||||
SearchResponse<OrderModelDO> response = elasticsearchClient.search(searchBuilder.build(), OrderModelDO.class);
|
||||
|
||||
@@ -853,17 +856,16 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
results.add(hit.source());
|
||||
}
|
||||
|
||||
// 取最后一个命中文档的 id 作为下一页的 search_after 值
|
||||
if (!hits.isEmpty()) {
|
||||
OrderModelDO lastDoc = hits.get(hits.size() - 1).source();
|
||||
if (lastDoc != null) {
|
||||
searchAfterSortId = FieldValue.of(lastDoc.getId());
|
||||
} else {
|
||||
// 没有更多数据了
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// 已经到最后一页
|
||||
// 如果没有更多结果,终止循环
|
||||
if (hits.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
// 获取最后一条记录的 sort 值,用于下一页的 search_after
|
||||
searchAfterSortValues = hits.get(hits.size() - 1).sort();
|
||||
|
||||
// 防止 sort 信息缺失导致死循环
|
||||
if (searchAfterSortValues == null || searchAfterSortValues.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user