diff --git a/.travis.yml b/.travis.yml index 18e7b30..9fd3745 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,18 +4,25 @@ go: - 1.1 - 1.2 - 1.3 + - 1.4.2 - tip env: matrix: - - ES_VERSION=1.0.3 - - ES_VERSION=1.1.2 - - ES_VERSION=1.2.1 + - ES_VERSION=1.0.3 GROOVY_VER=2.0.0 + - ES_VERSION=1.1.2 GROOVY_VER=2.0.0 + - ES_VERSION=1.2.1 GROOVY_VER=2.2.0 + - ES_VERSION=1.3.4 + - ES_VERSION=1.4.4 + - ES_VERSION=1.5.2 + - ES_VERSION=1.6.0 before_script: - mkdir ${HOME}/elasticsearch - - wget http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-${ES_VERSION}.tar.gz + - wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-${ES_VERSION}.tar.gz - tar -xzf elasticsearch-${ES_VERSION}.tar.gz -C ${HOME}/elasticsearch + - "echo 'script.groovy.sandbox.enabled: true' >> ${HOME}/elasticsearch/elasticsearch-${ES_VERSION}/config/elasticsearch.yml" + - 'if [[ "${ES_VERSION}" < "1.3" ]]; then ${HOME}/elasticsearch/elasticsearch-${ES_VERSION}/bin/plugin --install elasticsearch/elasticsearch-lang-groovy/${GROOVY_VER}; fi' - ${HOME}/elasticsearch/elasticsearch-${ES_VERSION}/bin/elasticsearch >/dev/null & install: diff --git a/goes.go b/goes.go index d4c05ba..ccffa5c 100644 --- a/goes.go +++ b/goes.go @@ -41,7 +41,7 @@ func (c *Connection) WithClient(cl *http.Client) *Connection { } // CreateIndex creates a new index represented by a name and a mapping -func (c *Connection) CreateIndex(name string, mapping map[string]interface{}) (*Response, error) { +func (c *Connection) CreateIndex(name string, mapping interface{}) (*Response, error) { r := Request{ Conn: c, Query: mapping, @@ -196,7 +196,7 @@ func (c *Connection) BulkSend(documents []Document) (*Response, error) { } // Search executes a search query against an index -func (c *Connection) Search(query map[string]interface{}, indexList []string, typeList []string, extraArgs url.Values) (*Response, error) { +func (c *Connection) Search(query interface{}, indexList []string, typeList []string, extraArgs url.Values) (*Response, error) { r := Request{ Conn: c, Query: query, @@ -211,7 +211,7 @@ func (c *Connection) Search(query map[string]interface{}, indexList []string, ty } // Count executes a count query against an index, use the Count field in the response for the result -func (c *Connection) Count(query map[string]interface{}, indexList []string, typeList []string, extraArgs url.Values) (*Response, error) { +func (c *Connection) Count(query interface{}, indexList []string, typeList []string, extraArgs url.Values) (*Response, error) { r := Request{ Conn: c, Query: query, @@ -228,7 +228,7 @@ func (c *Connection) Count(query map[string]interface{}, indexList []string, typ //Query runs a query against an index using the provided http method. //This method can be used to execute a delete by query, just pass in "DELETE" //for the HTTP method. -func (c *Connection) Query(query map[string]interface{}, indexList []string, typeList []string, httpMethod string, extraArgs url.Values) (*Response, error) { +func (c *Connection) Query(query interface{}, indexList []string, typeList []string, httpMethod string, extraArgs url.Values) (*Response, error) { r := Request{ Conn: c, Query: query, @@ -243,7 +243,7 @@ func (c *Connection) Query(query map[string]interface{}, indexList []string, typ } // Scan starts scroll over an index -func (c *Connection) Scan(query map[string]interface{}, indexList []string, typeList []string, timeout string, size int) (*Response, error) { +func (c *Connection) Scan(query interface{}, indexList []string, typeList []string, timeout string, size int) (*Response, error) { v := url.Values{} v.Add("search_type", "scan") v.Add("scroll", timeout) @@ -354,7 +354,7 @@ func (req *Request) Run() (*Response, error) { } if req.method == "POST" || req.method == "PUT" { - newReq.Header.Set("Content-Type", "application/x-www-form-urlencoded") + newReq.Header.Set("Content-Type", "application/json") } resp, err := req.Conn.Client.Do(newReq) @@ -459,7 +459,7 @@ func (b Bucket) Aggregation(name string) Aggregation { } // PutMapping registers a specific mapping for one or more types in one or more indexes -func (c *Connection) PutMapping(typeName string, mapping map[string]interface{}, indexes []string) (*Response, error) { +func (c *Connection) PutMapping(typeName string, mapping interface{}, indexes []string) (*Response, error) { r := Request{ Conn: c, @@ -498,7 +498,7 @@ func (c *Connection) IndicesExist(indexes []string) (bool, error) { return resp.Status == 200, err } -func (c *Connection) Update(d Document, query map[string]interface{}, extraArgs url.Values) (*Response, error) { +func (c *Connection) Update(d Document, query interface{}, extraArgs url.Values) (*Response, error) { r := Request{ Conn: c, Query: query, diff --git a/goes_test.go b/goes_test.go index 0ae5605..e3ca46d 100644 --- a/goes_test.go +++ b/goes_test.go @@ -788,6 +788,8 @@ func (s *GoesTestSuite) TestIndexStatus(c *C) { // gives ES some time to do its job time.Sleep(1 * time.Second) + _, err = conn.RefreshIndex(indexName) + c.Assert(err, IsNil) response, err := conn.IndexStatus([]string{"testindexstatus"}) c.Assert(err, IsNil) @@ -797,9 +799,11 @@ func (s *GoesTestSuite) TestIndexStatus(c *C) { primarySizeInBytes := response.Indices[indexName].Index["primary_size_in_bytes"].(float64) sizeInBytes := response.Indices[indexName].Index["size_in_bytes"].(float64) + refreshTotal := response.Indices[indexName].Refresh["total"].(float64) c.Assert(primarySizeInBytes > 0, Equals, true) c.Assert(sizeInBytes > 0, Equals, true) + c.Assert(refreshTotal > 0, Equals, true) expectedIndices := map[string]IndexStatus{ indexName: { @@ -825,7 +829,7 @@ func (s *GoesTestSuite) TestIndexStatus(c *C) { "total_size_in_bytes": float64(0), }, Refresh: map[string]interface{}{ - "total": float64(1), + "total": refreshTotal, "total_time_in_millis": float64(0), }, Flush: map[string]interface{}{ @@ -1155,6 +1159,7 @@ func (s *GoesTestSuite) TestUpdate(c *C) { // Now that we have an ordinary document indexed, try updating it query := map[string]interface{}{ "script": "ctx._source.counter += count", + "lang": "groovy", "params": map[string]interface{}{ "count": 5, }, @@ -1166,7 +1171,7 @@ func (s *GoesTestSuite) TestUpdate(c *C) { } response, err = conn.Update(d, query, extraArgs) - if err != nil && strings.Contains(err.(*SearchError).Msg, "dynamic scripting disabled") { + if err != nil && strings.Contains(err.(*SearchError).Msg, "dynamic scripting") { c.Skip("Scripting is disabled on server, skipping this test") return }