change:轨迹删除降级为滚动删除
This commit is contained in:
parent
d8f594f193
commit
9d3ef9e4a3
@ -8,7 +8,6 @@ public interface ITrackDetailsRepository
|
|||||||
|
|
||||||
Task<List<TrackDetailsIndex>> GetLatestListAsync(int[] eventOrderIds, List<string> trackCodes);
|
Task<List<TrackDetailsIndex>> GetLatestListAsync(int[] eventOrderIds, List<string> trackCodes);
|
||||||
|
|
||||||
|
|
||||||
Task<bool> AnyAsync(int orderId, DateTime trackTime);
|
Task<bool> AnyAsync(int orderId, DateTime trackTime);
|
||||||
|
|
||||||
Task<bool> AnyAsync(int orderId, string originTrackData);
|
Task<bool> AnyAsync(int orderId, string originTrackData);
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
using Elasticsearch.Net;
|
|
||||||
using Nest;
|
using Nest;
|
||||||
using SJZY.Expand.ElasticSearch.Services;
|
using SJZY.Expand.ElasticSearch.Services;
|
||||||
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
|
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
|
||||||
@ -235,20 +234,48 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
|||||||
|
|
||||||
public async Task DeleteTrackAsync(int[] orderIds, List<string> trackCodes)
|
public async Task DeleteTrackAsync(int[] orderIds, List<string> trackCodes)
|
||||||
{
|
{
|
||||||
var r = await Context.DeleteByQueryAsync<TrackDetailsIndex>(x => x
|
var search = await Context.SearchAsync<TrackDetailsIndex>(s => s
|
||||||
.Conflicts(Conflicts.Abort)
|
.Source(fd => fd.Includes(f => f.Field("indexName")))
|
||||||
.Query(
|
.Size(1000)
|
||||||
q =>
|
.Query(q => q
|
||||||
q.Terms(t => t.Field(f => f.OrderId).Terms(orderIds))
|
.Bool(b => b
|
||||||
&& q.Term(t => t.IsCanDelete, true)
|
.Must(
|
||||||
&& q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes)))
|
mu => mu.Terms(t => t.Field(f => f.OrderId).Terms(orderIds)),
|
||||||
.WaitForCompletion()
|
mu => mu.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.Scroll("1m") // 设置滚动时间
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
while (search.IsValid && search.Documents.Any())
|
||||||
|
{
|
||||||
|
// 处理滚动查询结果
|
||||||
|
var tracks = search.ToIdList();
|
||||||
|
|
||||||
|
foreach (var track in tracks)
|
||||||
|
{
|
||||||
|
var r = await Context.DeleteAsync<TrackDetailsIndex>(track.Id, u => u
|
||||||
|
.Index(track.IndexName)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!r.IsValid)
|
if (!r.IsValid)
|
||||||
throw new Exception($"轨迹数据删除失败,原因:{r.ServerError.Error}");
|
throw new Exception($"轨迹数据删除失败,原因:{r.ServerError.Error}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var scrollId = search.ScrollId; // 更新滚动ID
|
||||||
|
|
||||||
|
// 滚动查询
|
||||||
|
search = await Context.ScrollAsync<TrackDetailsIndex>("1m", scrollId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!search.IsValid)
|
||||||
|
{
|
||||||
|
throw new Exception($"轨迹查询异常,原因:{search.DebugInformation}。");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<(List<TrackDetailsIndex> list, long total)> GetListAsync(TrackDetailsQueryInput input)
|
public async Task<(List<TrackDetailsIndex> list, long total)> GetListAsync(TrackDetailsQueryInput input)
|
||||||
{
|
{
|
||||||
if (input.OrderNos.Count < 1) return default;
|
if (input.OrderNos.Count < 1) return default;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user