From 9d3ef9e4a3cf7c6a730f145b2c62f11e2051af03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Thu, 25 Apr 2024 18:21:02 +0800 Subject: [PATCH] =?UTF-8?q?change=EF=BC=9A=E8=BD=A8=E8=BF=B9=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E9=99=8D=E7=BA=A7=E4=B8=BA=E6=BB=9A=E5=8A=A8=E5=88=A0?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ITrackDetailsRepository.cs | 1 - .../Repositories/TrackDetailsRepository.cs | 49 ++++++++++++++----- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs index 0d06b2fd..cc4c033a 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs @@ -8,7 +8,6 @@ public interface ITrackDetailsRepository Task> GetLatestListAsync(int[] eventOrderIds, List trackCodes); - Task AnyAsync(int orderId, DateTime trackTime); Task AnyAsync(int orderId, string originTrackData); diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs index 97133bfb..c48a0ec0 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs @@ -1,4 +1,3 @@ -using Elasticsearch.Net; using Nest; using SJZY.Expand.ElasticSearch.Services; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; @@ -235,18 +234,46 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract trackCodes) { - var r = await Context.DeleteByQueryAsync(x => x - .Conflicts(Conflicts.Abort) - .Query( - q => - q.Terms(t => t.Field(f => f.OrderId).Terms(orderIds)) - && q.Term(t => t.IsCanDelete, true) - && q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes))) - .WaitForCompletion() + var search = await Context.SearchAsync(s => s + .Source(fd => fd.Includes(f => f.Field("indexName"))) + .Size(1000) + .Query(q => q + .Bool(b => b + .Must( + mu => mu.Terms(t => t.Field(f => f.OrderId).Terms(orderIds)), + mu => mu.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes)) + ) + ) + ) + .Scroll("1m") // 设置滚动时间 ); - if (!r.IsValid) - throw new Exception($"轨迹数据删除失败,原因:{r.ServerError.Error}"); + + while (search.IsValid && search.Documents.Any()) + { + // 处理滚动查询结果 + var tracks = search.ToIdList(); + + foreach (var track in tracks) + { + var r = await Context.DeleteAsync(track.Id, u => u + .Index(track.IndexName) + ); + + if (!r.IsValid) + throw new Exception($"轨迹数据删除失败,原因:{r.ServerError.Error}"); + } + + var scrollId = search.ScrollId; // 更新滚动ID + + // 滚动查询 + search = await Context.ScrollAsync("1m", scrollId); + } + + if (!search.IsValid) + { + throw new Exception($"轨迹查询异常,原因:{search.DebugInformation}。"); + } } public async Task<(List list, long total)> GetListAsync(TrackDetailsQueryInput input)