init: web_hgdjc_server
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package srv_search
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
"videoweb/pub/esmanager"
|
||||
"videoweb/pub/models/esmod"
|
||||
)
|
||||
|
||||
const esSyncOverlap = time.Minute
|
||||
|
||||
// needFullESSync 判断是否需要全量同步 ES
|
||||
func needFullESSync(ctx context.Context, esIndex string) (bool, *esmod.ESRecord) {
|
||||
esRecord, serr := esmod.GetRecordTimeByESIndex(ctx, esIndex)
|
||||
if serr != nil || esRecord == nil {
|
||||
return true, esRecord
|
||||
}
|
||||
|
||||
count, err := esmanager.Instance.Count(esIndex, esmanager.M{
|
||||
"query": esmanager.M{"match_all": esmanager.M{}},
|
||||
})
|
||||
if err != nil || count == 0 {
|
||||
return true, esRecord
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
if (now.Hour() >= 5 && esRecord.UpdatedAt.Local().Hour() < 5) ||
|
||||
esRecord.UpdatedAt.Local().Day() < now.Day() {
|
||||
return true, esRecord
|
||||
}
|
||||
return false, esRecord
|
||||
}
|
||||
|
||||
// esSyncSinceTime 取增量同步起点(RecordTime 优先,回退 1 分钟避免边界遗漏)
|
||||
func esSyncSinceTime(esRecord *esmod.ESRecord) time.Time {
|
||||
if esRecord == nil {
|
||||
return time.Time{}
|
||||
}
|
||||
since := esRecord.RecordTime
|
||||
if since.IsZero() {
|
||||
since = esRecord.UpdatedAt
|
||||
}
|
||||
if since.IsZero() {
|
||||
return time.Time{}
|
||||
}
|
||||
return since.Add(-esSyncOverlap)
|
||||
}
|
||||
Reference in New Issue
Block a user