in search-elasticsearch/sync.go [29:88]
func (s *SearchEngine) sync() {
var page, pageSize = 1, 100
if s.syncing {
log.Warnf("es: syncing is running, skip")
return
}
go func() {
s.lock.Lock()
defer s.lock.Unlock()
if s.syncing {
log.Warnf("es: syncing is running, skip")
return
}
s.syncing = true
log.Info("es: start sync questions...")
page = 1
for {
log.Infof("es: sync question page %d, page size %d", page, pageSize)
questionList, err := s.syncer.GetQuestionsPage(context.TODO(), page, pageSize)
if err != nil {
log.Error("es: sync questions error", err)
break
}
if len(questionList) == 0 {
break
}
err = s.batchUpdateContent(context.TODO(), questionList)
if err != nil {
log.Error("es: sync questions error", err)
}
page += 1
}
log.Info("es: start sync answers...")
page = 1
for {
log.Infof("es: sync answer page %d, page size %d", page, pageSize)
answerList, err := s.syncer.GetAnswersPage(context.TODO(), page, pageSize)
if err != nil {
log.Error("es: sync answers error", err)
break
}
if len(answerList) == 0 {
break
}
err = s.batchUpdateContent(context.TODO(), answerList)
if err != nil {
log.Error("es: sync answers error", err)
}
page += 1
}
s.syncing = false
log.Info("es: sync done")
}()
}