From dca76fd5d3ecb97cb0c1675def676e8703158abb Mon Sep 17 00:00:00 2001 From: lzh <1625167628@qq.com> Date: Wed, 9 Jul 2025 11:55:09 +0800 Subject: [PATCH] support sqlite es highlight --- internal/app/logic/es.go | 6 ++++-- internal/app/logic/log_logic.go | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/internal/app/logic/es.go b/internal/app/logic/es.go index 63e43c5..28b4a0a 100644 --- a/internal/app/logic/es.go +++ b/internal/app/logic/es.go @@ -110,7 +110,6 @@ func (e *esLogic) Search(req model.GetLogReq, filterProcessName ...string) model if req.Match.Using != "" { queryList = append(queryList, elastic.NewMatchQuery("using", req.Match.Using)) } - if len(filterProcessName) != 0 { // 过滤进程名 shouldQueryList := []elastic.Query{} for _, fpn := range filterProcessName { @@ -123,7 +122,7 @@ func (e *esLogic) Search(req model.GetLogReq, filterProcessName ...string) model } result := model.LogResp{} - resp, err := search.Query(elastic.NewBoolQuery().Must(queryList...)).Do(context.TODO()) + resp, err := search.Query(elastic.NewBoolQuery().Must(queryList...)).Highlight(elastic.NewHighlight().Field("log").PreTags("\033[43m").PostTags("\033[0m")).Do(context.TODO()) if err != nil { log.Logger.Errorw("es查询失败", "err", err, "reason", resp.Error.Reason) return result @@ -134,6 +133,9 @@ func (e *esLogic) Search(req model.GetLogReq, filterProcessName ...string) model if v.Source != nil { var data model.ProcessLog if err := json.Unmarshal(v.Source, &data); err == nil { + if len(v.Highlight) > 0 && len(v.Highlight["log"]) > 0 { + data.Log = v.Highlight["log"][0] + } result.Data = append(result.Data, &data) } else { log.Logger.Errorw("JSON 解码失败", "err", err) diff --git a/internal/app/logic/log_logic.go b/internal/app/logic/log_logic.go index e1e2ff1..b076d72 100644 --- a/internal/app/logic/log_logic.go +++ b/internal/app/logic/log_logic.go @@ -1,6 +1,8 @@ package logic import ( + "strings" + "github.com/lzh-1625/go_process_manager/config" "github.com/lzh-1625/go_process_manager/internal/app/model" "github.com/lzh-1625/go_process_manager/internal/app/repository" @@ -37,6 +39,11 @@ var LogSqlite = new(logSqlite) func (l *logSqlite) Search(req model.GetLogReq, filterProcessName ...string) model.LogResp { req.FilterName = filterProcessName data, total := repository.LogRepository.SearchLog(req) + if req.Match.Log != "" { + for i := range data { + data[i].Log = strings.ReplaceAll(data[i].Log, req.Match.Log, "\033[43m"+req.Match.Log+"\033[0m") + } + } return model.LogResp{ Data: data, Total: total,