elastic.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package services
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/olivere/elastic/v7"
  6. "hongze/hongze_ETA_mobile_api/models"
  7. "strings"
  8. )
  9. func NewClient() (client *elastic.Client, err error) {
  10. client, err = elastic.NewClient(
  11. elastic.SetURL(ES_URL),
  12. elastic.SetBasicAuth(ES_USERNAME, ES_PASSWORD),
  13. elastic.SetSniff(false))
  14. return
  15. }
  16. // EsAddOrEditReport 新增编辑es报告
  17. func EsAddOrEditReport(indexName, docId string, item *models.ElasticReportDetail) (err error) {
  18. defer func() {
  19. if err != nil {
  20. fmt.Println("EsAddOrEditReport Err:", err.Error())
  21. }
  22. }()
  23. client, err := NewClient()
  24. if err != nil {
  25. return
  26. }
  27. // docId为报告ID+章节ID
  28. searchById, err := client.Get().Index(indexName).Id(docId).Do(context.Background())
  29. if err != nil && !strings.Contains(err.Error(), "404") {
  30. fmt.Println("Get Err" + err.Error())
  31. return
  32. }
  33. if searchById != nil && searchById.Found {
  34. resp, err := client.Update().Index(indexName).Id(docId).Doc(map[string]interface{}{
  35. "ReportId": item.ReportId,
  36. "ReportChapterId": item.ReportChapterId,
  37. "Title": item.Title,
  38. "Abstract": item.Abstract,
  39. "BodyContent": item.BodyContent,
  40. "PublishTime": item.PublishTime,
  41. "PublishState": item.PublishState,
  42. "Author": item.Author,
  43. "ClassifyIdFirst": item.ClassifyIdFirst,
  44. "ClassifyNameFirst": item.ClassifyNameFirst,
  45. "ClassifyIdSecond": item.ClassifyIdSecond,
  46. "ClassifyNameSecond": item.ClassifyNameSecond,
  47. "Categories": item.Categories,
  48. "StageStr": item.StageStr,
  49. }).Do(context.Background())
  50. if err != nil {
  51. return err
  52. }
  53. //fmt.Println(resp.Status, resp.Result)
  54. if resp.Status == 0 {
  55. fmt.Println("修改成功" + docId)
  56. err = nil
  57. } else {
  58. fmt.Println("EditData", resp.Status, resp.Result)
  59. }
  60. } else {
  61. resp, err := client.Index().Index(indexName).Id(docId).BodyJson(item).Do(context.Background())
  62. if err != nil {
  63. fmt.Println("新增失败:", err.Error())
  64. return err
  65. }
  66. if resp.Status == 0 && resp.Result == "created" {
  67. fmt.Println("新增成功" + docId)
  68. return nil
  69. } else {
  70. fmt.Println("AddData", resp.Status, resp.Result)
  71. }
  72. }
  73. return
  74. }