每个es的代码
//bulkRequest := es.GetElastic1().Bulk()
var qq=facade.Default[*esentity.NotesEs]()
for _, note := range notes {
noteEs := &esentity.NotesEs{}
noteEs.EntityFillEs(note)
//index1Req := elastic.NewBulkIndexRequest().Index(esentity.NotesEs{}.AliasName()).Id(utils.FormatInt(noteEs.Id)).Doc(noteEs)
//bulkRequest = bulkRequest.Add(index1Req)
qq.AddDocObject(noteEs)
}
//bulkResponse, err := bulkRequest.Do(context.TODO())
var ret= qq.BulkIndex()
if ret.IsFailed() {
golog.Error(ret)
}
if ret.Data==nil {
}
泛型 接口通用写法
facade.EsBulkIndex[entity.Notes,*esentity.NotesEs](notes)
方法通用实现
func EsBulkIndex[E schema.Tabler, T esiface.EsObjectStru[E]](entities []*E) bool { var qq = Default[T]() for _, entity := range entities { var esObj = esiface.NewOfPtrEsObject[T]() //gconv.Struct(entity, esObj) esObj.EntityFillEs(entity) qq.AddDocObject(esObj) } ret := qq.BulkIndex() if ret.IsFailed() { golog.Error(ret) } if ret.Data == nil { golog.Error("expected bulkResponse to be != nil; got nil") return true } return false }
type EsObjectStru[E any] interface { EsObject EntityFillEs(entity *E) } type EsObject interface { Unmarshal([]byte) error IndexID() string TableName() string IndexName() string AliasName() string GetMapping() string Mapping() string InitDoc() EsObject }