Skip to content

Commit 917831c

Browse files
authored
feat: add paging support (#2)
* feat: add paging support * add screenshots in the readme file --------- Co-authored-by: rick <[email protected]>
1 parent 231a0b7 commit 917831c

File tree

5 files changed

+27
-11
lines changed

5 files changed

+27
-11
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@ This project is a storage plugin for the [atest](https://github.com/linuxsuren/a
66

77
- Seamless integration with the `api-testing` framework.
88
- Web UI for interacting with Elasticsearch.
9-
- Lucence query
9+
- Lucene query or wildcard search
10+
11+
## Screenshots
12+
13+
![image](https://github.com/user-attachments/assets/f92e58e3-b4f6-4f51-bc02-e7fd348cbea5)

e2e/compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ services:
2929
environment:
3030
- discovery.type=single-node
3131
- ELASTIC_PASSWORD=root
32+
- ES_JAVA_OPTS=-Xms512m -Xmx512m
3233
healthcheck:
3334
test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9200"]
3435
interval: 3s

go.mod

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ toolchain go1.23.8
66

77
require (
88
github.com/apache/iotdb-client-go v1.3.3
9-
github.com/linuxsuren/api-testing v0.0.20-0.20250331081733-9d3e7ad6d47b
9+
github.com/linuxsuren/api-testing v0.0.20-0.20250411152222-db22459df50b
1010
github.com/spf13/cobra v1.9.1
1111
google.golang.org/protobuf v1.36.6
1212
)
@@ -106,3 +106,5 @@ require (
106106
go.opentelemetry.io/otel/metric v1.28.0 // indirect
107107
go.opentelemetry.io/otel/trace v1.28.0 // indirect
108108
)
109+
110+
//replace github.com/linuxsuren/api-testing => ../api-testing

go.sum

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@ github.com/linuxsuren/api-testing v0.0.19 h1:lDpXdJzqXZhxycZbGRVmKy7tMZqwk+1zUzg
128128
github.com/linuxsuren/api-testing v0.0.19/go.mod h1:igcyUJb5Q463tMpdEJxgURLLPR2pTcV7HoRyuvyP/2Y=
129129
github.com/linuxsuren/api-testing v0.0.20-0.20250331081733-9d3e7ad6d47b h1:4auUdm3mIzqXu/l0kA7/OpccLTENxgEq32W3gjBJ1Po=
130130
github.com/linuxsuren/api-testing v0.0.20-0.20250331081733-9d3e7ad6d47b/go.mod h1:igcyUJb5Q463tMpdEJxgURLLPR2pTcV7HoRyuvyP/2Y=
131+
github.com/linuxsuren/api-testing v0.0.20-0.20250411141829-3cd89d157c3b h1:QABWKn/4Agg1xdlFW6Lmn1tI79U9xQNZ/NcUzp3LdyE=
132+
github.com/linuxsuren/api-testing v0.0.20-0.20250411141829-3cd89d157c3b/go.mod h1:igcyUJb5Q463tMpdEJxgURLLPR2pTcV7HoRyuvyP/2Y=
133+
github.com/linuxsuren/api-testing v0.0.20-0.20250411143208-6fccc908933b h1:hgk4bdSTGWt/nBFUsR5Yj/GscWG1r1IKNUsITC8YAfo=
134+
github.com/linuxsuren/api-testing v0.0.20-0.20250411143208-6fccc908933b/go.mod h1:igcyUJb5Q463tMpdEJxgURLLPR2pTcV7HoRyuvyP/2Y=
135+
github.com/linuxsuren/api-testing v0.0.20-0.20250411152222-db22459df50b h1:3EJ0d2S/pha+m34hLSWK/DPkdyZOdsmFE+ocEpNVwVQ=
136+
github.com/linuxsuren/api-testing v0.0.20-0.20250411152222-db22459df50b/go.mod h1:igcyUJb5Q463tMpdEJxgURLLPR2pTcV7HoRyuvyP/2Y=
131137
github.com/linuxsuren/go-fake-runtime v0.0.4 h1:y+tvBuw6MKTCav8Bo5HWwaXhBx1Z//VAvqI3gpOWqvw=
132138
github.com/linuxsuren/go-fake-runtime v0.0.4/go.mod h1:zmh6J78hSnWZo68faMA2eKOdaEp8eFbERHi3ZB9xHCQ=
133139
github.com/linuxsuren/go-service v0.0.0-20231225060426-efabcd3a5161 h1:dSL/ah6zaRGqH3FW0ogtMjP6xCFXX5NsgWJTaNIofI4=

pkg/data_query.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func (s *dbserver) Query(ctx context.Context, query *server.DataQuery) (result *
6060

6161
var dataResult *server.DataQueryResult
6262
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 {
6464
result.Items = dataResult.Items
6565
result.Meta.Duration = time.Since(now).String()
6666
}
@@ -161,16 +161,19 @@ func createCountRequests(ctx context.Context, db *elasticsearch.Client, index []
161161
return searchRequests
162162
}
163163

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) {
165165
searchRequests := []func(*esapi.SearchRequest){
166166
db.Search.WithContext(ctx),
167167
db.Search.WithSize(100),
168168
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)),
170172
db.Search.WithPretty(),
171173
}
174+
172175
// https://www.elastic.co/guide/en/kibana/current/lucene-query.html
173-
if !isLuceneQuery(sql) {
176+
if !isLuceneQuery(query.Sql) {
174177
searchRequests = append(searchRequests, db.Search.WithBody(strings.NewReader(fmt.Sprintf(`{
175178
"query": {
176179
"wildcard": {
@@ -179,9 +182,9 @@ func createSearchRequests(ctx context.Context, db *elasticsearch.Client, index [
179182
}
180183
}
181184
}
182-
}`, sql))))
185+
}`, query.Sql))))
183186
} else {
184-
searchRequests = append(searchRequests, db.Search.WithQuery(sql))
187+
searchRequests = append(searchRequests, db.Search.WithQuery(query.Sql))
185188
}
186189
return searchRequests
187190
}
@@ -192,15 +195,15 @@ func isLuceneQuery(query string) bool {
192195
return matched
193196
}
194197

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) {
196199
result = &server.DataQueryResult{
197200
Data: []*server.Pair{},
198201
Items: make([]*server.Pairs, 0),
199202
Meta: &server.DataMeta{},
200203
}
201204

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)
204207

205208
var res *esapi.Response
206209
if res, err = db.Search(searchRequests...); err != nil {

0 commit comments

Comments
 (0)