示例#1
0
文件: ghes.go 项目: pcarrier/ingest
func esBulk(client *es.Client, in <-chan es.BulkableRequest) {
	ticker := time.NewTicker(*batchInterval)

	bulk := client.Bulk()

	for {
		select {
		case <-ticker.C:
			if bulk.NumberOfActions() != 0 {
				lr := logrus.WithField("ops", bulk.NumberOfActions())
				resp, err := bulk.Do()
				if err == nil && !resp.Errors {
					lr.Info("bulk successful")
					bulk = client.Bulk()
				} else {
					lr.WithError(err).Warn("bulk failed")
				}
			}
		case issue, ok := <-in:
			if !ok {
				return
			}
			bulk.Add(issue)
		}
	}
}