Added IndexStatus()
This commit is contained in:
parent
d01836c651
commit
f7b8fcf842
13
goes.go
13
goes.go
@ -81,6 +81,19 @@ func (c *Connection) Stats(indexList []string, extraArgs url.Values) (Response,
|
||||
return r.Run()
|
||||
}
|
||||
|
||||
// IndexStatus fetches the status (_status) for the indices defined in
|
||||
// indexList. Use _all in indexList to get stats for all indices
|
||||
func (c *Connection) IndexStatus(indexList []string) (Response, error) {
|
||||
r := Request{
|
||||
Conn: c,
|
||||
IndexList: indexList,
|
||||
method: "GET",
|
||||
api: "_status",
|
||||
}
|
||||
|
||||
return r.Run()
|
||||
}
|
||||
|
||||
// Bulk adds multiple documents in bulk mode to the index for a given type
|
||||
func (c *Connection) BulkSend(index string, documents []Document) (Response, error) {
|
||||
// We do not generate a traditionnal JSON here (often a one liner)
|
||||
|
71
goes_test.go
71
goes_test.go
@ -552,3 +552,74 @@ func (s *GoesTestSuite) TestSearch(c *C) {
|
||||
|
||||
c.Assert(response.Hits, DeepEquals, expectedHits)
|
||||
}
|
||||
|
||||
func (s *GoesTestSuite) TestIndexStatus(c *C) {
|
||||
indexName := "testindexstatus"
|
||||
conn := NewConnection(ES_HOST, ES_PORT)
|
||||
conn.DeleteIndex(indexName)
|
||||
|
||||
mapping := map[string]interface{}{
|
||||
"settings": map[string]interface{}{
|
||||
"index.number_of_shards": 1,
|
||||
"index.number_of_replicas": 1,
|
||||
},
|
||||
}
|
||||
|
||||
_, err := conn.CreateIndex(indexName, mapping)
|
||||
c.Assert(err, IsNil)
|
||||
defer conn.DeleteIndex(indexName)
|
||||
|
||||
// gives ES some time to do its job
|
||||
time.Sleep(1 * time.Second)
|
||||
|
||||
response, err := conn.IndexStatus([]string{"_all"})
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
c.Assert(response.Ok, Equals, true)
|
||||
|
||||
expectedShards := Shard{Total: 2, Successful: 1, Failed: 0}
|
||||
c.Assert(response.Shards, Equals, expectedShards)
|
||||
|
||||
expectedIndices := map[string]IndexStatus{
|
||||
indexName: IndexStatus{
|
||||
Index: map[string]interface{}{
|
||||
"primary_size": "99b",
|
||||
"primary_size_in_bytes": float64(99),
|
||||
"size": "99b",
|
||||
"size_in_bytes": float64(99),
|
||||
},
|
||||
Translog: map[string]uint64{
|
||||
"operations": 0,
|
||||
},
|
||||
Docs: map[string]uint64{
|
||||
"num_docs": 0,
|
||||
"max_doc": 0,
|
||||
"deleted_docs": 0,
|
||||
},
|
||||
Merges: map[string]interface{}{
|
||||
"current": float64(0),
|
||||
"current_docs": float64(0),
|
||||
"current_size": "0b",
|
||||
"current_size_in_bytes": float64(0),
|
||||
"total": float64(0),
|
||||
"total_time": "0s",
|
||||
"total_time_in_millis": float64(0),
|
||||
"total_docs": float64(0),
|
||||
"total_size": "0b",
|
||||
"total_size_in_bytes": float64(0),
|
||||
},
|
||||
Refresh: map[string]interface{}{
|
||||
"total": float64(1),
|
||||
"total_time": "0s",
|
||||
"total_time_in_millis": float64(0),
|
||||
},
|
||||
Flush: map[string]interface{}{
|
||||
"total": float64(0),
|
||||
"total_time": "0s",
|
||||
"total_time_in_millis": float64(0),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
c.Assert(response.Indices, DeepEquals, expectedIndices)
|
||||
}
|
||||
|
19
structs.go
19
structs.go
@ -73,6 +73,9 @@ type Response struct {
|
||||
Exists bool
|
||||
Source map[string]interface{} `json:"_source"`
|
||||
Fields map[string]interface{} `json:"fields"`
|
||||
|
||||
// Used by the _status API
|
||||
Indices map[string]IndexStatus
|
||||
}
|
||||
|
||||
// Represents a document to send to elasticsearch
|
||||
@ -140,3 +143,19 @@ type SearchError struct {
|
||||
Msg string
|
||||
StatusCode uint64
|
||||
}
|
||||
|
||||
// Represent the status for a given index for the _status command
|
||||
type IndexStatus struct {
|
||||
// XXX : problem, int will be marshaled to a float64 which seems logical
|
||||
// XXX : is it better to use strings even for int values or to keep
|
||||
// XXX : interfaces and deal with float64 ?
|
||||
Index map[string]interface{}
|
||||
|
||||
Translog map[string]uint64
|
||||
Docs map[string]uint64
|
||||
Merges map[string]interface{}
|
||||
Refresh map[string]interface{}
|
||||
Flush map[string]interface{}
|
||||
|
||||
// TODO: add shards support later, we do not need it for the moment
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user