278 lines
7.4 KiB
Go
278 lines
7.4 KiB
Go
package esmod
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"videoweb/pub/common/log"
|
|
"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
|
|
}
|
|
initPlayletIndex(playletIndex)
|
|
}
|
|
|
|
// 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 {
|
|
log.Warn("初始化视频ES索引失败,跳过索引创建", log.Any("索引", esIndex), log.E(err))
|
|
}
|
|
}
|
|
|
|
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.OperateType: esmanager.M{
|
|
"type": "integer",
|
|
},
|
|
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.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.PlayName: esmanager.M{
|
|
"type": "text",
|
|
"analyzer": esmanager.AnalyzerIkMaxWord,
|
|
"search_analyzer": esmanager.AnalyzerIkSmart,
|
|
},
|
|
FN.ESPlaylet.Description: esmanager.M{
|
|
"type": "keyword",
|
|
"index": false,
|
|
},
|
|
FN.ESPlaylet.Slug: esmanager.M{
|
|
"type": "keyword",
|
|
},
|
|
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.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",
|
|
},
|
|
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,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
if err := esmanager.Instance.InitIndices(esIndex, setting); err != nil {
|
|
log.Warn("初始化短剧ES索引失败,跳过索引创建", log.Any("索引", esIndex), log.E(err))
|
|
}
|
|
}
|