Commit 13fa3a83 by Marcus Efraimsson Committed by GitHub

Merge pull request #12734 from grafana/12731_fix_index_pattern

elasticsearch: fix index patterns
parents 7699451d ab8fa0de
...@@ -248,14 +248,29 @@ var datePatternReplacements = map[string]string{ ...@@ -248,14 +248,29 @@ var datePatternReplacements = map[string]string{
func formatDate(t time.Time, pattern string) string { func formatDate(t time.Time, pattern string) string {
var datePattern string var datePattern string
base := ""
ltr := false
if strings.HasPrefix(pattern, "[") {
parts := strings.Split(strings.TrimLeft(pattern, "["), "]") parts := strings.Split(strings.TrimLeft(pattern, "["), "]")
base := parts[0] base = parts[0]
if len(parts) == 2 { if len(parts) == 2 {
datePattern = parts[1] datePattern = parts[1]
} else { } else {
datePattern = base datePattern = base
base = "" base = ""
} }
ltr = true
} else if strings.HasSuffix(pattern, "]") {
parts := strings.Split(strings.TrimRight(pattern, "]"), "[")
datePattern = parts[0]
if len(parts) == 2 {
base = parts[1]
} else {
base = ""
}
ltr = false
}
formatted := t.Format(patternToLayout(datePattern)) formatted := t.Format(patternToLayout(datePattern))
...@@ -293,7 +308,11 @@ func formatDate(t time.Time, pattern string) string { ...@@ -293,7 +308,11 @@ func formatDate(t time.Time, pattern string) string {
formatted = strings.Replace(formatted, "<stdHourNoZero>", fmt.Sprintf("%d", t.Hour()), -1) formatted = strings.Replace(formatted, "<stdHourNoZero>", fmt.Sprintf("%d", t.Hour()), -1)
} }
if ltr {
return base + formatted return base + formatted
}
return formatted + base
} }
func patternToLayout(pattern string) string { func patternToLayout(pattern string) string {
......
...@@ -28,29 +28,54 @@ func TestIndexPattern(t *testing.T) { ...@@ -28,29 +28,54 @@ func TestIndexPattern(t *testing.T) {
to := fmt.Sprintf("%d", time.Date(2018, 5, 15, 17, 55, 0, 0, time.UTC).UnixNano()/int64(time.Millisecond)) to := fmt.Sprintf("%d", time.Date(2018, 5, 15, 17, 55, 0, 0, time.UTC).UnixNano()/int64(time.Millisecond))
indexPatternScenario(intervalHourly, "[data-]YYYY.MM.DD.HH", tsdb.NewTimeRange(from, to), func(indices []string) { indexPatternScenario(intervalHourly, "[data-]YYYY.MM.DD.HH", tsdb.NewTimeRange(from, to), func(indices []string) {
//So(indices, ShouldHaveLength, 1) So(indices, ShouldHaveLength, 1)
So(indices[0], ShouldEqual, "data-2018.05.15.17") So(indices[0], ShouldEqual, "data-2018.05.15.17")
}) })
indexPatternScenario(intervalHourly, "YYYY.MM.DD.HH[-data]", tsdb.NewTimeRange(from, to), func(indices []string) {
So(indices, ShouldHaveLength, 1)
So(indices[0], ShouldEqual, "2018.05.15.17-data")
})
indexPatternScenario(intervalDaily, "[data-]YYYY.MM.DD", tsdb.NewTimeRange(from, to), func(indices []string) { indexPatternScenario(intervalDaily, "[data-]YYYY.MM.DD", tsdb.NewTimeRange(from, to), func(indices []string) {
So(indices, ShouldHaveLength, 1) So(indices, ShouldHaveLength, 1)
So(indices[0], ShouldEqual, "data-2018.05.15") So(indices[0], ShouldEqual, "data-2018.05.15")
}) })
indexPatternScenario(intervalDaily, "YYYY.MM.DD[-data]", tsdb.NewTimeRange(from, to), func(indices []string) {
So(indices, ShouldHaveLength, 1)
So(indices[0], ShouldEqual, "2018.05.15-data")
})
indexPatternScenario(intervalWeekly, "[data-]GGGG.WW", tsdb.NewTimeRange(from, to), func(indices []string) { indexPatternScenario(intervalWeekly, "[data-]GGGG.WW", tsdb.NewTimeRange(from, to), func(indices []string) {
So(indices, ShouldHaveLength, 1) So(indices, ShouldHaveLength, 1)
So(indices[0], ShouldEqual, "data-2018.20") So(indices[0], ShouldEqual, "data-2018.20")
}) })
indexPatternScenario(intervalWeekly, "GGGG.WW[-data]", tsdb.NewTimeRange(from, to), func(indices []string) {
So(indices, ShouldHaveLength, 1)
So(indices[0], ShouldEqual, "2018.20-data")
})
indexPatternScenario(intervalMonthly, "[data-]YYYY.MM", tsdb.NewTimeRange(from, to), func(indices []string) { indexPatternScenario(intervalMonthly, "[data-]YYYY.MM", tsdb.NewTimeRange(from, to), func(indices []string) {
So(indices, ShouldHaveLength, 1) So(indices, ShouldHaveLength, 1)
So(indices[0], ShouldEqual, "data-2018.05") So(indices[0], ShouldEqual, "data-2018.05")
}) })
indexPatternScenario(intervalMonthly, "YYYY.MM[-data]", tsdb.NewTimeRange(from, to), func(indices []string) {
So(indices, ShouldHaveLength, 1)
So(indices[0], ShouldEqual, "2018.05-data")
})
indexPatternScenario(intervalYearly, "[data-]YYYY", tsdb.NewTimeRange(from, to), func(indices []string) { indexPatternScenario(intervalYearly, "[data-]YYYY", tsdb.NewTimeRange(from, to), func(indices []string) {
So(indices, ShouldHaveLength, 1) So(indices, ShouldHaveLength, 1)
So(indices[0], ShouldEqual, "data-2018") So(indices[0], ShouldEqual, "data-2018")
}) })
indexPatternScenario(intervalYearly, "YYYY[-data]", tsdb.NewTimeRange(from, to), func(indices []string) {
So(indices, ShouldHaveLength, 1)
So(indices[0], ShouldEqual, "2018-data")
})
}) })
Convey("Hourly interval", t, func() { Convey("Hourly interval", t, func() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment