go面向接口编程: 创建index

package ini

import (
    "context"
    "git.ichub.com/general/webcli120/goconfig/ichublog/golog"
    _ "github.com/jinzhu/gorm"
    "icd/cms/cmsiface"
    "icd/cms/shop/entity"
    "icd/cms/shop/model"
    "icd/plugins/elastic"
    es "icd/plugins/elasticsearch"
    "reflect"
)

func InitEs() {
    initEs1()
    initEs2()
}

func NewIndexMappingPtr[T cmsiface.IndexMapping]() T {
    var index T
    var typeOf = reflect.TypeOf(index)
    if typeOf.Kind() == reflect.Ptr {
       typeOf = typeOf.Elem()
    }
    var value = reflect.New(typeOf)
    return value.Interface().(T)
 
}

func CreateIndex[T cmsiface.IndexMapping]() {
    ctx := context.Background()
    var index = NewIndexMappingPtr[T]()
    existsContext, _ := elastic.GetElastic().IndexExists(index.TableName()).Do(ctx)
    if existsContext {
       golog.Info("索引已存在", index.TableName())
       return
    }
    _, err := es.Elastic().CreateIndex(index.TableName()).BodyString(index.GetMapping()).Do(ctx)
    if err != nil {
       golog.Error(err, index.TableName())
       return
    }
    golog.Info("创建索引成功", index.TableName())
}

// 初始化索引表
func initEs1() {

    //创建内容
    CreateIndex[*entity.ContentListEs]()
    //创建栏目
    CreateIndex[*model.CmsColumnEs]()
    //创建广告
    CreateIndex[*model.CmsScheduleEs]()
    //创建广告
    CreateIndex[*model.CmsScheduleBroadEs]()

    //创建排期
    CreateIndex[*model.CmsScheduleBackEs]()
    //创建栏目订阅
    CreateIndex[*model.CmsSubscriberEs]()
    //创建关键词订阅
    CreateIndex[*model.CmsKeywordEs]()
    //创建敏感词订阅
    CreateIndex[*model.CmsSensitiveWordsEs]()

    //优化首页根据栏目ID找到栏目信息
    CreateIndex[*model.CmsHomeColumnEs]()
    //应答
    CreateIndex[*entity.AnswerSheetEs]()
    //广告展出
    CreateIndex[*model.PersonasLineES]()
    //我的偏好
    CreateIndex[*entity.CmsPreferenceEs]()
    //广告类
    CreateIndex[*model.CmsSlideTypeES]()

    //广告项
    CreateIndex[*model.CmsSlideItemES]()
    //广告位
    CreateIndex[*model.CmsSlideSlotES]()

}

// 初始化索引表
func initEs2() {

    //展出
    CreateIndex[*model.CmsSlideDisplayES]()
    //评论
    CreateIndex[*model.CommentES]()
    //访客
    CreateIndex[*model.GuestES]()
    //邀请人
    CreateIndex[*model.InvitorES]()

    //我来答
    CreateIndex[*model.ReplyEs]()
    //应答
    CreateIndex[*model.RespondES]()
    //关联内容
    CreateIndex[*model.RelatedContentES]()
    //作答次数
    CreateIndex[*model.CmsUserAnswerES]()

    //发布稿版本历史es
    CreateIndex[*model.VersionHistoryES]()
    //推荐稿es
    CreateIndex[*model.RecommendEs]()
    //内容栏目es
    CreateIndex[*entity.ContentColumnEs]()
    //二维码关联es
    CreateIndex[*model.QrCodeES]()

    //组件es
    CreateIndex[*model.ComponentEs]()
    //组件内容关系es
    CreateIndex[*model.ComponentContentES]()
    //社交平台发布稿es
    CreateIndex[*model.CmsPlatformPublishingEs]()

    //CmsPlatformPublishingEs := model.CmsPlatformPublishingEs{}
    //existsCmsPlatformPublishingEs, _ := elastic.GetElastic().IndexExists(CmsPlatformPublishingEs.TableName()).Do(ctx)
    //if !existsCmsPlatformPublishingEs {
    // _, err := elastic.GetElastic().CreateIndex(CmsPlatformPublishingEs.TableName()).BodyString(CmsPlatformPublishingEs.GetMapping()).Do(ctx)
    // if err != nil {
    //    log.Errorf("CmsPlatformPublishingEs init mapping : %+v", err)
    // } else {
    //    log.Infof("CmsPlatformPublishingEs init mapping ok")
    // }
    //}
}

猜你喜欢

转载自blog.csdn.net/leijmdas/article/details/143184518