diff --git a/services/search/pkg/query/bleve/compiler.go b/services/search/pkg/query/bleve/compiler.go index 25042c52756..f436813aed5 100644 --- a/services/search/pkg/query/bleve/compiler.go +++ b/services/search/pkg/query/bleve/compiler.go @@ -124,35 +124,10 @@ func walk(offset int, nodes []ast.Node) (bleveQuery.Query, int, error) { next = q } case *ast.DateTimeNode: - q := &bleveQuery.DateRangeQuery{ - Start: bleveQuery.BleveQueryTime{}, - End: bleveQuery.BleveQueryTime{}, - InclusiveStart: nil, - InclusiveEnd: nil, - FieldVal: getField(n.Key), - } - - if n.Operator == nil { + q := dateTimeQuery(n) + if q == nil { continue } - - switch n.Operator.Value { - case ">": - q.Start.Time = n.Value - q.InclusiveStart = &[]bool{false}[0] - case ">=": - q.Start.Time = n.Value - q.InclusiveStart = &[]bool{true}[0] - case "<": - q.End.Time = n.Value - q.InclusiveEnd = &[]bool{false}[0] - case "<=": - q.End.Time = n.Value - q.InclusiveEnd = &[]bool{true}[0] - default: - continue - } - if prev == nil { prev = q } else { @@ -380,6 +355,37 @@ func mimeType(k, v string) (bleveQuery.Query, bool) { } } +func dateTimeQuery(n *ast.DateTimeNode) bleveQuery.Query { + if n.Operator == nil { + return nil + } + + q := &bleveQuery.DateRangeQuery{ + Start: bleveQuery.BleveQueryTime{}, + End: bleveQuery.BleveQueryTime{}, + FieldVal: getField(n.Key), + } + + switch n.Operator.Value { + case ">": + q.Start.Time = n.Value + q.InclusiveStart = &[]bool{false}[0] + case ">=": + q.Start.Time = n.Value + q.InclusiveStart = &[]bool{true}[0] + case "<": + q.End.Time = n.Value + q.InclusiveEnd = &[]bool{false}[0] + case "<=": + q.End.Time = n.Value + q.InclusiveEnd = &[]bool{true}[0] + default: + return nil + } + + return q +} + func numericQuery(n *ast.NumericNode) bleveQuery.Query { if n.Operator == nil { return nil