From a1ef2d42d320f075c75e8cef52a879114441c103 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期三, 30 十月 2019 15:54:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 controllers/es.go |  179 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 141 insertions(+), 38 deletions(-)

diff --git a/controllers/es.go b/controllers/es.go
index fe2afbc..d67a80b 100644
--- a/controllers/es.go
+++ b/controllers/es.go
@@ -1,12 +1,16 @@
 package controllers
 
 import (
-	"basic.com/dbapi.git"
+	"basic.com/valib/logger.git"
+	"bytes"
+	"encoding/json"
 	"fmt"
 	"github.com/gin-gonic/gin"
 	"math/rand"
+	"os/exec"
 	"strconv"
 	"strings"
+	"webserver/cache"
 	"webserver/extend/code"
 	"webserver/extend/config"
 	"webserver/extend/esutil"
@@ -33,40 +37,28 @@
 		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
 		return
 	}
-	databases := searchBody.DataBases
-	from := 0
-	to := 0
-
-	data := make(map[string]interface{})
-	searchBody.Page = 1
-	searchBody.Size = 15000
-
-	if len(databases) == 1 && databases[0] == "esData" {
-		searchBody.IsAggs = false
-	} else {
-		data = service.QueryDbPersonsForCompare(*searchBody)
+	if searchBody.CompareNum !="" {
+		//浜屾鎼滅储锛屼笉闇�瑕佸啀姣斿浜�
+		co := service.GetCompResultByNum(searchBody.CompareNum)
+		if co != nil {
+			//浜屾鎼滅储鍜屾帓搴�
+			twiceM := GetCompareDataTwice(co,searchBody)
+			util.ResponseFormat(c,code.Success,twiceM)
+			return
+		} else {
+			m :=make(map[string]interface{},0)
+			m["compareNum"] = searchBody.CompareNum
+			m["total"] = 0
+			m["totalList"] = []CompareResult{}
+			util.ResponseFormat(c,code.CompareResultGone,m)
+			return
+		}
 	}
-	sources := data["datalist"].([]interface{})
-
-	if len(sources) > 0 {
-		//杩涜姣斿
-	} else {
-		fmt.Println("鏌ヨ鏉′欢涓嬫棤鏁版嵁 source 鏁版嵁涓虹┖锛�" + string(len(sources)))
-	}
-	dataLen := len(sources)
-	if from > dataLen-1 {
-		from = 0
-		to = 0
-	}
-	if to > dataLen {
-		to = dataLen
-	}
-
-	dmap := make(map[string]interface{}, 2)
-	dmap["datalist"] = sources
-	dmap["total"] = dataLen
-	util.ResponseFormat(c, code.Success, dmap)
-
+	m :=make(map[string]interface{},0)
+	m["compareNum"] = searchBody.CompareNum
+	m["total"] = 0
+	m["totalList"] = []CompareResult{}
+	util.ResponseFormat(c,code.CompareResultGone,m)
 }
 
 func searchEsData(searchBody models.EsSearch) map[string]interface{} {
@@ -115,12 +107,15 @@
 	esSize := strconv.Itoa(webSize)
 	//浣跨敤es搴曞眰鏈哄埗澶勭悊鍒嗛〉
 	//璇锋眰澶�
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	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"
 
-	var setApi dbapi.SysSetApi
-	_, sysconf := setApi.GetServerInfo()
-	analyServerFilterStr := "{\"term\":{\"analyServerId\":\"" + sysconf.ServerId + "\"}},"
+	analyServerFilterStr := "{\"term\":{\"analyServerId\":\"" + localConf.ServerId + "\"}},"
 
 	//璇锋眰浣�
 	prama := "{\"from\":\"" + esFrom + "\",\"size\":\"" + esSize + "\"," +
@@ -161,3 +156,111 @@
 	}
 	return dataSource
 }
+
+func GetEsClusterInfo(ip string) ([]map[string]interface{}, error){
+	serverIp := ""
+	if ip != "" {
+		serverIp = ip
+	} else {
+		localConf, err2 := cache.GetServerInfo()
+		if err2 !=nil || localConf.ServerIp == "" {
+			logger.Debug("localConfig is wrong!!!")
+			return nil,err2
+		}
+		serverIp = localConf.ServerIp
+	}
+	str := "curl "+serverIp+":9200/_cat/nodes?v"
+	cmd := exec.Command("sh","-c",str)
+	var out bytes.Buffer
+	cmd.Stdout = &out
+	err := cmd.Run()
+	if err != nil {
+		return nil,err
+	}
+	infos := strings.Split(string(out.String()),"\n")
+	totalNodes := len(infos)-1
+	var nodeInfos []map[string]interface{}
+	for i:=1;i<totalNodes ;i++  {
+		nodeInfo :=  make(map[string]interface{})
+		context := strings.Fields(infos[i])
+		nodeIp := context[0]
+		Type := context[8]
+		var nodeType string
+		if Type == "*"{
+			nodeType = "涓昏妭鐐�"
+		}
+		if Type == "-"{
+			nodeType = "浠庤妭鐐�"
+		}
+		nodeInfo["ip"] = nodeIp
+		nodeInfo["nodeType"] = nodeType
+		url := "http://"+nodeIp+":9200"
+		buf := esutil.HttpGet(url)
+		var info interface{}
+		json.Unmarshal(buf,&info)
+		tmpInfo := info.(map[string]interface{})
+		tmpName := tmpInfo["name"].(string)
+		versinInfo := tmpInfo["version"].(map[string]interface{})
+		buildDate := versinInfo["build_date"].(string)
+		nodeInfo["name"] = tmpName
+		nodeInfo["buildDate"] = buildDate
+		nodeInfos = append(nodeInfos, nodeInfo)
+	}
+
+	return nodeInfos,nil
+}
+
+func AddEsCluster(hosts []string) (string){
+	msg := "鍔犲叆澶辫触"
+	for i,val := range hosts{
+		val =val+":9300"
+		hosts[i] = val
+	}
+	verificationHosts := "[\""+strings.Replace(strings.Trim(fmt.Sprint(hosts), "[]"), " ", "\",\"", -1)+"\"]"
+	for i,val := range hosts{
+		val ="\\\""+val+"\\\""
+		hosts[i] = val
+	}
+	oldUnicastHost := "\\[\\\"0.0.0.0:9300\\\"\\]"
+	newUnicastHost := strings.Replace(strings.Trim(fmt.Sprint(hosts), ""), " ", ",", -1)
+	str := "sed -ie 's/discovery.zen.ping.unicast.hosts: "+oldUnicastHost+"/discovery.zen.ping.unicast.hosts: "+newUnicastHost+"/g' /opt/elasticsearch/config/elasticsearch.yml"
+	fmt.Println(str)
+	cmd := exec.Command("sh","-c",str)
+	var out bytes.Buffer
+	cmd.Stdout = &out
+	err := cmd.Run()
+	if err != nil {
+
+	}
+	res := getUnicastHosts()
+	fmt.Println("res:          ",res)
+	res1 := "discovery.zen.ping.unicast.hosts: "+verificationHosts+""
+	fmt.Println("res1:         ",res1)
+	if res == res1{
+		msg = "鍔犲叆鎴愬姛"
+	}
+	str2 := "echo \"node.master: true\" >> /opt/elasticsearch/config/elasticsearch.yml"
+	cmd2 := exec.Command("sh","-c",str2)
+	var out2 bytes.Buffer
+	cmd2.Stdout = &out2
+	err2 := cmd2.Run()
+	if err2 != nil {
+		msg = "鍔犲叆澶辫触"
+	}
+	return msg
+
+}
+
+func getUnicastHosts() (string){
+	str := "cat /opt/elasticsearch/config/elasticsearch.yml | grep discovery.zen.ping.unicast.hosts:"
+	cmd := exec.Command("sh","-c",str)
+	var out bytes.Buffer
+	cmd.Stdout = &out
+	err := cmd.Run()
+	if err != nil {
+
+	}
+	infos := strings.Split(string(out.String()),"\n")[0]
+	return infos
+
+}

--
Gitblit v1.8.0