From 10f9b69456e8f6a9adc155b30a39089b7b288674 Mon Sep 17 00:00:00 2001 From: yajun Date: Thu, 1 Aug 2024 18:04:34 +0800 Subject: [PATCH 1/2] test --- server/handler/search.go | 2 +- server/service/dao/indexManager.go | 128 +++++++++++++++++++++++++++++ server/service/dao/searchtest.go | 59 +++++++++++++ 3 files changed, 188 insertions(+), 1 deletion(-) create mode 100644 server/service/dao/indexManager.go create mode 100644 server/service/dao/searchtest.go diff --git a/server/handler/search.go b/server/handler/search.go index 39809c7..10a15ee 100644 --- a/server/handler/search.go +++ b/server/handler/search.go @@ -82,5 +82,5 @@ func QueryHandler(ctx *gin.Context) { } bodyBytes, _ := io.ReadAll(res.Body) fmt.Printf("Response body: %s\n", bodyBytes) - response.Success(ctx, res, "") + response.Success(ctx, bodyBytes, "") } diff --git a/server/service/dao/indexManager.go b/server/service/dao/indexManager.go new file mode 100644 index 0000000..1e42c0a --- /dev/null +++ b/server/service/dao/indexManager.go @@ -0,0 +1,128 @@ +package dao + +import ( + "context" + "encoding/json" + "fmt" + "io" + "log" + "strings" + + "gitee.com/openeuler/PilotGo-plugin-elk/server/elasticClient" + "gitee.com/openeuler/PilotGo-plugin-elk/server/errormanager" + "gitee.com/openeuler/PilotGo-plugin-elk/server/pluginclient" + "gitee.com/openeuler/PilotGo/sdk/response" + "github.com/elastic/go-elasticsearch/v7/esapi" + "github.com/gin-gonic/gin" + "github.com/pkg/errors" +) + +const ( + mapping = ` + { + "mappings": { + "properties": { + "v": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "normalizer": "lowercase" + } + } + } + } + } + }` +) + +// 创建索引请求 +func CreateeIndex(ctx *gin.Context, indexName string) { + defer ctx.Request.Body.Close() + req := esapi.IndicesCreateRequest{ + Index: indexName, + // 其它参数 + } + res, err := req.Do(context.Background(), elasticClient.Global_elastic.Client) + + // 关闭响应体 + defer res.Body.Close() + // 检查响应状态 + if err != nil { + err = errors.Errorf("%+v **warn**0", err.Error()) + errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + response.Fail(ctx, nil, errors.Cause(err).Error()) + return + } + if res.IsError() { + err = errors.Errorf("%+v **warn**0", res.String()) + errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + response.Fail(ctx, nil, res.String()) + return + } else { + resp_body_data := map[string]interface{}{} + resp_body_bytes, err := io.ReadAll(res.Body) + if err != nil { + err = errors.Errorf("%+v **warn**0", err.Error()) + errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + response.Fail(ctx, nil, res.String()) + return + } + json.Unmarshal(resp_body_bytes, &resp_body_data) + response.Success(ctx, resp_body_data, "") + } +} + +/* +* +创建索引 +*/ +func CreateNewIndex(indexName string) bool { + exists, err := elasticClient.Global_elastic.Client.Indices.Exists([]string{indexName}) + if err != nil { + fmt.Printf("indexName Existed ! err is %s\n", err) + return false + } + /** + 不存在就创建 + */ + if exists.StatusCode != 200 { + res, err := elasticClient.Global_elastic.Client.Indices.Create(indexName, elasticClient.Global_elastic.Client.Indices.Create.WithBody(strings.NewReader(mapping))) + if err != nil { + log.Fatal(err) + return false + } + defer res.Body.Close() + + var createRes map[string]interface{} + if err := json.NewDecoder(res.Body).Decode(&createRes); err != nil { + log.Fatal(err) + return false + } + + if acknowledged, ok := createRes["acknowledged"].(bool); ok && acknowledged { + fmt.Printf("indexName create success: %s\n", res.String()) + } else { + fmt.Printf("indexName create fail: %s\n", res.String()) + return false + } + } + return true +} + +// DeleteIndex 删除索引 +func DeleteIndex(ctx *gin.Context, indexName []string) { + // _, err := EsClient.Indices.Delete(indexName).Do(context.Background()) v8方式不适用 + req := esapi.IndicesDeleteRequest{ + Index: indexName, + } + _, err := req.Do(context.Background(), elasticClient.Global_elastic.Client) + if err != nil { + err = errors.Errorf("%+v **warn**0", err.Error()) + errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + response.Fail(ctx, nil, errors.Cause(err).Error()) + return + } + // fmt.Printf("delete index successed,indexName:%s", indexName) + return +} diff --git a/server/service/dao/searchtest.go b/server/service/dao/searchtest.go new file mode 100644 index 0000000..323f176 --- /dev/null +++ b/server/service/dao/searchtest.go @@ -0,0 +1,59 @@ +package dao + +// import ( +// "context" +// "encoding/json" +// "fmt" +// "io" +// "log" + +// "github.com/elastic/go-elasticsearch/v7" +// "github.com/elastic/go-elasticsearch/v7/esapi" +// ) + +// // Search performs a search request with the given parameters +// func SearchTest(es *elasticsearch.Client, index string, queryBody io.Reader) (string, error) { +// // Prepare the search request +// req := esapi.SearchRequest{ +// Index: []string{index}, +// Body: queryBody, // Use the io.Reader directly +// Pretty: true, // pretty print the JSON response +// TrackTotalHits: &esapi.TrackTotalHits{ +// Relation: "eq", +// Value: true, +// }, +// } + +// // Perform the search request +// res, err := req.Do(context.Background(), es) +// if err != nil { +// log.Fatalf("Error getting response: %s", err) +// return "", err +// } +// defer res.Body.Close() + +// if res.IsError() { +// var e map[string]interface{} +// if err := json.NewDecoder(res.Body).Decode(&e); err != nil { +// log.Fatalf("Error parsing the response body: %s", err) +// return "", err +// } +// // Print the response status and error information. +// log.Fatalf("[%s] %s: %s", +// res.Status(), +// e["error"].(map[string]interface{})["type"], +// e["error"].(map[string]interface{})["reason"], +// ) +// return "", fmt.Errorf("Elasticsearch error: %s", e["error"].(map[string]interface{})["reason"]) +// } + +// // Read and return the entire response body +// var buf []byte +// if _, err := io.ReadAll(res.Body, &buf); err != nil { +// log.Fatalf("Error reading the response body: %s", err) +// return "", err +// } + +// return string(buf), nil +// } +// ; -- Gitee From f40ee5692e03504a6ad6764f5c1381b353ef122f Mon Sep 17 00:00:00 2001 From: yajun Date: Thu, 1 Aug 2024 18:07:26 +0800 Subject: [PATCH 2/2] test12 --- server/conf/config.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/conf/config.go b/server/conf/config.go index 9128250..e40e16a 100644 --- a/server/conf/config.go +++ b/server/conf/config.go @@ -54,4 +54,9 @@ func InitConfig() { fmt.Printf("%+v\n", err) os.Exit(1) } + if err != nil { + err = errors.Errorf("yaml unmarshal failed: %s", err.Error()) // err top + fmt.Printf("%+v\n", err) + os.Exit(1) + } } -- Gitee