diff --git a/pkg/simple/client/elasticsearch/interface.go b/pkg/simple/client/elasticsearch/interface.go index 7f7c93ca9..291a8cc73 100644 --- a/pkg/simple/client/elasticsearch/interface.go +++ b/pkg/simple/client/elasticsearch/interface.go @@ -56,15 +56,17 @@ func detectVersionMajor(cfg *Config) error { } if res.IsError() { // Print the response status and error information. - return fmt.Errorf("[%s] %s: %s", - res.Status(), - b["error"].(map[string]interface{})["type"], - b["error"].(map[string]interface{})["reason"], - ) + e, _ := b["error"].(map[string]interface{}) + return fmt.Errorf("[%s] %s: %s", res.Status(), e["type"], e["reason"]) } // get the major version - version := fmt.Sprintf("%v", b["version"].(map[string]interface{})["number"]) - cfg.VersionMajor = strings.Split(version, ".")[0] + version, _ := b["version"].(map[string]interface{}) + number, _ := version["number"].(string) + if number == "" { + return fmt.Errorf("failed to detect elastic version number") + } + + cfg.VersionMajor = strings.Split(number, ".")[0] return nil } diff --git a/pkg/simple/client/elasticsearch/versions/v5/elasticsearch.go b/pkg/simple/client/elasticsearch/versions/v5/elasticsearch.go index 9dc395cb2..a66f60c3e 100644 --- a/pkg/simple/client/elasticsearch/versions/v5/elasticsearch.go +++ b/pkg/simple/client/elasticsearch/versions/v5/elasticsearch.go @@ -41,11 +41,8 @@ func (e Elastic) Search(body []byte) ([]byte, error) { return nil, err } else { // Print the response status and error information. - return nil, fmt.Errorf("[%s] %s: %s", - response.Status(), - e["error"].(map[string]interface{})["type"], - e["error"].(map[string]interface{})["reason"], - ) + e, _ := e["error"].(map[string]interface{}) + return nil, fmt.Errorf("[%s] %s: %s", response.Status(), e["type"], e["reason"]) } } @@ -53,5 +50,6 @@ func (e Elastic) Search(body []byte) ([]byte, error) { } func (e Elastic) GetTotalHitCount(v interface{}) int64 { - return int64(v.(float64)) + f, _ := v.(float64) + return int64(f) } diff --git a/pkg/simple/client/elasticsearch/versions/v6/elasticsearch.go b/pkg/simple/client/elasticsearch/versions/v6/elasticsearch.go index 2919f3788..2c116ed2a 100644 --- a/pkg/simple/client/elasticsearch/versions/v6/elasticsearch.go +++ b/pkg/simple/client/elasticsearch/versions/v6/elasticsearch.go @@ -41,11 +41,8 @@ func (e Elastic) Search(body []byte) ([]byte, error) { return nil, err } else { // Print the response status and error information. - return nil, fmt.Errorf("[%s] %s: %s", - response.Status(), - e["error"].(map[string]interface{})["type"], - e["error"].(map[string]interface{})["reason"], - ) + e, _ := e["error"].(map[string]interface{}) + return nil, fmt.Errorf("[%s] %s: %s", response.Status(), e["type"], e["reason"]) } } @@ -53,5 +50,6 @@ func (e Elastic) Search(body []byte) ([]byte, error) { } func (e Elastic) GetTotalHitCount(v interface{}) int64 { - return int64(v.(float64)) + f, _ := v.(float64) + return int64(f) } diff --git a/pkg/simple/client/elasticsearch/versions/v7/elasticsearch.go b/pkg/simple/client/elasticsearch/versions/v7/elasticsearch.go index f91a2094c..27634b4ed 100644 --- a/pkg/simple/client/elasticsearch/versions/v7/elasticsearch.go +++ b/pkg/simple/client/elasticsearch/versions/v7/elasticsearch.go @@ -42,11 +42,8 @@ func (e Elastic) Search(body []byte) ([]byte, error) { return nil, err } else { // Print the response status and error information. - return nil, fmt.Errorf("[%s] %s: %s", - response.Status(), - e["error"].(map[string]interface{})["type"], - e["error"].(map[string]interface{})["reason"], - ) + e, _ := e["error"].(map[string]interface{}) + return nil, fmt.Errorf("[%s] %s: %s", response.Status(), e["type"], e["reason"]) } } @@ -54,5 +51,7 @@ func (e Elastic) Search(body []byte) ([]byte, error) { } func (e Elastic) GetTotalHitCount(v interface{}) int64 { - return int64(v.(map[string]interface{})["value"].(float64)) + m, _ := v.(map[string]interface{}) + f, _ := m["value"].(float64) + return int64(f) }