@@ -60,7 +60,7 @@ func (s *dbserver) Query(ctx context.Context, query *server.DataQuery) (result *
60
60
61
61
var dataResult * server.DataQueryResult
62
62
now := time .Now ()
63
- if dataResult , err = sqlQuery (ctx , [] string { query . Key }, query . Sql , db ); err == nil {
63
+ if dataResult , err = sqlQuery (ctx , query , db ); err == nil {
64
64
result .Items = dataResult .Items
65
65
result .Meta .Duration = time .Since (now ).String ()
66
66
}
@@ -161,16 +161,19 @@ func createCountRequests(ctx context.Context, db *elasticsearch.Client, index []
161
161
return searchRequests
162
162
}
163
163
164
- func createSearchRequests (ctx context.Context , db * elasticsearch.Client , index [] string , sql string ) []func (* esapi.SearchRequest ) {
164
+ func createSearchRequests (ctx context.Context , db * elasticsearch.Client , query * server. DataQuery ) []func (* esapi.SearchRequest ) {
165
165
searchRequests := []func (* esapi.SearchRequest ){
166
166
db .Search .WithContext (ctx ),
167
167
db .Search .WithSize (100 ),
168
168
db .Search .WithTrackTotalHits (true ),
169
- db .Search .WithIndex (index ... ),
169
+ db .Search .WithIndex (query .Key ),
170
+ db .Search .WithFrom (int (query .Offset )),
171
+ db .Search .WithSize (int (query .Limit )),
170
172
db .Search .WithPretty (),
171
173
}
174
+
172
175
// https://www.elastic.co/guide/en/kibana/current/lucene-query.html
173
- if ! isLuceneQuery (sql ) {
176
+ if ! isLuceneQuery (query . Sql ) {
174
177
searchRequests = append (searchRequests , db .Search .WithBody (strings .NewReader (fmt .Sprintf (`{
175
178
"query": {
176
179
"wildcard": {
@@ -179,9 +182,9 @@ func createSearchRequests(ctx context.Context, db *elasticsearch.Client, index [
179
182
}
180
183
}
181
184
}
182
- }` , sql ))))
185
+ }` , query . Sql ))))
183
186
} else {
184
- searchRequests = append (searchRequests , db .Search .WithQuery (sql ))
187
+ searchRequests = append (searchRequests , db .Search .WithQuery (query . Sql ))
185
188
}
186
189
return searchRequests
187
190
}
@@ -192,15 +195,15 @@ func isLuceneQuery(query string) bool {
192
195
return matched
193
196
}
194
197
195
- func sqlQuery (ctx context.Context , index [] string , sql string , db * elasticsearch.Client ) (result * server.DataQueryResult , err error ) {
198
+ func sqlQuery (ctx context.Context , query * server. DataQuery , db * elasticsearch.Client ) (result * server.DataQueryResult , err error ) {
196
199
result = & server.DataQueryResult {
197
200
Data : []* server.Pair {},
198
201
Items : make ([]* server.Pairs , 0 ),
199
202
Meta : & server.DataMeta {},
200
203
}
201
204
202
- fmt .Printf ("query from index [%v], sql [%s]\n " , index , sql )
203
- searchRequests := createSearchRequests (ctx , db , index , sql )
205
+ fmt .Printf ("query from index [%v], sql [%s]\n " , query . Key , query . Sql )
206
+ searchRequests := createSearchRequests (ctx , db , query )
204
207
205
208
var res * esapi.Response
206
209
if res , err = db .Search (searchRequests ... ); err != nil {
0 commit comments