This commit is contained in:
xiaolipro 2024-09-12 12:14:13 +08:00
parent d5e4a6ef8c
commit 66a85a221a
2 changed files with 41 additions and 19 deletions

View File

@ -20,6 +20,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
{ {
var r = !forUpsert var r = !forUpsert
? await Context.SearchAsync<TrackDetailsIndex>(s => s ? await Context.SearchAsync<TrackDetailsIndex>(s => s
.Index(GlobalConst.TrackDetailsIndex)
.Source() .Source()
.Size(SafelyLimit) .Size(SafelyLimit)
.Query(q => q .Query(q => q
@ -32,6 +33,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
) )
) )
: await Context.SearchAsync<TrackDetailsIndex>(s => s : await Context.SearchAsync<TrackDetailsIndex>(s => s
.Index(GlobalConst.TrackDetailsIndex)
.Source(s2 => s2.Includes(fd => fd .Source(s2 => s2.Includes(fd => fd
.Field(f => f.IndexName) .Field(f => f.IndexName)
.Field(f => f.OrderId) .Field(f => f.OrderId)
@ -63,6 +65,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
var excludeTrackCodes = trackCodes.ToList(); var excludeTrackCodes = trackCodes.ToList();
excludeTrackCodes.Add(GlobalConst.EmptyString); excludeTrackCodes.Add(GlobalConst.EmptyString);
var r = await Context.SearchAsync<TrackDetailsIndex>(x => x var r = await Context.SearchAsync<TrackDetailsIndex>(x => x
.Index(GlobalConst.TrackDetailsIndex)
.Source(s => s.Includes(fd => fd .Source(s => s.Includes(fd => fd
.Field(f => f.TrackEnContent) .Field(f => f.TrackEnContent)
.Field(f => f.TrackContent) .Field(f => f.TrackContent)
@ -113,6 +116,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
public async Task<bool> AnyAsync(int orderId, string originTrackDataHash) public async Task<bool> AnyAsync(int orderId, string originTrackDataHash)
{ {
var r = await Context.SearchAsync<TrackDetailsIndex>(x => x var r = await Context.SearchAsync<TrackDetailsIndex>(x => x
.Index(GlobalConst.TrackDetailsIndex)
.Source(s => s.Includes(fd => fd.Field(f => f.TrackCode))) .Source(s => s.Includes(fd => fd.Field(f => f.TrackCode)))
.Query(q => .Query(q =>
q.Term(f => f.OrderId, orderId) q.Term(f => f.OrderId, orderId)
@ -182,6 +186,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
if (orderNos.Count < 1) return new List<TrackDetailsIndex>(); if (orderNos.Count < 1) return new List<TrackDetailsIndex>();
var r = await Context.SearchAsync<TrackDetailsIndex>(x => x var r = await Context.SearchAsync<TrackDetailsIndex>(x => x
.Index(GlobalConst.TrackDetailsIndex)
.Source(s => s.Includes(fd => fd .Source(s => s.Includes(fd => fd
.Field(f => f.OrderNo) .Field(f => f.OrderNo)
.Field(f => f.TrackStatus) .Field(f => f.TrackStatus)
@ -225,6 +230,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
public async Task<List<TrackDetailsIndex>> GetListAsync(int orderId) public async Task<List<TrackDetailsIndex>> GetListAsync(int orderId)
{ {
var r = await Context.SearchAsync<TrackDetailsIndex>(x => x var r = await Context.SearchAsync<TrackDetailsIndex>(x => x
.Index(GlobalConst.TrackDetailsIndex)
.Query(q => .Query(q =>
q.Term(t => t.OrderId, orderId) q.Term(t => t.OrderId, orderId)
) )
@ -241,27 +247,41 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
public async Task DeleteTrackAsync(int[] orderIds, List<string> trackCodes) public async Task DeleteTrackAsync(int[] orderIds, List<string> trackCodes)
{ {
var search = await Context.SearchAsync<TrackDetailsIndex>(x => x var deleteResponse = await Context.DeleteByQueryAsync<TrackDetailsIndex>(d => d
.Source(s => s.Includes(fd => fd.Field(f => f.IndexName))) .Index($"{GlobalConst.TrackDetailsIndex}-*") // 使用通配符匹配所有相关索引
.Size(SafelyLimit)
.Query(q => .Query(q =>
q.Terms(t => t.Field(f => f.OrderId).Terms(orderIds)) q.Terms(t => t.Field(f => f.OrderId).Terms(orderIds))
&& q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes)) && q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes))
) )
); );
if (!search.IsValid) if (!deleteResponse.IsValid)
{ {
throw new InvalidOperationException( throw new InvalidOperationException(
$"轨迹查询失败,orderIds:[{orderIds.JoinAsString(", ")}],trackCodes:[{trackCodes.JoinAsString(", ")}],原因:{search.DebugInformation}。"); $"删除轨迹失败,orderIds:[{string.Join(", ", orderIds)}],trackCodes:[{string.Join(", ", trackCodes)}],原因:{deleteResponse.DebugInformation}。");
} }
var tracks = search.ToIdList(); // var search = await Context.SearchAsync<TrackDetailsIndex>(x => x
// .Source(s => s.Includes(fd => fd.Field(f => f.IndexName)))
foreach (var track in tracks) // .Size(SafelyLimit)
{ // .Query(q =>
await DeleteTrackByIdAsync(track.Id, track.IndexName); // q.Terms(t => t.Field(f => f.OrderId).Terms(orderIds))
} // && q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes))
// )
// );
//
// if (!search.IsValid)
// {
// throw new InvalidOperationException(
// $"轨迹查询失败,orderIds:[{orderIds.JoinAsString(", ")}],trackCodes:[{trackCodes.JoinAsString(", ")}],原因:{search.DebugInformation}。");
// }
//
// var tracks = search.ToIdList();
//
// foreach (var track in tracks)
// {
// await DeleteTrackByIdAsync(track.Id, track.IndexName);
// }
} }
public async Task DeleteTrackByIdAsync(string id, string indexName) public async Task DeleteTrackByIdAsync(string id, string indexName)

View File

@ -48,14 +48,15 @@ public class WarningRecordEsRepository : ElasticSearchContextAbstract<WarningRec
{ {
foreach (var rule in rules) foreach (var rule in rules)
{ {
var r = await Context.UpdateByQueryAsync<WarningRecordIndex>(u => var r = await Context.UpdateByQueryAsync<WarningRecordIndex>(u => u
u.Query(q => .Index($"{GlobalConst.TrackWarningRecordIndex}-*")
q.Term(f => f.RuleId, rule.ruleId) .Query(q =>
&& q.Term(f => f.OrderId, rule.orderId) q.Term(f => f.RuleId, rule.ruleId)
) && q.Term(f => f.OrderId, rule.orderId)
.Script(s => s.Source("ctx._source.warningStatus = params.warningStatus") )
.Params(p => p.Add("warningStatus", WarningStatus.Processed)) .Script(s => s.Source("ctx._source.warningStatus = params.warningStatus")
) .Params(p => p.Add("warningStatus", WarningStatus.Processed))
)
); );
if (!r.IsValid) if (!r.IsValid)
@ -94,6 +95,7 @@ public class WarningRecordEsRepository : ElasticSearchContextAbstract<WarningRec
: null); : null);
var data = await Context.SearchAsync<WarningRecordIndex>(x => x var data = await Context.SearchAsync<WarningRecordIndex>(x => x
.Index(GlobalConst.TrackWarningRecordIndex)
.Source() .Source()
.Sort(s => s.Field(f => f.CreateTime, SortOrder.Descending)) .Sort(s => s.Field(f => f.CreateTime, SortOrder.Descending))
.From((input.PageIndex - 1) * input.PageSize) .From((input.PageIndex - 1) * input.PageSize)