elastic.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package services
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/olivere/elastic/v7"
  6. "hongze/hongze_ETA_mobile_api/models"
  7. "hongze/hongze_ETA_mobile_api/services/alarm_msg"
  8. "strings"
  9. )
  10. func NewClient() (client *elastic.Client, err error) {
  11. client, err = elastic.NewClient(
  12. elastic.SetURL(ES_URL),
  13. elastic.SetBasicAuth(ES_USERNAME, ES_PASSWORD),
  14. elastic.SetSniff(false))
  15. return
  16. }
  17. // EsAddOrEditReport 新增编辑es报告
  18. func EsAddOrEditReport(indexName, docId string, item *models.ElasticReportDetail) (err error) {
  19. defer func() {
  20. if err != nil {
  21. fmt.Println("EsAddOrEditReport Err:", err.Error())
  22. }
  23. }()
  24. client, err := NewClient()
  25. if err != nil {
  26. return
  27. }
  28. // docId为报告ID+章节ID
  29. searchById, err := client.Get().Index(indexName).Id(docId).Do(context.Background())
  30. if err != nil && !strings.Contains(err.Error(), "404") {
  31. fmt.Println("Get Err" + err.Error())
  32. return
  33. }
  34. if searchById != nil && searchById.Found {
  35. resp, err := client.Update().Index(indexName).Id(docId).Doc(map[string]interface{}{
  36. "ReportId": item.ReportId,
  37. "ReportChapterId": item.ReportChapterId,
  38. "Title": item.Title,
  39. "Abstract": item.Abstract,
  40. "BodyContent": item.BodyContent,
  41. "PublishTime": item.PublishTime,
  42. "PublishState": item.PublishState,
  43. "Author": item.Author,
  44. "ClassifyIdFirst": item.ClassifyIdFirst,
  45. "ClassifyNameFirst": item.ClassifyNameFirst,
  46. "ClassifyIdSecond": item.ClassifyIdSecond,
  47. "ClassifyNameSecond": item.ClassifyNameSecond,
  48. "Categories": item.Categories,
  49. "StageStr": item.StageStr,
  50. }).Do(context.Background())
  51. if err != nil {
  52. return err
  53. }
  54. //fmt.Println(resp.Status, resp.Result)
  55. if resp.Status == 0 {
  56. fmt.Println("修改成功" + docId)
  57. err = nil
  58. } else {
  59. fmt.Println("EditData", resp.Status, resp.Result)
  60. }
  61. } else {
  62. resp, err := client.Index().Index(indexName).Id(docId).BodyJson(item).Do(context.Background())
  63. if err != nil {
  64. fmt.Println("新增失败:", err.Error())
  65. return err
  66. }
  67. if resp.Status == 0 && resp.Result == "created" {
  68. fmt.Println("新增成功" + docId)
  69. return nil
  70. } else {
  71. fmt.Println("AddData", resp.Status, resp.Result)
  72. }
  73. }
  74. return
  75. }
  76. // EsAddOrEditEnglishReport 新增编辑es英文报告
  77. func EsAddOrEditEnglishReport(indexName, docId string, item *models.ElasticEnglishReportDetail) (err error) {
  78. defer func() {
  79. if err != nil {
  80. fmt.Println("EsAddOrEditEnglishReport Err:", err.Error())
  81. go alarm_msg.SendAlarmMsg("新增编辑es英文报告 EsAddOrEditEnglishReport,Err:"+err.Error(), 3)
  82. }
  83. }()
  84. client, err := NewClient()
  85. if err != nil {
  86. return
  87. }
  88. // docId为报告ID
  89. searchById, err := client.Get().Index(indexName).Id(docId).Do(context.Background())
  90. if err != nil {
  91. if strings.Contains(err.Error(), "404") {
  92. err = nil
  93. } else {
  94. fmt.Println("Get Err" + err.Error())
  95. return
  96. }
  97. }
  98. if searchById != nil && searchById.Found {
  99. resp, e := client.Update().Index(indexName).Id(docId).Doc(map[string]interface{}{
  100. "Id": item.Id,
  101. "ReportId": item.ReportId,
  102. "VideoId": item.VideoId,
  103. "Title": item.Title,
  104. "Abstract": item.Abstract,
  105. "BodyContent": item.BodyContent,
  106. "PublishTime": item.PublishTime,
  107. "PublishState": item.PublishState,
  108. "Author": item.Author,
  109. "ClassifyIdFirst": item.ClassifyIdFirst,
  110. "ClassifyNameFirst": item.ClassifyNameFirst,
  111. "ClassifyIdSecond": item.ClassifyIdSecond,
  112. "ClassifyNameSecond": item.ClassifyNameSecond,
  113. "CreateTime": item.CreateTime,
  114. "Overview": item.Overview,
  115. "ReportCode": item.ReportCode,
  116. "Frequency": item.Frequency,
  117. "StageStr": item.StageStr,
  118. "ContentSub": item.ContentSub,
  119. }).Do(context.Background())
  120. if e != nil {
  121. err = e
  122. return
  123. }
  124. //fmt.Println(resp.Status, resp.Result)
  125. if resp.Status == 0 {
  126. fmt.Println("修改成功" + docId)
  127. err = nil
  128. } else {
  129. fmt.Println("EditData", resp.Status, resp.Result)
  130. }
  131. } else {
  132. resp, e := client.Index().Index(indexName).Id(docId).BodyJson(item).Do(context.Background())
  133. if e != nil {
  134. err = e
  135. fmt.Println("新增失败:", err.Error())
  136. return
  137. }
  138. if resp.Status == 0 && resp.Result == "created" {
  139. fmt.Println("新增成功" + docId)
  140. return
  141. } else {
  142. fmt.Println("AddData", resp.Status, resp.Result)
  143. }
  144. }
  145. return
  146. }