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)