|
|
package EsUtil
|
|
|
|
|
|
import (
|
|
|
"dsTools/Utils/CommonUtil"
|
|
|
"dsTools/Utils/ConfigUtil"
|
|
|
"fmt"
|
|
|
"github.com/valyala/fasthttp"
|
|
|
"io/ioutil"
|
|
|
"net/http"
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
|
/**
|
|
|
功能:判断指定的索引是否存在
|
|
|
作者:黄海
|
|
|
时间:2020-03-20
|
|
|
*/
|
|
|
func IndexIsExists(indexName string) bool {
|
|
|
indexArray := GetAllIndex()
|
|
|
var found = false
|
|
|
for i := 0; i < len(indexArray); i++ {
|
|
|
if indexName == indexArray[i] {
|
|
|
found = true
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
return found
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:获取有哪些索引
|
|
|
作者:黄海
|
|
|
时间:2020-03-20
|
|
|
*/
|
|
|
func GetAllIndex() []string {
|
|
|
var result []string
|
|
|
url := ConfigUtil.EsHost + "/_cat/indices?v"
|
|
|
status, resp, err := fasthttp.Get(nil, url)
|
|
|
if err != nil {
|
|
|
fmt.Println("请求失败:", err.Error())
|
|
|
return nil
|
|
|
}
|
|
|
if status != fasthttp.StatusOK {
|
|
|
fmt.Println("请求没有成功:", status)
|
|
|
return nil
|
|
|
}
|
|
|
body := string(resp)
|
|
|
var lines = strings.Split(body, "\n")
|
|
|
for i := 1; i < len(lines); i++ {
|
|
|
line := lines[i]
|
|
|
line = CommonUtil.DeleteExtraSpace(line)
|
|
|
var carr = strings.Split(line, " ")
|
|
|
if len(carr) < 2 {
|
|
|
break
|
|
|
}
|
|
|
result = append(result, carr[2])
|
|
|
}
|
|
|
return result
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:获取指定index的mapping
|
|
|
作者:黄海
|
|
|
时间:2020-03-20
|
|
|
*/
|
|
|
func GetMapping(indexName string) (string, error) {
|
|
|
url := ConfigUtil.EsHost + "/" + indexName + "/_mapping"
|
|
|
status, resp, err := fasthttp.Get(nil, url)
|
|
|
if err != nil {
|
|
|
fmt.Println("请求失败:", err.Error())
|
|
|
return "", err
|
|
|
}
|
|
|
if status != fasthttp.StatusOK {
|
|
|
fmt.Println("请求没有成功:", status)
|
|
|
return "", err
|
|
|
}
|
|
|
body := string(resp)
|
|
|
return body, nil
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:删除指定的索引
|
|
|
作者:黄海
|
|
|
时间:2020-03-20
|
|
|
*/
|
|
|
func DeleteIndex(indexName string) {
|
|
|
url := ConfigUtil.EsHost + "/" + indexName + "?pretty"
|
|
|
req, _ := http.NewRequest("DELETE", url, nil)
|
|
|
res, _ := http.DefaultClient.Do(req)
|
|
|
defer res.Body.Close()
|
|
|
body, _ := ioutil.ReadAll(res.Body)
|
|
|
fmt.Println(string(body))
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:创建索引
|
|
|
作者:黄海
|
|
|
时间:2020-03-21
|
|
|
*/
|
|
|
func CreateIndex(indexName string, body string) {
|
|
|
url := ConfigUtil.EsHost + "/real_" + indexName
|
|
|
req, _ := http.NewRequest("PUT", url, strings.NewReader(body))
|
|
|
req.Header.Set("Content-Type", "application/json")
|
|
|
res, _ := http.DefaultClient.Do(req)
|
|
|
defer res.Body.Close()
|
|
|
_body, _ := ioutil.ReadAll(res.Body)
|
|
|
fmt.Println(string(_body))
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:追加mapping
|
|
|
作者:黄海
|
|
|
时间:2020-03-23
|
|
|
*/
|
|
|
func AddMapping(indexName string, createMappingStr string) {
|
|
|
url := ConfigUtil.EsHost + "/" + indexName + "/_mapping"
|
|
|
req, _ := http.NewRequest("POST", url, strings.NewReader(createMappingStr))
|
|
|
req.Header.Set("Content-Type", "application/json")
|
|
|
res, _ := http.DefaultClient.Do(req)
|
|
|
defer res.Body.Close()
|
|
|
_body, _ := ioutil.ReadAll(res.Body)
|
|
|
fmt.Println(string(_body))
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:设置指定index的最大响应数据上限
|
|
|
作者:黄海
|
|
|
时间:2020-03-023
|
|
|
*/
|
|
|
func SetMaxResult(indexName string) {
|
|
|
url := ConfigUtil.EsHost + "/" + indexName + "/_settings"
|
|
|
body := `{"index":{"max_result_window":2147483647}}`
|
|
|
req, _ := http.NewRequest("PUT", url, strings.NewReader(body))
|
|
|
req.Header.Set("Content-Type", "application/json")
|
|
|
res, _ := http.DefaultClient.Do(req)
|
|
|
defer res.Body.Close()
|
|
|
_body, _ := ioutil.ReadAll(res.Body)
|
|
|
fmt.Println(string(_body))
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:增加别名
|
|
|
作者:黄海
|
|
|
时间:2020-03-23
|
|
|
*/
|
|
|
func AddAliase(indexName string, alias string){
|
|
|
url := ConfigUtil.EsHost + "/_aliases"
|
|
|
body:=`
|
|
|
{
|
|
|
"actions" : [
|
|
|
{ "add" : { "index" : "`+indexName+`", "alias" : "`+alias+`" } }
|
|
|
]
|
|
|
}
|
|
|
`
|
|
|
req, _ := http.NewRequest("POST", url, strings.NewReader(body))
|
|
|
req.Header.Set("Content-Type", "application/json")
|
|
|
res, _ := http.DefaultClient.Do(req)
|
|
|
defer res.Body.Close()
|
|
|
_body, _ := ioutil.ReadAll(res.Body)
|
|
|
fmt.Println(string(_body))
|
|
|
}
|