Elasticsearch: Client refactor (#114745)
* split up client.go * split up search_request.go * remove double spaces
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package es
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
||||
)
|
||||
|
||||
// requestEncoder handles encoding of search requests to Elasticsearch format
|
||||
type requestEncoder struct {
|
||||
logger log.Logger
|
||||
}
|
||||
|
||||
// newRequestEncoder creates a new request encoder
|
||||
func newRequestEncoder(logger log.Logger) *requestEncoder {
|
||||
return &requestEncoder{
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
// encodeBatchRequests encodes multiple requests into NDJSON format
|
||||
func (e *requestEncoder) encodeBatchRequests(requests []*multiRequest) ([]byte, error) {
|
||||
start := time.Now()
|
||||
|
||||
payload := bytes.Buffer{}
|
||||
for _, r := range requests {
|
||||
reqHeader, err := json.Marshal(r.header)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
payload.WriteString(string(reqHeader) + "\n")
|
||||
|
||||
reqBody, err := json.Marshal(r.body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
body := string(reqBody)
|
||||
body = strings.ReplaceAll(body, "$__interval_ms", strconv.FormatInt(r.interval.Milliseconds(), 10))
|
||||
body = strings.ReplaceAll(body, "$__interval", r.interval.String())
|
||||
|
||||
payload.WriteString(body + "\n")
|
||||
}
|
||||
|
||||
elapsed := time.Since(start)
|
||||
e.logger.Debug("Completed encoding of batch requests to json", "duration", elapsed)
|
||||
|
||||
return payload.Bytes(), nil
|
||||
}
|
||||
Reference in New Issue
Block a user