From efe9362d194fefc98317df67baf3b77e0aacf897 Mon Sep 17 00:00:00 2001 From: colin Date: Fri, 21 Aug 2026 18:47:49 +0800 Subject: [PATCH] fix: Fix the reversed sorting order --- .../AuditLoggingIndexInitializer.cs | 2 -- .../ElasticsearchAuditLogManager.cs | 2 +- .../Elasticsearch/SortOptionsExtenssions.cs | 30 +++++++++++++++++++ .../Elasticsearch/ExpressionQueryService.cs | 2 +- .../SerilogElasticsearchLoggingManager.cs | 2 +- 5 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 aspnet-core/framework/elasticsearch/LINGYUN.Abp.Elasticsearch/Elastic/Clients/Elasticsearch/SortOptionsExtenssions.cs diff --git a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/AuditLoggingIndexInitializer.cs b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/AuditLoggingIndexInitializer.cs index 894418898..96cc5e2c0 100644 --- a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/AuditLoggingIndexInitializer.cs +++ b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/AuditLoggingIndexInitializer.cs @@ -1,12 +1,10 @@ using Elastic.Clients.Elasticsearch; using Elastic.Clients.Elasticsearch.Mapping; -using Elastic.Transport.Products.Elasticsearch; using LINGYUN.Abp.Elasticsearch; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Options; using System; -using System.Text; using System.Threading; using System.Threading.Tasks; using Volo.Abp; diff --git a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchAuditLogManager.cs b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchAuditLogManager.cs index 22e037522..4368a4cba 100644 --- a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchAuditLogManager.cs +++ b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchAuditLogManager.cs @@ -526,7 +526,7 @@ public class ElasticsearchAuditLogManager : IAuditLogManager, ITransientDependen dsl => dsl.Indices(indexName) .Query(query) // 反转排序取第一个数据作为起始索引 - .Sort(sorts.Select(x => x).Reverse().ToArray()) + .Sort(sorts.ReverseSort()!.ToArray()) .SourceIncludes(x => x.Id) .SearchAfter(firstHit.Sort.ToList()) .Size(1), diff --git a/aspnet-core/framework/elasticsearch/LINGYUN.Abp.Elasticsearch/Elastic/Clients/Elasticsearch/SortOptionsExtenssions.cs b/aspnet-core/framework/elasticsearch/LINGYUN.Abp.Elasticsearch/Elastic/Clients/Elasticsearch/SortOptionsExtenssions.cs new file mode 100644 index 000000000..fa7403661 --- /dev/null +++ b/aspnet-core/framework/elasticsearch/LINGYUN.Abp.Elasticsearch/Elastic/Clients/Elasticsearch/SortOptionsExtenssions.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Elastic.Clients.Elasticsearch; + +public static class SortOptionsExtenssions +{ + public static IEnumerable? ReverseSort(this IEnumerable? sortOptions) + { + if (sortOptions == null) + { + return sortOptions; + } + var newSort = sortOptions.Select(sort => + { + if (sort.Field != null) + { + sort.Field.Order = sort.Field.Order == SortOrder.Asc + ? SortOrder.Desc + : SortOrder.Asc; + } + return sort; + }).ToArray(); + + newSort.Reverse(); + + return newSort; + } +} diff --git a/aspnet-core/framework/elasticsearch/LINGYUN.Abp.Elasticsearch/LINGYUN/Abp/Elasticsearch/ExpressionQueryService.cs b/aspnet-core/framework/elasticsearch/LINGYUN.Abp.Elasticsearch/LINGYUN/Abp/Elasticsearch/ExpressionQueryService.cs index afef44b90..f7107fcc5 100644 --- a/aspnet-core/framework/elasticsearch/LINGYUN.Abp.Elasticsearch/LINGYUN/Abp/Elasticsearch/ExpressionQueryService.cs +++ b/aspnet-core/framework/elasticsearch/LINGYUN.Abp.Elasticsearch/LINGYUN/Abp/Elasticsearch/ExpressionQueryService.cs @@ -246,7 +246,7 @@ public class ExpressionQueryService : IExpressionQueryService, ITransientDepende dsl => dsl.Indices(indexName) .Query(query) // 反转排序取第一个数据作为起始索引 - .Sort(sorts.Select(x => x).Reverse().ToArray()) + .Sort(sorts.ReverseSort()!.ToArray()) .SourceIncludes([]) .SearchAfter(firstHit.Sort.ToList()) .Size(1), diff --git a/aspnet-core/framework/logging/LINGYUN.Abp.Logging.Serilog.Elasticsearch/LINGYUN/Abp/AuditLogging/Serilog/Elasticsearch/SerilogElasticsearchLoggingManager.cs b/aspnet-core/framework/logging/LINGYUN.Abp.Logging.Serilog.Elasticsearch/LINGYUN/Abp/AuditLogging/Serilog/Elasticsearch/SerilogElasticsearchLoggingManager.cs index 984c0caac..a2732ba45 100644 --- a/aspnet-core/framework/logging/LINGYUN.Abp.Logging.Serilog.Elasticsearch/LINGYUN/Abp/AuditLogging/Serilog/Elasticsearch/SerilogElasticsearchLoggingManager.cs +++ b/aspnet-core/framework/logging/LINGYUN.Abp.Logging.Serilog.Elasticsearch/LINGYUN/Abp/AuditLogging/Serilog/Elasticsearch/SerilogElasticsearchLoggingManager.cs @@ -579,7 +579,7 @@ public class SerilogElasticsearchLoggingManager : ILoggingManager, ISingletonDep dsl => dsl.Indices(CreateIndex()) .Query(query) // 反转排序取第一个数据作为起始索引 - .Sort(sorts.Select(x => x).Reverse().ToArray()) + .Sort(sorts.ReverseSort()!.ToArray()) .SourceIncludes(x => x.Level) .SearchAfter(firstHit.Sort.ToList()) .Size(1),