package esmod import ( "context" "fmt" "videoweb/pub/esmanager" "videoweb/pub/mongos" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) var db *mongos.Collection // Init 初始化数据 func Init(ctx context.Context) { initDBIndex(ctx) initIndex() return } // initIndex 初始化索引 func initIndex() { if esmanager.Instance == nil { return } initVideoIndex(videoIndex) initPlayletIndex(playletIndex) initActressIndex(actressIndex) } // initDBIndex 初始化数据库索引 func initDBIndex(ctx context.Context) { //获取数据库表 db = mongos.Shop.Coll(TN.ESRecord) // 获取数据库表 indexes := []mongo.IndexModel{ { Keys: bson.D{ {Key: FN.ESRecord.EsIndex, Value: 1}, }, Options: options.Index().SetUnique(true), }, } if _, err := db.CreateIndex(ctx, indexes); err != nil { panic(fmt.Sprintf("(esmod:initDBIndex) Create es_record Index failed! err:%+v:", err)) } } func initVideoIndex(esIndex string) { var setting = esmanager.M{ "settings": esmanager.M{ "number_of_shards": esmanager.NumberOfShards, "number_of_replicas": esmanager.NumberOfReplicas, "analysis": esmanager.M{ "analyzer": esmanager.M{ "ik": esmanager.M{ "tokenizer": esmanager.AnalyzerIkSmart, }, }, }, }, "mappings": esmanager.M{ "properties": esmanager.M{ FN.ESVideo.Title: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkMaxWord, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESVideo.MediaType: esmanager.M{ "type": "integer", }, FN.ESVideo.Remark: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESVideo.Desc: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESVideo.Keyworlds: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESVideo.CreatorName: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESVideo.Bango: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESVideo.IssuedBrand: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESVideo.Status: esmanager.M{ "type": "integer", }, //FN.ESVideo.IsHot: esmanager.M{ // "type": "boolean", //}, //FN.ESVideo.Sort: esmanager.M{ // "type": "integer", //}, FN.ESVideo.WatchTimes: esmanager.M{ "type": "integer", }, FN.ESVideo.ShowTimes: esmanager.M{ "type": "integer", }, FN.ESVideo.Comments: esmanager.M{ "type": "integer", }, FN.ESVideo.AddedTime: esmanager.M{ "type": "date", "format": "strict_date_optional_time||epoch_millis||yyyy-MM-dd HH:mm:ss", }, FN.ESVideo.IssuedAt: esmanager.M{ "type": "date", "format": "strict_date_optional_time||epoch_millis||yyyy-MM-dd HH:mm:ss", }, //FN.ESVideo.CreatedAt: esmanager.M{ // "type": "date", // "format": "strict_date_optional_time||epoch_millis||yyyy-MM-dd HH:mm:ss", //}, }, }, } if err := esmanager.Instance.InitIndices(esIndex, setting); err != nil { panic(fmt.Sprintf("ElasticSearch Index %s initMediaIndex error", esIndex)) } } func initPlayletIndex(esIndex string) { var setting = esmanager.M{ "settings": esmanager.M{ "number_of_shards": esmanager.NumberOfShards, "number_of_replicas": esmanager.NumberOfReplicas, "analysis": esmanager.M{ "analyzer": esmanager.M{ "ik": esmanager.M{ "tokenizer": esmanager.AnalyzerIkSmart, }, }, }, }, "mappings": esmanager.M{ "properties": esmanager.M{ FN.ESPlaylet.Id: esmanager.M{ "type": "long", }, FN.ESPlaylet.Status: esmanager.M{ "type": "integer", }, FN.ESPlaylet.IsFeatured: esmanager.M{ "type": "boolean", }, FN.ESPlaylet.IsRecommend: esmanager.M{ "type": "boolean", }, FN.ESPlaylet.ShowOnBanner: esmanager.M{ "type": "boolean", }, FN.ESPlaylet.Banner: esmanager.M{ "type": "keyword", "index": false, }, FN.ESPlaylet.OnlineAt: esmanager.M{ "type": "date", "format": "strict_date_optional_time||epoch_millis||yyyy-MM-dd HH:mm:ss", }, FN.ESPlaylet.CategoryIds: esmanager.M{ "type": "long", }, FN.ESPlaylet.CategoryNames: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkMaxWord, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESPlaylet.ThemeIds: esmanager.M{ "type": "long", }, FN.ESPlaylet.ThemeNames: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkMaxWord, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESPlaylet.Title: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkMaxWord, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESPlaylet.Desc: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESPlaylet.Anchor: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESPlaylet.Cover: esmanager.M{ "type": "keyword", "index": false, }, FN.ESPlaylet.TagIds: esmanager.M{ "type": "long", }, FN.ESPlaylet.TagNames: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkMaxWord, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESPlaylet.TotalEpisode: esmanager.M{ "type": "long", }, FN.ESPlaylet.UpdateStatus: esmanager.M{ "type": "integer", }, FN.ESPlaylet.CountBrowse: esmanager.M{ "type": "long", }, FN.ESPlaylet.HeatValue: esmanager.M{ "type": "long", }, FN.ESPlaylet.CountCollect: esmanager.M{ "type": "long", }, FN.ESPlaylet.CountLike: esmanager.M{ "type": "long", }, FN.ESPlaylet.SeoInfo: esmanager.M{ "properties": esmanager.M{ "title": esmanager.M{ "type": "keyword", "index": false, }, "keyworld": esmanager.M{ "type": "keyword", "index": false, }, "description": esmanager.M{ "type": "keyword", "index": false, }, }, }, FN.ESPlaylet.UpdatedAt: esmanager.M{ "type": "date", "format": "strict_date_optional_time||epoch_millis||yyyy-MM-dd HH:mm:ss", }, FN.ESPlaylet.CreatedAt: esmanager.M{ "type": "date", "format": "strict_date_optional_time||epoch_millis||yyyy-MM-dd HH:mm:ss", }, }, }, } if err := esmanager.Instance.InitIndices(esIndex, setting); err != nil { panic(fmt.Sprintf("ElasticSearch Index %s initPlayletIndex error", esIndex)) } } func initActressIndex(esIndex string) { var setting = esmanager.M{ "settings": esmanager.M{ "number_of_shards": esmanager.NumberOfShards, "number_of_replicas": esmanager.NumberOfReplicas, "analysis": esmanager.M{ "analyzer": esmanager.M{ "ik": esmanager.M{ "tokenizer": esmanager.AnalyzerIkSmart, }, }, }, }, "mappings": esmanager.M{ "properties": esmanager.M{ FN.ESActress.Alias: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESActress.Desc: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESActress.Office: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESActress.Region: esmanager.M{ "type": "text", "analyzer": esmanager.AnalyzerIkSmart, "search_analyzer": esmanager.AnalyzerIkSmart, }, FN.ESActress.Rank: esmanager.M{ "type": "integer", }, FN.ESActress.Status: esmanager.M{ "type": "integer", }, FN.ESActress.Works: esmanager.M{ "type": "integer", }, FN.ESActress.HotValue: esmanager.M{ "type": "integer", }, FN.ESActress.Real.WatchTimes: esmanager.M{ "type": "integer", }, FN.ESActress.Real.WeekWatchs: esmanager.M{ "type": "integer", }, FN.ESActress.Real.MonthWatchs: esmanager.M{ "type": "integer", }, FN.ESActress.DebutDate: esmanager.M{ "type": "date", "format": "strict_date_optional_time||epoch_millis||yyyy-MM-dd HH:mm:ss", }, FN.ESActress.DebutDate: esmanager.M{ "type": "date", "format": "strict_date_optional_time||epoch_millis||yyyy-MM-dd HH:mm:ss", }, }, }, } if err := esmanager.Instance.InitIndices(esIndex, setting); err != nil { panic(fmt.Sprintf("ElasticSearch Index %s initMediaIndex error", esIndex)) } }