You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
1.9 KiB
111 lines
1.9 KiB
package ES7SqlUtil
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"dsDataex/Utils/ConfigUtil"
|
|
"encoding/json"
|
|
es7 "github.com/elastic/go-elasticsearch/v7"
|
|
"github.com/elastic/go-elasticsearch/v7/esapi"
|
|
"strings"
|
|
)
|
|
|
|
var ES7Client *es7.Client
|
|
var ServerVersion string
|
|
var CTX context.Context
|
|
|
|
func init() {
|
|
|
|
cfg := es7.Config{Addresses: ConfigUtil.ESAddress,}
|
|
|
|
ES7Client, _ = es7.NewClient(cfg)
|
|
|
|
CTX=context.Background()
|
|
|
|
if ConfigUtil.ESEnable == 1 {
|
|
res, _ := ES7Client.Info()
|
|
|
|
defer res.Body.Close()
|
|
|
|
var result map[string]interface{}
|
|
|
|
json.NewDecoder(res.Body).Decode(&result)
|
|
|
|
ServerVersion=(result["version"].(map[string]interface{}))["number"].(string)
|
|
}
|
|
}
|
|
|
|
func SqlQueryJson(sql string,param []string) map[string]interface{} {
|
|
query := map[string]interface{}{
|
|
"query": sql,
|
|
"params":param,
|
|
"fetch_size":10000,
|
|
}
|
|
jsonBody, _ := json.Marshal(query)
|
|
|
|
req := esapi.SQLQueryRequest{
|
|
Body: bytes.NewReader(jsonBody),
|
|
Format: "json",
|
|
}
|
|
|
|
res, _ := req.Do(CTX, ES7Client)
|
|
|
|
defer res.Body.Close()
|
|
|
|
var result map[string]interface{}
|
|
|
|
json.NewDecoder(res.Body).Decode(&result)
|
|
|
|
return result
|
|
}
|
|
|
|
func SqlQueryTxt(sql string,param []string) string {
|
|
query := map[string]interface{}{
|
|
"query": sql,
|
|
"params":param,
|
|
"fetch_size":10000,
|
|
}
|
|
jsonBody, _ := json.Marshal(query)
|
|
|
|
req := esapi.SQLQueryRequest{
|
|
Body: bytes.NewReader(jsonBody),
|
|
Format: "txt",
|
|
}
|
|
|
|
res, _ := req.Do(CTX, ES7Client)
|
|
|
|
defer res.Body.Close()
|
|
|
|
var result=res.String()
|
|
result=strings.Replace(result,"[200 OK]","",-1)
|
|
result=strings.Replace(result," ","",-1)
|
|
|
|
return result
|
|
}
|
|
|
|
func SqlQueryObj(sql string,param []string) ESSqlResult {
|
|
query := map[string]interface{}{
|
|
"query": sql,
|
|
"params":param,
|
|
"fetch_size":10000,
|
|
}
|
|
|
|
jsonBody, _ := json.Marshal(query)
|
|
|
|
req := esapi.SQLQueryRequest{
|
|
Body: bytes.NewReader(jsonBody),
|
|
Format: "json",
|
|
}
|
|
|
|
res, _ := req.Do(CTX, ES7Client)
|
|
|
|
defer res.Body.Close()
|
|
|
|
var obj ESSqlResult
|
|
|
|
json.NewDecoder(res.Body).Decode(&obj)
|
|
|
|
return obj
|
|
}
|
|
|