This commit is contained in:
gotoeasy 2024-04-08 09:26:17 +08:00
parent c05556d41c
commit 86567c8070
3 changed files with 59 additions and 44 deletions

View File

@ -53,6 +53,7 @@ var enableUploadMinio bool
var goMaxProcess int var goMaxProcess int
var enableCors bool var enableCors bool
var pageSize int var pageSize int
var nearSearchSize int
var mulitLineSearch bool var mulitLineSearch bool
var testMode bool var testMode bool
var tokenSalt string var tokenSalt string
@ -66,42 +67,48 @@ func init() {
func UpdateConfigByEnv() { func UpdateConfigByEnv() {
// 读取环境变量初始化配置,各配置都有默认值 // 读取环境变量初始化配置,各配置都有默认值
storeChanLength = cmn.GetEnvInt("GLC_STORE_CHAN_LENGTH", 64) // 【X】存储通道长度 storeChanLength = cmn.GetEnvInt("GLC_STORE_CHAN_LENGTH", 64) // 【X】存储通道长度
maxIdleTime = cmn.GetEnvInt("GLC_MAX_IDLE_TIME", 300) // 【X】最大闲置时间,超过闲置时间将自动关闭0时表示不关闭 maxIdleTime = cmn.GetEnvInt("GLC_MAX_IDLE_TIME", 300) // 【X】最大闲置时间,超过闲置时间将自动关闭0时表示不关闭
storeNameAutoAddDate = cmn.GetEnvBool("GLC_STORE_NAME_AUTO_ADD_DATE", true) // 存储名是否自动添加日期日志量大通常按日单位区分存储默认true storeNameAutoAddDate = cmn.GetEnvBool("GLC_STORE_NAME_AUTO_ADD_DATE", true) // 存储名是否自动添加日期日志量大通常按日单位区分存储默认true
serverUrl = cmn.GetEnvStr("GLC_SERVER_URL", "") // 服务URL默认“”集群配置时自动获取地址可能不对可通过这个设定 serverUrl = cmn.GetEnvStr("GLC_SERVER_URL", "") // 服务URL默认“”集群配置时自动获取地址可能不对可通过这个设定
serverIp = cmn.GetEnvStr("GLC_SERVER_IP", "") // 【X】服务IP默认“”当“”时会自动获取 serverIp = cmn.GetEnvStr("GLC_SERVER_IP", "") // 【X】服务IP默认“”当“”时会自动获取
enableSecurityKey = cmn.GetEnvBool("GLC_ENABLE_SECURITY_KEY", false) // web服务是否开启API秘钥校验默认false enableSecurityKey = cmn.GetEnvBool("GLC_ENABLE_SECURITY_KEY", false) // web服务是否开启API秘钥校验默认false
headerSecurityKey = cmn.GetEnvStr("GLC_HEADER_SECURITY_KEY", "X-GLC-AUTH") // web服务API秘钥的header键名 headerSecurityKey = cmn.GetEnvStr("GLC_HEADER_SECURITY_KEY", "X-GLC-AUTH") // web服务API秘钥的header键名
securityKey = cmn.GetEnvStr("GLC_SECURITY_KEY", "glogcenter") // web服务API秘钥 securityKey = cmn.GetEnvStr("GLC_SECURITY_KEY", "glogcenter") // web服务API秘钥
enableWebGzip = cmn.GetEnvBool("GLC_ENABLE_WEB_GZIP", false) // web服务是否开启Gzip enableWebGzip = cmn.GetEnvBool("GLC_ENABLE_WEB_GZIP", false) // web服务是否开启Gzip
enableAmqpConsume = cmn.GetEnvBool("GLC_ENABLE_AMQP_CONSUME", false) // 是否开启rabbitMq消费者接收日志 enableAmqpConsume = cmn.GetEnvBool("GLC_ENABLE_AMQP_CONSUME", false) // 是否开启rabbitMq消费者接收日志
amqpAddr = cmn.GetEnvStr("GLC_AMQP_ADDR", "") // rabbitMq连接地址"amqp://user:password@ip:port/" amqpAddr = cmn.GetEnvStr("GLC_AMQP_ADDR", "") // rabbitMq连接地址"amqp://user:password@ip:port/"
amqpQueueName = cmn.GetEnvStr("GLC_AMQP_QUEUE_NAME", "glc-log-queue") // rabbitMq队列名 amqpQueueName = cmn.GetEnvStr("GLC_AMQP_QUEUE_NAME", "glc-log-queue") // rabbitMq队列名
amqpJsonFormat = cmn.GetEnvBool("GLC_AMQP_JSON_FORMAT", true) // rabbitMq消息文本是否为json格式默认true amqpJsonFormat = cmn.GetEnvBool("GLC_AMQP_JSON_FORMAT", true) // rabbitMq消息文本是否为json格式默认true
saveDays = cmn.GetEnvInt("GLC_SAVE_DAYS", 180) // 日志分仓时的保留天数(0~1200)0表示不自动删除默认180天 saveDays = cmn.GetEnvInt("GLC_SAVE_DAYS", 180) // 日志分仓时的保留天数(0~1200)0表示不自动删除默认180天
enableLogin = cmn.GetEnvBool("GLC_ENABLE_LOGIN", false) // 是否开启用户密码登录默认“false” enableLogin = cmn.GetEnvBool("GLC_ENABLE_LOGIN", false) // 是否开启用户密码登录默认“false”
sessionTimeout = cmn.GetEnvInt("GLC_SESSION_TIMEOUT", 30) // 登录会话超时时间默认“30”分钟 sessionTimeout = cmn.GetEnvInt("GLC_SESSION_TIMEOUT", 30) // 登录会话超时时间默认“30”分钟
username = cmn.GetEnvStr("GLC_USERNAME", "glc") // 登录用户名默认“glc” username = cmn.GetEnvStr("GLC_USERNAME", "glc") // 登录用户名默认“glc”
password = cmn.GetEnvStr("GLC_PASSWORD", "GLogCenter100%666") // 登录密码默认“GLogCenter100%666” password = cmn.GetEnvStr("GLC_PASSWORD", "GLogCenter100%666") // 登录密码默认“GLogCenter100%666”
tokenSalt = cmn.GetEnvStr("GLC_TOKEN_SALT", "") // 令牌盐,默认“” tokenSalt = cmn.GetEnvStr("GLC_TOKEN_SALT", "") // 令牌盐,默认“”
aryWhite = cmn.Split(cmn.GetEnvStr("GLC_WHITE_LIST", ""), ",") // IP或区域白名单逗号分隔默认“” aryWhite = cmn.Split(cmn.GetEnvStr("GLC_WHITE_LIST", ""), ",") // IP或区域白名单逗号分隔默认“”
aryBlack = cmn.Split(cmn.GetEnvStr("GLC_BLACK_LIST", ""), ",") // IP或区域黑名单逗号分隔单个*代表全部,内网地址不受限制,默认“” aryBlack = cmn.Split(cmn.GetEnvStr("GLC_BLACK_LIST", ""), ",") // IP或区域黑名单逗号分隔单个*代表全部,内网地址不受限制,默认“”
ipAddCity = cmn.GetEnvBool("GLC_IP_ADD_CITY", false) // IP是否要自动附加城市信息默认false ipAddCity = cmn.GetEnvBool("GLC_IP_ADD_CITY", false) // IP是否要自动附加城市信息默认false
clusterMode = cmn.GetEnvBool("GLC_CLUSTER_MODE", false) // 是否开启集群模式默认false clusterMode = cmn.GetEnvBool("GLC_CLUSTER_MODE", false) // 是否开启集群模式默认false
splitUrls(cmn.GetEnvStr("GLC_CLUSTER_URLS", "")) // 从服务器地址,多个时逗号分开,默认“” splitUrls(cmn.GetEnvStr("GLC_CLUSTER_URLS", "")) // 从服务器地址,多个时逗号分开,默认“”
enableBackup = cmn.GetEnvBool("GLC_ENABLE_BACKUP", false) // 【X】是否开启备份默认false enableBackup = cmn.GetEnvBool("GLC_ENABLE_BACKUP", false) // 【X】是否开启备份默认false
glcGroup = cmn.GetEnvStr("GLC_GROUP", "default") // 【X】日志中心分组名默认“default” glcGroup = cmn.GetEnvStr("GLC_GROUP", "default") // 【X】日志中心分组名默认“default”
minioUrl = cmn.GetEnvStr("GLC_MINIO_URL", "") // 【X】MINIO地址默认“” minioUrl = cmn.GetEnvStr("GLC_MINIO_URL", "") // 【X】MINIO地址默认“”
minioUser = cmn.GetEnvStr("GLC_MINIO_USER", "") // 【X】MINIO用户名默认“” minioUser = cmn.GetEnvStr("GLC_MINIO_USER", "") // 【X】MINIO用户名默认“”
minioPassword = cmn.GetEnvStr("GLC_MINIO_PASS", "") // 【X】MINIO密码默认“” minioPassword = cmn.GetEnvStr("GLC_MINIO_PASS", "") // 【X】MINIO密码默认“”
minioBucket = cmn.GetEnvStr("GLC_MINIO_BUCKET", "") // 【X】MINIO桶名默认“” minioBucket = cmn.GetEnvStr("GLC_MINIO_BUCKET", "") // 【X】MINIO桶名默认“”
enableUploadMinio = cmn.GetEnvBool("GLC_ENABLE_UPLOAD_MINIO", false) // 【X】是否开启上传备份至MINIO服务器默认false enableUploadMinio = cmn.GetEnvBool("GLC_ENABLE_UPLOAD_MINIO", false) // 【X】是否开启上传备份至MINIO服务器默认false
goMaxProcess = getGoMaxProcessConf(cmn.GetEnvInt("GLC_GOMAXPROCS", -1)) // 使用的最大CPU数量默认是最大CPU数量设定值不在实际数量范围是按最大看待 goMaxProcess = getGoMaxProcessConf(cmn.GetEnvInt("GLC_GOMAXPROCS", -1)) // 使用的最大CPU数量默认是最大CPU数量设定值不在实际数量范围是按最大看待
enableCors = cmn.GetEnvBool("GLC_ENABLE_CORS", false) // 是否允许跨域默认false enableCors = cmn.GetEnvBool("GLC_ENABLE_CORS", false) // 是否允许跨域默认false
pageSize = getPageSizeConf(cmn.GetEnvInt("GLC_PAGE_SIZE", 100)) // 每次检索件数默认100有效范围1~1000 pageSize = getPageSizeConf(cmn.GetEnvInt("GLC_PAGE_SIZE", 100)) // 每次检索件数默认100有效范围1~1000
mulitLineSearch = cmn.GetEnvBool("GLC_SEARCH_MULIT_LINE", false) // 是否检索日志的全部行日志可能有换行默认false仅第一行 nearSearchSize = getNearSearchSizeConf(cmn.GetEnvInt("GLC_NEAR_SEARCH_SIZE", 200)) // 定位相邻检索的查询件数默认200有效范围50~1000
testMode = cmn.GetEnvBool("GLC_TEST_MODE", false) // 是否测试模式默认false mulitLineSearch = cmn.GetEnvBool("GLC_SEARCH_MULIT_LINE", false) // 是否检索日志的全部行日志可能有换行默认false仅第一行
testMode = cmn.GetEnvBool("GLC_TEST_MODE", false) // 是否测试模式默认false
}
// 取配置: 定位相邻检索的查询件数可通过环境变量“GLC_NEAR_SEARCH_SIZE”设定默认200件
func GetNearSearchSize() int {
return nearSearchSize
} }
// 取配置: IP是否要自动附加城市信息默认false // 取配置: IP是否要自动附加城市信息默认false
@ -143,6 +150,15 @@ func IsMulitLineSearch() bool {
func GetPageSize() int { func GetPageSize() int {
return pageSize return pageSize
} }
func getNearSearchSizeConf(n int) int {
if n < 50 {
n = 50
}
if n > 1000 {
n = 1000
}
return n
}
func getPageSizeConf(n int) int { func getPageSizeConf(n int) int {
if n < 1 { if n < 1 {
n = 1 n = 1

View File

@ -155,19 +155,18 @@ func (e *Engine) Search(cond *search.SearchCondition) *search.SearchResult {
// 多关键词查询模式 // 多关键词查询模式
if cond.NewNearId > 0 { if cond.NewNearId > 0 {
// 相邻检索模式的判断及条件准备 // 相邻检索模式的判断及条件准备
max := conf.GetPageSize() max := conf.GetNearSearchSize()
leftSize := 20
cond.CurrentId = cond.NewNearId cond.CurrentId = cond.NewNearId
isForward := cond.OldNearId < 1 || cond.NewNearId < cond.OldNearId // 是否向下检索更多的旧日志 isForward := cond.OldNearId < 1 || cond.NewNearId < cond.OldNearId // 是否向下检索更多的旧日志
// 搜索更多的新数据 // 搜索更多的新数据
// 反向检索前x条 // 反向检索前x条
cond.Forward = false leftSize := 20
if isForward { if !isForward {
cond.SearchSize = leftSize leftSize = max - leftSize
} else {
cond.SearchSize = max - leftSize
} }
cond.Forward = false
cond.SearchSize = leftSize
rs = search.SearchWordIndex(e.storeName, cond) rs = search.SearchWordIndex(e.storeName, cond)
// 定位日志1条固定不管是否满足检索条件 // 定位日志1条固定不管是否满足检索条件
ldm := search.GetLogDataModelById(cond.NearStoreName, cond.NewNearId) ldm := search.GetLogDataModelById(cond.NearStoreName, cond.NewNearId)

View File

@ -364,7 +364,7 @@ func findSame(cond *SearchCondition, minDocumentId uint32, maxDocumentId uint32,
// 简单检查排除没结果的情景 // 简单检查排除没结果的情景
totalCount := minIdx.idxwordStorage.GetTotalCount(minIdx.word) totalCount := minIdx.idxwordStorage.GetTotalCount(minIdx.word)
if totalCount == 0 || (totalCount == 1 && cond.CurrentId > 0) { if totalCount == 0 || (cond.NewNearId == 0 && totalCount == 1 && cond.CurrentId > 0) {
return rs // 索引件数0、或只有1条又还要跳过都是找不到 return rs // 索引件数0、或只有1条又还要跳过都是找不到
} }