更新缓存模块
This commit is contained in:
@@ -5,96 +5,102 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/elastic/go-elasticsearch/v8"
|
||||
"github.com/elastic/go-elasticsearch/v8/typedapi/core/bulk"
|
||||
"github.com/elastic/go-elasticsearch/v8/typedapi/core/delete"
|
||||
"github.com/elastic/go-elasticsearch/v8/typedapi/core/search"
|
||||
"github.com/elastic/go-elasticsearch/v8/typedapi/core/update"
|
||||
"github.com/elastic/go-elasticsearch/v8/typedapi/types"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gctx"
|
||||
)
|
||||
|
||||
var (
|
||||
es *elasticsearch.TypedClient
|
||||
)
|
||||
|
||||
type elastic struct {
|
||||
type Elastic struct {
|
||||
client *elasticsearch.TypedClient
|
||||
name string
|
||||
}
|
||||
|
||||
func New(name ...string) *elastic {
|
||||
// ES 配置
|
||||
cfg := elasticsearch.Config{
|
||||
Addresses: []string{
|
||||
"http://ay.cname.com:9200",
|
||||
},
|
||||
}
|
||||
func NewV1(name string) *Elastic {
|
||||
var cfg elasticsearch.Config
|
||||
_cfg := g.Cfg().MustGetWithEnv(gctx.New(), "elasticsearch")
|
||||
_cfg.Scan(&cfg)
|
||||
if es == nil {
|
||||
var err error
|
||||
es, err = elasticsearch.NewTypedClient(cfg)
|
||||
if err != nil {
|
||||
fmt.Printf("elasticsearch.NewTypedClient failed, err:%v\n", err)
|
||||
return &elastic{}
|
||||
return &Elastic{}
|
||||
}
|
||||
}
|
||||
return &elastic{
|
||||
return &Elastic{
|
||||
client: es,
|
||||
name: name,
|
||||
}
|
||||
}
|
||||
|
||||
// createIndex 创建索引
|
||||
func (s *elastic) CreateIndex(name string) {
|
||||
resp, err := s.client.Indices.
|
||||
Create(name).
|
||||
Do(context.Background())
|
||||
if err != nil {
|
||||
fmt.Printf("create index failed, err:%v\n", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("index:%#v\n", resp.Index)
|
||||
}
|
||||
|
||||
// indexDocument 索引文档
|
||||
func (s *elastic) IndexDocument(name string, key string, data interface{}) {
|
||||
//// Create 创建索引
|
||||
//func (s *Elastic) Create(ctx context.Context) {
|
||||
// resp, err := s.client.Indices.
|
||||
// Create(s.name).Do(ctx)
|
||||
// if err != nil {
|
||||
// fmt.Printf("create index failed, err:%v\n", err)
|
||||
// return
|
||||
// }
|
||||
// fmt.Printf("index:%#v\n", resp.Index)
|
||||
//}
|
||||
|
||||
// Set 索引文档
|
||||
func (s *Elastic) Set(ctx context.Context, key string, data interface{}) (err error) {
|
||||
// 添加文档
|
||||
resp, err := s.client.Index(name).
|
||||
Id(key).
|
||||
Document(data).
|
||||
Do(context.Background())
|
||||
if err != nil {
|
||||
fmt.Printf("indexing document failed, err:%v\n", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("result:%#v\n", resp.Result)
|
||||
}
|
||||
|
||||
// getDocument 获取文档
|
||||
func (s *elastic) GetDocument(name string, id string) (res json.RawMessage) {
|
||||
resp, err := s.client.Get(name, id).
|
||||
Do(context.Background())
|
||||
if err != nil {
|
||||
fmt.Printf("get document by id failed, err:%v\n", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("fileds:%s\n", resp.Source_)
|
||||
res = resp.Source_
|
||||
_, err = s.client.Index(s.name).Id(key).Document(data).Do(ctx)
|
||||
return
|
||||
}
|
||||
|
||||
// updateDocument 更新文档
|
||||
func (s *elastic) UpdateDocument(name string, key string, data interface{}) {
|
||||
|
||||
resp, err := s.client.Update(name, key).
|
||||
Doc(data). // 使用结构体变量更新
|
||||
Do(context.Background())
|
||||
if err != nil {
|
||||
fmt.Printf("update document failed, err:%v\n", err)
|
||||
return
|
||||
// SetBulk 批量添加文档
|
||||
func (s *Elastic) SetBulk(ctx context.Context, data []any) (err error) {
|
||||
var save *bulk.Request
|
||||
save = &bulk.Request{
|
||||
data,
|
||||
}
|
||||
fmt.Printf("result:%v\n", resp.Result)
|
||||
s.client.Bulk().Index(s.name).Request(save).Do(ctx)
|
||||
return
|
||||
}
|
||||
|
||||
// deleteDocument 删除 document
|
||||
func (s *elastic) DeleteDocument(name string, key string) {
|
||||
resp, err := s.client.Delete(name, key).
|
||||
Do(context.Background())
|
||||
// Get 获取文档
|
||||
func (s *Elastic) Get(ctx context.Context, id string) (res json.RawMessage, err error) {
|
||||
get, err := s.client.Get(s.name, id).Do(ctx)
|
||||
if err != nil {
|
||||
fmt.Printf("delete document failed, err:%v\n", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("result:%v\n", resp.Result)
|
||||
res = get.Source_
|
||||
return
|
||||
}
|
||||
|
||||
// Update 更新文档
|
||||
func (s *Elastic) Update(ctx context.Context, key string, data interface{}) (res *update.Response, err error) {
|
||||
res, err = s.client.Update(s.name, key).Doc(data).Do(ctx)
|
||||
return
|
||||
}
|
||||
|
||||
// Delete 删除 document
|
||||
func (s *Elastic) Delete(ctx context.Context, key string) (res *delete.Response, err error) {
|
||||
res, err = s.client.Delete(s.name, key).Do(ctx)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Select 查询
|
||||
func (s *Elastic) Select(ctx context.Context, query *types.MatchAllQuery) (res *search.Response, err error) {
|
||||
res, err = s.client.Search(). //Index("my_index").
|
||||
Request(&search.Request{
|
||||
Query: &types.Query{
|
||||
MatchAll: &types.MatchAllQuery{},
|
||||
},
|
||||
}).Do(ctx)
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user