diff --git a/search/opensearch_types.go b/search/opensearch_types.go index cdbe211102bf8b240f12598b0f84df2588bae1c6..6829316decc496b14520ddc2331dcf359a438dcb 100644 --- a/search/opensearch_types.go +++ b/search/opensearch_types.go @@ -34,8 +34,9 @@ type MappingKeyword struct { } type SearchRequestBody struct { - Size int64 `json:"size,omitempty"` - Query Query `json:"query"` + Size int64 `json:"size,omitempty"` + Query Query `json:"query"` + Sort []map[string]string `json:"sort,omitempty" doc:"List of name:<asc|desc> e.g. \"@timestamp\":\"desc\""` } type Query struct { diff --git a/search/search_test.go b/search/search_test.go index 8a03042b26c6f4cc9b6a3d4c94f5c9e8e019cd8b..342f68d4e8785da33670d701db9fb5aa3fbf1230 100644 --- a/search/search_test.go +++ b/search/search_test.go @@ -74,7 +74,7 @@ func test(t *testing.T, c search.Config) { }, } - docs, totalCount, err := ts.Search(query, 10) + docs, totalCount, err := ts.Search(query, nil, 10) if err != nil { t.Errorf("failed to search: %+v", err) } else { diff --git a/search/time_series.go b/search/time_series.go index 1b39cb9e67dda931437a34dd087ee410b4f03f28..b33a3546a60bd63f9c383f2e39683a3f3f4367fb 100644 --- a/search/time_series.go +++ b/search/time_series.go @@ -27,7 +27,7 @@ type TimeSeriesHeader struct { type TimeSeries interface { Write(StartTime time.Time, EndTime time.Time, data interface{}) error - Search(query Query, limit int64) (docs interface{}, totalCount int, err error) + Search(query Query, sort []map[string]string, limit int64) (docs interface{}, totalCount int, err error) } type timeSeries struct { @@ -360,7 +360,7 @@ type IndexSettings struct { //Search //Return: // docs will be a slice of the TimeSeries data type -func (ts *timeSeries) Search(query Query, limit int64) (docs interface{}, totalCount int, err error) { +func (ts *timeSeries) Search(query Query, sort []map[string]string, limit int64) (docs interface{}, totalCount int, err error) { if ts == nil { return nil, 0, errors.Errorf("time series == nil") } @@ -372,6 +372,7 @@ func (ts *timeSeries) Search(query Query, limit int64) (docs interface{}, totalC // example search request body for free text // { // "size": 5, + // "sort": [{"@timestamp":"desc"}] // "query": { // "multi_match": { // "query": "miller", @@ -382,6 +383,7 @@ func (ts *timeSeries) Search(query Query, limit int64) (docs interface{}, totalC body := SearchRequestBody{ Size: limit, Query: query, + Sort: sort, } jsonBody, _ := json.Marshal(body)