Skip to content

Commit bce01d3

Browse files
authored
Merge pull request #1 from andytruong/query-range
range query: Follow latest DSL.
2 parents 9005e28 + 4e28ea6 commit bce01d3

7 files changed

+47
-55
lines changed

search_aggs_bucket_filter_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func TestFilterAggregation(t *testing.T) {
2121
t.Fatalf("marshaling to JSON failed: %v", err)
2222
}
2323
got := string(data)
24-
expected := `{"filter":{"range":{"stock":{"from":0,"include_lower":false,"include_upper":true,"to":null}}}}`
24+
expected := `{"filter":{"range":{"stock":{"gt":0}}}}`
2525
if got != expected {
2626
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
2727
}
@@ -41,7 +41,7 @@ func TestFilterAggregationWithSubAggregation(t *testing.T) {
4141
t.Fatalf("marshaling to JSON failed: %v", err)
4242
}
4343
got := string(data)
44-
expected := `{"aggregations":{"avg_price":{"avg":{"field":"price"}}},"filter":{"range":{"stock":{"from":0,"include_lower":false,"include_upper":true,"to":null}}}}`
44+
expected := `{"aggregations":{"avg_price":{"avg":{"field":"price"}}},"filter":{"range":{"stock":{"gt":0}}}}`
4545
if got != expected {
4646
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
4747
}
@@ -59,7 +59,7 @@ func TestFilterAggregationWithMeta(t *testing.T) {
5959
t.Fatalf("marshaling to JSON failed: %v", err)
6060
}
6161
got := string(data)
62-
expected := `{"filter":{"range":{"stock":{"from":0,"include_lower":false,"include_upper":true,"to":null}}},"meta":{"name":"Oliver"}}`
62+
expected := `{"filter":{"range":{"stock":{"gt":0}}},"meta":{"name":"Oliver"}}`
6363
if got != expected {
6464
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
6565
}

search_aggs_bucket_filters_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func TestFiltersAggregationFilters(t *testing.T) {
2222
t.Fatalf("marshaling to JSON failed: %v", err)
2323
}
2424
got := string(data)
25-
expected := `{"filters":{"filters":[{"range":{"stock":{"from":0,"include_lower":false,"include_upper":true,"to":null}}},{"term":{"symbol":"GOOG"}}]}}`
25+
expected := `{"filters":{"filters":[{"range":{"stock":{"gt":0}}},{"term":{"symbol":"GOOG"}}]}}`
2626
if got != expected {
2727
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
2828
}
@@ -43,7 +43,7 @@ func TestFiltersAggregationFilterWithName(t *testing.T) {
4343
t.Fatalf("marshaling to JSON failed: %v", err)
4444
}
4545
got := string(data)
46-
expected := `{"filters":{"filters":{"f1":{"range":{"stock":{"from":0,"include_lower":false,"include_upper":true,"to":null}}},"f2":{"term":{"symbol":"GOOG"}}}}}`
46+
expected := `{"filters":{"filters":{"f1":{"range":{"stock":{"gt":0}}},"f2":{"term":{"symbol":"GOOG"}}}}}`
4747
if got != expected {
4848
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
4949
}
@@ -94,7 +94,7 @@ func TestFiltersAggregationWithSubAggregation(t *testing.T) {
9494
t.Fatalf("marshaling to JSON failed: %v", err)
9595
}
9696
got := string(data)
97-
expected := `{"aggregations":{"avg_price":{"avg":{"field":"price"}}},"filters":{"filters":[{"range":{"stock":{"from":0,"include_lower":false,"include_upper":true,"to":null}}},{"term":{"symbol":"GOOG"}}]}}`
97+
expected := `{"aggregations":{"avg_price":{"avg":{"field":"price"}}},"filters":{"filters":[{"range":{"stock":{"gt":0}}},{"term":{"symbol":"GOOG"}}]}}`
9898
if got != expected {
9999
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
100100
}
@@ -113,7 +113,7 @@ func TestFiltersAggregationWithMetaData(t *testing.T) {
113113
t.Fatalf("marshaling to JSON failed: %v", err)
114114
}
115115
got := string(data)
116-
expected := `{"filters":{"filters":[{"range":{"stock":{"from":0,"include_lower":false,"include_upper":true,"to":null}}},{"term":{"symbol":"GOOG"}}]},"meta":{"name":"Oliver"}}`
116+
expected := `{"filters":{"filters":[{"range":{"stock":{"gt":0}}},{"term":{"symbol":"GOOG"}}]},"meta":{"name":"Oliver"}}`
117117
if got != expected {
118118
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
119119
}

search_queries_bool_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func TestBoolQuery(t *testing.T) {
2626
t.Fatalf("marshaling to JSON failed: %v", err)
2727
}
2828
got := string(data)
29-
expected := `{"bool":{"_name":"Test","boost":10,"filter":{"term":{"account":"1"}},"must":{"term":{"tag":"wow"}},"must_not":{"range":{"age":{"from":10,"include_lower":true,"include_upper":true,"to":20}}},"should":[{"term":{"tag":"sometag"}},{"term":{"tag":"sometagtag"}}]}}`
29+
expected := `{"bool":{"_name":"Test","boost":10,"filter":{"term":{"account":"1"}},"must":{"term":{"tag":"wow"}},"must_not":{"range":{"age":{"gte":10,"lte":20}}},"should":[{"term":{"tag":"sometag"}},{"term":{"tag":"sometagtag"}}]}}`
3030
if got != expected {
3131
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
3232
}

search_queries_boosting_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func TestBoostingQuery(t *testing.T) {
2323
t.Fatalf("marshaling to JSON failed: %v", err)
2424
}
2525
got := string(data)
26-
expected := `{"boosting":{"negative":{"range":{"age":{"from":10,"include_lower":true,"include_upper":true,"to":20}}},"negative_boost":0.2,"positive":{"term":{"tag":"wow"}}}}`
26+
expected := `{"boosting":{"negative":{"range":{"age":{"gte":10,"lte":20}}},"negative_boost":0.2,"positive":{"term":{"tag":"wow"}}}}`
2727
if got != expected {
2828
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
2929
}

search_queries_nested_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func TestNestedQuery(t *testing.T) {
2323
t.Fatalf("marshaling to JSON failed: %v", err)
2424
}
2525
got := string(data)
26-
expected := `{"nested":{"_name":"qname","path":"obj1","query":{"bool":{"must":[{"term":{"obj1.name":"blue"}},{"range":{"obj1.count":{"from":5,"include_lower":false,"include_upper":true,"to":null}}}]}}}}`
26+
expected := `{"nested":{"_name":"qname","path":"obj1","query":{"bool":{"must":[{"term":{"obj1.name":"blue"}},{"range":{"obj1.count":{"gt":5}}}]}}}}`
2727
if got != expected {
2828
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
2929
}
@@ -45,7 +45,7 @@ func TestNestedQueryWithInnerHit(t *testing.T) {
4545
t.Fatalf("marshaling to JSON failed: %v", err)
4646
}
4747
got := string(data)
48-
expected := `{"nested":{"_name":"qname","inner_hits":{"name":"comments","query":{"term":{"user":"olivere"}}},"path":"obj1","query":{"bool":{"must":[{"term":{"obj1.name":"blue"}},{"range":{"obj1.count":{"from":5,"include_lower":false,"include_upper":true,"to":null}}}]}}}}`
48+
expected := `{"nested":{"_name":"qname","inner_hits":{"name":"comments","query":{"term":{"user":"olivere"}}},"path":"obj1","query":{"bool":{"must":[{"term":{"obj1.name":"blue"}},{"range":{"obj1.count":{"gt":5}}}]}}}}`
4949
if got != expected {
5050
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
5151
}

search_queries_range.go

Lines changed: 33 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -9,80 +9,60 @@ package elastic
99
// For details, see
1010
// https://www.elastic.co/guide/en/elasticsearch/reference/7.0/query-dsl-range-query.html
1111
type RangeQuery struct {
12-
name string
13-
from interface{}
14-
to interface{}
15-
timeZone string
16-
includeLower bool
17-
includeUpper bool
18-
boost *float64
19-
queryName string
20-
format string
21-
relation string
12+
name string
13+
gt interface{}
14+
gte interface{}
15+
lt interface{}
16+
lte interface{}
17+
timeZone string
18+
boost *float64
19+
queryName string
20+
format string
21+
relation string
2222
}
2323

2424
// NewRangeQuery creates and initializes a new RangeQuery.
2525
func NewRangeQuery(name string) *RangeQuery {
26-
return &RangeQuery{name: name, includeLower: true, includeUpper: true}
26+
return &RangeQuery{name: name}
2727
}
2828

2929
// From indicates the from part of the RangeQuery.
3030
// Use nil to indicate an unbounded from part.
3131
func (q *RangeQuery) From(from interface{}) *RangeQuery {
32-
q.from = from
33-
return q
32+
return q.Gte(from)
3433
}
3534

3635
// Gt indicates a greater-than value for the from part.
3736
// Use nil to indicate an unbounded from part.
3837
func (q *RangeQuery) Gt(from interface{}) *RangeQuery {
39-
q.from = from
40-
q.includeLower = false
38+
q.gt = from
4139
return q
4240
}
4341

4442
// Gte indicates a greater-than-or-equal value for the from part.
4543
// Use nil to indicate an unbounded from part.
4644
func (q *RangeQuery) Gte(from interface{}) *RangeQuery {
47-
q.from = from
48-
q.includeLower = true
45+
q.gte = from
4946
return q
5047
}
5148

5249
// To indicates the to part of the RangeQuery.
5350
// Use nil to indicate an unbounded to part.
5451
func (q *RangeQuery) To(to interface{}) *RangeQuery {
55-
q.to = to
56-
return q
52+
return q.Lte(to)
5753
}
5854

5955
// Lt indicates a less-than value for the to part.
6056
// Use nil to indicate an unbounded to part.
6157
func (q *RangeQuery) Lt(to interface{}) *RangeQuery {
62-
q.to = to
63-
q.includeUpper = false
58+
q.lt = to
6459
return q
6560
}
6661

6762
// Lte indicates a less-than-or-equal value for the to part.
6863
// Use nil to indicate an unbounded to part.
6964
func (q *RangeQuery) Lte(to interface{}) *RangeQuery {
70-
q.to = to
71-
q.includeUpper = true
72-
return q
73-
}
74-
75-
// IncludeLower indicates whether the lower bound should be included or not.
76-
// Defaults to true.
77-
func (q *RangeQuery) IncludeLower(includeLower bool) *RangeQuery {
78-
q.includeLower = includeLower
79-
return q
80-
}
81-
82-
// IncludeUpper indicates whether the upper bound should be included or not.
83-
// Defaults to true.
84-
func (q *RangeQuery) IncludeUpper(includeUpper bool) *RangeQuery {
85-
q.includeUpper = includeUpper
65+
q.lte = to
8666
return q
8767
}
8868

@@ -130,8 +110,22 @@ func (q *RangeQuery) Source() (interface{}, error) {
130110
params := make(map[string]interface{})
131111
rangeQ[q.name] = params
132112

133-
params["from"] = q.from
134-
params["to"] = q.to
113+
if nil != q.gt {
114+
params["gt"] = q.gt
115+
}
116+
117+
if nil != q.gte {
118+
params["gte"] = q.gte
119+
}
120+
121+
if nil != q.lt {
122+
params["lt"] = q.lt
123+
}
124+
125+
if nil != q.lte {
126+
params["lte"] = q.lte
127+
}
128+
135129
if q.timeZone != "" {
136130
params["time_zone"] = q.timeZone
137131
}
@@ -144,8 +138,6 @@ func (q *RangeQuery) Source() (interface{}, error) {
144138
if q.boost != nil {
145139
params["boost"] = *q.boost
146140
}
147-
params["include_lower"] = q.includeLower
148-
params["include_upper"] = q.includeUpper
149141

150142
if q.queryName != "" {
151143
rangeQ["_name"] = q.queryName

search_queries_range_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func TestRangeQuery(t *testing.T) {
2121
t.Fatalf("marshaling to JSON failed: %v", err)
2222
}
2323
got := string(data)
24-
expected := `{"range":{"_name":"my_query","postDate":{"boost":3,"from":"2010-03-01","include_lower":true,"include_upper":true,"relation":"within","to":"2010-04-01"}}}`
24+
expected := `{"range":{"_name":"my_query","postDate":{"boost":3,"gte":"2010-03-01","lte":"2010-04-01","relation":"within"}}}`
2525
if got != expected {
2626
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
2727
}
@@ -41,7 +41,7 @@ func TestRangeQueryWithTimeZone(t *testing.T) {
4141
t.Fatalf("marshaling to JSON failed: %v", err)
4242
}
4343
got := string(data)
44-
expected := `{"range":{"born":{"from":"2012-01-01","include_lower":true,"include_upper":true,"time_zone":"+1:00","to":"now"}}}`
44+
expected := `{"range":{"born":{"gte":"2012-01-01","lte":"now","time_zone":"+1:00"}}}`
4545
if got != expected {
4646
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
4747
}
@@ -61,7 +61,7 @@ func TestRangeQueryWithFormat(t *testing.T) {
6161
t.Fatalf("marshaling to JSON failed: %v", err)
6262
}
6363
got := string(data)
64-
expected := `{"range":{"born":{"format":"yyyy/MM/dd","from":"2012/01/01","include_lower":true,"include_upper":true,"to":"now"}}}`
64+
expected := `{"range":{"born":{"format":"yyyy/MM/dd","gte":"2012/01/01","lte":"now"}}}`
6565
if got != expected {
6666
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
6767
}

0 commit comments

Comments
 (0)