edb_info_elastic.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package data
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/olivere/elastic/v7"
  6. "hongze/hongze_chart_lib/models/data_manage"
  7. "hongze/hongze_chart_lib/utils"
  8. "log"
  9. "os"
  10. "strconv"
  11. "strings"
  12. )
  13. const (
  14. ES_URL = "http://es-cn-nif227b580019rgw6.public.elasticsearch.aliyuncs.com:9200" //<1>
  15. ES_USERNAME = "elastic" //<2>
  16. ES_PASSWORD = "hongze@2021" //<3>
  17. )
  18. func NewClient() (client *elastic.Client, err error) {
  19. errorlog := log.New(os.Stdout, "APP", log.LstdFlags)
  20. file := ""
  21. if utils.RunMode == "release" {
  22. file = `./rdlucklog/eslog.log`
  23. } else {
  24. file = `./rdlucklog/eslog.log`
  25. }
  26. logFile, _ := os.OpenFile(file, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0766)
  27. client, err = elastic.NewClient(
  28. elastic.SetURL(ES_URL),
  29. elastic.SetBasicAuth(ES_USERNAME, ES_PASSWORD),
  30. elastic.SetTraceLog(log.New(logFile, "ES-TRACE: ", 0)),
  31. elastic.SetSniff(false), elastic.SetErrorLog(errorlog))
  32. return
  33. }
  34. //indexName:索引名称
  35. //mappingJson:表结构
  36. func EsCreateIndex(indexName, mappingJson string) (err error) {
  37. client, err := NewClient()
  38. if err != nil {
  39. return
  40. }
  41. //定义表结构
  42. exists, err := client.IndexExists(indexName).Do(context.Background()) //<5>
  43. if err != nil {
  44. return
  45. }
  46. if !exists {
  47. resp, err := client.CreateIndex(indexName).BodyJson(mappingJson).Do(context.Background())
  48. //BodyJson(bodyJson).Do(context.Background())
  49. if err != nil {
  50. fmt.Println("CreateIndex Err:" + err.Error())
  51. return err
  52. }
  53. fmt.Println(resp.Index, resp.ShardsAcknowledged, resp.Acknowledged)
  54. } else {
  55. fmt.Println(indexName + " 已存在")
  56. }
  57. return
  58. }
  59. func AddAllEdbInfo() {
  60. allList, err := data_manage.GetEdbInfoAllList()
  61. if err != nil {
  62. fmt.Println("GetArticleAll Err:", err.Error())
  63. return
  64. }
  65. indexName := "hz_data_lib_v1"
  66. for _, v := range allList {
  67. EsAddOrEditEdbInfo(indexName, strconv.Itoa(v.EdbInfoId), v)
  68. fmt.Println(v.EdbInfoId)
  69. }
  70. }
  71. //新增和修改数据
  72. func EsAddOrEditEdbInfo(indexName, docId string, item *data_manage.EdbInfo) (err error) {
  73. defer func() {
  74. if err != nil {
  75. fmt.Println("EsAddOrEditEdbInfo Err:", err.Error())
  76. }
  77. }()
  78. client, err := NewClient()
  79. if err != nil {
  80. return
  81. }
  82. searchById, err := client.Get().Index(indexName).Id(docId).Do(context.Background())
  83. if err != nil && !strings.Contains(err.Error(), "404") {
  84. fmt.Println("Get Err" + err.Error())
  85. return
  86. }
  87. if searchById != nil && searchById.Found {
  88. resp, err := client.Update().Index(indexName).Id(docId).Doc(map[string]interface{}{
  89. "EdbInfoId": item.EdbInfoId,
  90. "EdbCode": item.EdbCode,
  91. "EdbName": item.EdbName,
  92. "Frequency": item.Frequency,
  93. "SourceName": item.SourceName,
  94. "UniqueCode": item.UniqueCode,
  95. "Unit": item.Unit,
  96. }).Do(context.Background())
  97. if err != nil {
  98. return err
  99. }
  100. fmt.Println(resp.Status, resp.Result)
  101. if resp.Status == 0 {
  102. fmt.Println("修改成功")
  103. } else {
  104. fmt.Println("EditData", resp.Status, resp.Result)
  105. }
  106. } else {
  107. resp, err := client.Index().Index(indexName).Id(docId).BodyJson(item).Do(context.Background())
  108. if err != nil {
  109. fmt.Println("新增失败:", err.Error())
  110. return err
  111. }
  112. if resp.Status == 0 && resp.Result == "created" {
  113. fmt.Println("新增成功")
  114. err = nil
  115. } else {
  116. fmt.Println("AddData", resp.Status, resp.Result)
  117. }
  118. }
  119. return
  120. }