From 7ce84b3d1e45d35c7c9f73561893039a05c16995 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期五, 20 十二月 2019 19:38:18 +0800
Subject: [PATCH] fix unTargz
---
controllers/es.go | 224 +++++++++++++++++++++++++++++++++----------------------
1 files changed, 134 insertions(+), 90 deletions(-)
diff --git a/controllers/es.go b/controllers/es.go
index 412d64f..baed42b 100644
--- a/controllers/es.go
+++ b/controllers/es.go
@@ -8,11 +8,9 @@
"github.com/gin-gonic/gin"
"math/rand"
"os/exec"
- "strconv"
"strings"
"webserver/cache"
"webserver/extend/code"
- "webserver/extend/config"
"webserver/extend/esutil"
"webserver/extend/util"
"webserver/models"
@@ -27,6 +25,7 @@
Ip string `json:"ip"`
}
+// @Security ApiKeyAuth
// @Summary 姣斿鏁版嵁鏌ヨ
// @Description 姣斿鏁版嵁鏌ヨ
// @Accept json
@@ -67,80 +66,6 @@
util.ResponseFormat(c, code.CompareResultGone, m)
}
-func searchEsData(searchBody models.EsSearch) map[string]interface{} {
- //璇锋眰绱㈠紩
- index := config.EsInfo.EsIndex.VideoPersons.IndexName // wp鍙煡浜鸿劯鏁版嵁
- queryStr := ""
- queryBody := searchBody.InputValue
- //妫�绱㈡
- if queryBody != "" {
- queryStr = "\"must\":[{\"multi_match\":{\"query\":\"" + queryBody + "\",\"fields\":[\"alarmRules.alarmLevel^1.5\",\"ageDescription^1.5\",\"taskName^1.5\",\"baseInfo.tableName^1.5\",\"sex^2.0\",\"race^2.0\",\"content^1.0\",\"baseInfo.idCard^1.8\",\"cameraAddr^1.0\"]," +
- "\"type\":\"cross_fields\",\"operator\":\"OR\",\"slop\":0,\"prefix_length\":0,\"max_expansions\":50,\"zero_terms_query\":\"NONE\",\"auto_generate_synonyms_phrase_query\":true,\"fuzzy_transpositions\":true,\"boost\":1}}],"
- }
- gteDate := searchBody.SearchTime[0]
- lteDate := searchBody.SearchTime[1]
- //鍒ゆ柇浠诲姟ID
- taskIdStr := ""
- taskId := searchBody.Tasks
- if taskId != nil && len(taskId) > 0 {
- esTaskId := strings.Replace(strings.Trim(fmt.Sprint(taskId), "[]"), " ", "\",\"", -1)
- taskIdStr = "{\"terms\":{\"taskId\":[\"" + esTaskId + "\"]}},"
- }
- //鍒ゆ柇鎽勫儚鏈篒D
- cameraIdStr := ""
- cameraId := searchBody.TreeNodes
- if cameraId != nil && len(cameraId) > 0 {
- esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1)
- cameraIdStr = "{\"terms\":{\"cameraId\":[\"" + esCameraId + "\"]}},"
- }
- //鍒ゆ柇搴撹〃ID
- tableId := searchBody.Tabs
- esTableId := ""
- esTableIdStr := ""
- if tableId != nil && len(tableId) > 0 {
- esTableId = strings.Replace(strings.Trim(fmt.Sprint(tableId), "[]"), " ", "\",\"", -1)
- esTableIdStr = "{\"terms\":{\"baseInfo.tableId\":[\"" + esTableId + "\"]}},"
- }
- isCollectionStr := ""
- isCollection := searchBody.Collection
- if isCollection != "" {
- isCollectionStr = "{\"term\":{\"collection\":\"" + isCollection + "\"}},"
- }
- webPage := searchBody.Page
- webSize := searchBody.Size
- from := (webPage - 1) * webSize
- esFrom := strconv.Itoa(from)
- esSize := strconv.Itoa(webSize)
- //浣跨敤es搴曞眰鏈哄埗澶勭悊鍒嗛〉
- //璇锋眰澶�
- localConf, err2 := cache.GetServerInfo()
- if err2 != nil || localConf.AlarmIp == "" || localConf.ServerId == "" {
- logger.Debug("localConfig is wrong!!!")
- return nil
- }
- url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
- "/" + index + "/_search?search_type=dfs_query_then_fetch"
-
- analyServerFilterStr := "{\"term\":{\"analyServerId\":\"" + localConf.ServerId + "\"}},"
-
- //璇锋眰浣�
- prama := "{\"from\":\"" + esFrom + "\",\"size\":\"" + esSize + "\"," +
- // prama := "{\"size\":\"0\"," +
- "\"query\":{\"bool\":{" + queryStr +
- "\"filter\":[" +
- cameraIdStr +
- taskIdStr +
- isCollectionStr +
- esTableIdStr +
- analyServerFilterStr +
- "{\"range\":{\"picDate\":{\"from\":\"" + gteDate + "\",\"to\":\"" + lteDate + "\",\"include_lower\":true,\"include_upper\":true,\"boost\":1}}}]}}," +
- "\"sort\":[{\"_score\":{\"order\":\"desc\"}},{\"picDate\":{\"order\":\"desc\"}}]," +
- "\"_source\":[\"baseInfo\",\"alarmRules\",\"sex\",\"analyServerName\",\"sdkName\",\"ageDescription\",\"content\",\"id\",\"cameraAddr\",\"picMaxUrl\",\"picDate\",\"race\",\"videoUrl\",\"picSmUrl\",\"taskName\",\"personIsHub\",\"isAlarm\",\"analyServerIp\",\"cameraId\"]}"
- fmt.Println(prama)
- //鏁版嵁瑙f瀽
- tokenRes := esutil.GetEsDataReq(url, prama, true)
- return tokenRes
-}
func sourceCompare(sources []interface{}, isEsSource bool, campareByte []byte, threshold float32) []interface{} {
var filterName = "feature"
@@ -163,7 +88,16 @@
return dataSource
}
-//鏌ヨES闆嗙兢淇℃伅-鍏ュ彛
+// @Security ApiKeyAuth
+// @Summary 鏌ヨES闆嗙兢淇℃伅-鍏ュ彛
+// @Description 鏌ヨES闆嗙兢淇℃伅-鍏ュ彛
+// @Accept json
+// @Produce json
+// @Tags es
+// @Param obj body controllers.EsClusterInfo true "鏌ヨ闆嗙兢鍙傛暟"
+// @Success 200 {string} json "{"code":200, msg:"", success:true}"
+// @Failure 500 {string} json "{"code":500, msg:"", success:false}"
+// @Router /data/api-v/es/getEsClusterInfo [POST]
func (em *EsManagementController) GetEsClusterInfo(c *gin.Context) {
var body EsClusterInfo
c.BindJSON(&body)
@@ -185,7 +119,7 @@
util.ResponseFormat(c, code.QueryClusterInfoErr, err)
return
}
- util.ResponseFormat(c, code.QueryClusterInfoErr, nodeInfos)
+ util.ResponseFormat(c, code.Success, nodeInfos)
}
//鏌ヨES闆嗙兢淇℃伅-涓氬姟閫昏緫
@@ -205,12 +139,12 @@
nodeInfo := make(map[string]interface{})
context := strings.Fields(infos[i])
nodeIp := context[0]
- Type := context[8]
+ Type := context[7]
var nodeType string
- if Type == "*" {
+ if Type == "mdi" {
nodeType = "涓昏妭鐐�"
}
- if Type == "-" {
+ if Type == "di" {
nodeType = "浠庤妭鐐�"
}
nodeInfo["ip"] = nodeIp
@@ -230,7 +164,15 @@
return nodeInfos, err
}
-//鍒涘缓鑺傜偣
+// @Security ApiKeyAuth
+// @Summary 鍒涘缓鑺傜偣
+// @Description 鍒涘缓鑺傜偣
+// @Accept json
+// @Produce json
+// @Tags es
+// @Success 200 {string} json "{"code":200, msg:"", success:true}"
+// @Failure 500 {string} json "{"code":500, msg:"", success:false}"
+// @Router /data/api-v/es/createNode [POST]
func (em *EsManagementController) CreateNode(c *gin.Context) {
msg := "鍒涘缓鑺傜偣澶辫触锛岃鑱旂郴绠$悊鍛�"
str := "sh /opt/script/create_first_node.sh"
@@ -241,10 +183,8 @@
if err != nil {
}
- infos := strings.Split(string(out.String()), "\n")
- len := len(infos)
- res := infos[len-1]
- if res == "鏈嶅姟鍚姩鎴愬姛" {
+ infos := strings.Split(string(out.String()), "\n")[0]
+ if infos == "鏈嶅姟鍚姩鎴愬姛" {
msg = "鍒涘缓鑺傜偣鎴愬姛"
util.ResponseFormat(c, code.Success, msg)
return
@@ -252,7 +192,16 @@
util.ResponseFormat(c, code.CreateFirstNodeErr, msg)
}
-//鍔犲叆闆嗙兢
+// @Security ApiKeyAuth
+// @Summary 鍔犲叆闆嗙兢
+// @Description 鍔犲叆闆嗙兢
+// @Accept json
+// @Produce json
+// @Tags es
+// @Param obj body controllers.AddCluster true "鍔犲叆闆嗙兢鍙傛暟"
+// @Success 200 {string} json "{"code":200, msg:"", success:true}"
+// @Failure 500 {string} json "{"code":500, msg:"", success:false}"
+// @Router /data/api-v/es/addCluster [POST]
func (em *EsManagementController) AddCluster(c *gin.Context) {
var ac AddCluster
err := c.BindJSON(&ac)
@@ -260,7 +209,7 @@
util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
return
}
- str := "sh /opt/script/create_node.sh " + ac.Option + ""
+ str := "sh /opt/script/add_cluster.sh " + ac.Option + ""
if ac.Option == "1" {
info, err := updateUnicastHosts(ac.Ip)
if err != nil || info == false {
@@ -301,8 +250,8 @@
cmd := exec.Command("sh", "-c", str)
var out bytes.Buffer
cmd.Stdout = &out
- err1 := cmd.Run()
- if err1 != nil {
+ err := cmd.Run()
+ if err != nil {
return "杩愯澶辫触"
}
return out.String()
@@ -358,6 +307,101 @@
return msg, err
}
+//淇敼elasticsearch.yml鏄犲皠鏂囦欢
+// @Security ApiKeyAuth
+// @Summary 淇敼es闆嗙兢Ip
+// @Description 淇敼es闆嗙兢Ip
+// @Accept json
+// @Produce json
+// @Tags es
+// @Param obj body controllers.Hosts true "淇敼es闆嗙兢Ip鍙傛暟"
+// @Success 200 {string} json "{"code":200, msg:"", success:true}"
+// @Failure 500 {string} json "{"code":500, msg:"", success:false}"
+// @Router /data/api-v/es/updateEsHosts [POST]
+func (em *EsManagementController) UpdateEsHosts(c *gin.Context) {
+ flag := "淇敼鎴愬姛"
+ var hosts Hosts
+ c.BindJSON(&hosts)
+ nodeInfos, err := getEsClusterInfors(hosts.OldIp)
+ var nodeType string
+ if err != nil {
+ logger.Fatal(err)
+ util.ResponseFormat(c, code.QueryClusterInfoErr, err)
+ }
+ newMasterHosts := make([]string, 0)
+ allHosts := make([]string, 0)
+ for _, val := range nodeInfos {
+ ip := val["ip"].(string)
+ tmpType := val["nodeType"].(string)
+ if ip == hosts.OldIp {
+ nodeType = tmpType
+ }
+ if tmpType == "涓昏妭鐐�" {
+ newMasterHosts = append(newMasterHosts, ip)
+ }
+ if ip != hosts.OldIp {
+ allHosts = append(allHosts, ip)
+ }
+ }
+
+ if nodeType == "涓昏妭鐐�" {
+ str1 := "sed -ie 's/network.host: " + hosts.OldIp + "/network.host: " + hosts.NewIp + "/g' /opt/elasticsearch/config/elasticsearch.yml"
+ msg1 := runScript(str1)
+ if msg1 == "杩愯澶辫触" {
+ flag = "淇敼閰嶇疆鏂囦欢澶辫触"
+ }
+ for i, host := range newMasterHosts {
+ if host == hosts.OldIp {
+ newMasterHosts[i] = hosts.NewIp
+ }
+ }
+ for i, val := range newMasterHosts {
+ val = "\\\"" + val + ":9300\\\""
+ newMasterHosts[i] = val
+ }
+ newUnicastHost := strings.Replace(strings.Trim(fmt.Sprint(newMasterHosts), ""), " ", ",", -1)
+
+ tmpStr := "cat /opt/elasticsearch/config/elasticsearch.yml | grep discovery.zen.ping.unicast.hosts:"
+ rs := runScript(tmpStr)
+ ts := strings.Split(rs, "\n")[0]
+ ots := strings.Split(ts, " ")[1]
+ outs := strings.Replace(ots, "\"", "\\\"", -1)
+ oldUnicastHost := "\\" + strings.Replace(outs, "]", "\\]", -1)
+ str2 := "sed -ie 's/discovery.zen.ping.unicast.hosts: " + oldUnicastHost + "/discovery.zen.ping.unicast.hosts: " + newUnicastHost + "/g' /opt/elasticsearch/config/elasticsearch.yml"
+ msg2 := runScript(str2)
+ if msg2 == "杩愯澶辫触" {
+ flag = "淇敼閰嶇疆鏂囦欢澶辫触"
+ }
+ for _, host := range allHosts {
+ str3 := "sshpass -p \"123\" ssh basic@" + host + " \"cd /opt/elasticsearch/config ; " + str2 + " ; cat elasticsearch.yml\""
+ msg := runScript(str3)
+ if msg == "杩愯澶辫触" {
+ flag = "淇敼閰嶇疆鏂囦欢澶辫触"
+ }
+ }
+ } else {
+ str1 := "sed -ie 's/network.host: " + hosts.OldIp + "/network.host: " + hosts.NewIp + "/g' /opt/elasticsearch/config/elasticsearch.yml"
+ msg1 := runScript(str1)
+ if msg1 == "杩愯澶辫触" {
+ flag = "淇敼閰嶇疆鏂囦欢澶辫触"
+ }
+ }
+ if flag == "淇敼閰嶇疆鏂囦欢澶辫触" {
+ util.ResponseFormat(c, code.UpdateFail, flag)
+ }
+ util.ResponseFormat(c, code.Success, flag)
+
+}
+
+type Hosts struct {
+ NewIp string `json:newIp`
+ OldIp string `json:oldIp`
+}
+
+func forwardCommand() {
+
+}
+
//func AddEsCluster(hosts []string) (string){
// msg := "鍔犲叆澶辫触"
// for i,val := range hosts{
--
Gitblit v1.8.0