Skip to content

Commit d3dac62

Browse files
authored
Fix: geo_points can be imported from ECS (#476)
1 parent ea23354 commit d3dac62

File tree

13 files changed

+132
-2
lines changed

13 files changed

+132
-2
lines changed

internal/fields/validate.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,9 @@ func compareKeys(key string, def FieldDefinition, searchedKey string) bool {
265265
k = strings.ReplaceAll(k, "*", "[^.]+")
266266

267267
// Workaround for potential geo_point, as "lon" and "lat" fields are not present in field definitions.
268-
if def.Type == "geo_point" {
269-
k += "\\.(lon|lat)"
268+
// Unfortunately we have to assume that imported field could be a geo_point (nasty workaround).
269+
if def.Type == "geo_point" || def.External != "" {
270+
k += "(\\.lon|\\.lat|)"
270271
}
271272

272273
k = fmt.Sprintf("^%s$", k)

internal/fields/validate_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,3 +223,14 @@ func readSampleEvent(t *testing.T, path string) json.RawMessage {
223223
require.NoError(t, err)
224224
return c
225225
}
226+
227+
func TestValidate_geo_point(t *testing.T) {
228+
validator, err := CreateValidatorForDataStream("../../test/packages/fields_tests/data_stream/first")
229+
230+
require.NoError(t, err)
231+
require.NotNil(t, validator)
232+
233+
e := readSampleEvent(t, "../../test/packages/fields_tests/data_stream/first/sample_event.json")
234+
errs := validator.ValidateDocumentBody(e)
235+
require.Empty(t, errs)
236+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
dependencies:
2+
ecs:
3+
reference: [email protected]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Fields Tests
2+
3+
{{event "first"}}
4+
5+
{{fields "first"}}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# newer versions go on top
2+
- version: "0.0.1"
3+
changes:
4+
- description: Initial draft of the package
5+
type: enhancement
6+
link: https://github.com/elastic/integrations/pull/0 # FIXME Replace with the real PR link
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
paths:
2+
{{#each paths as |path i|}}
3+
- {{path}}
4+
{{/each}}
5+
exclude_files: [".gz$"]
6+
processors:
7+
- add_locale: ~
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
description: Pipeline for processing sample logs
3+
processors:
4+
- set:
5+
field: sample_field
6+
value: "1"
7+
on_failure:
8+
- set:
9+
field: error.message
10+
value: '{{ _ingest.on_failure_message }}'
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
- name: data_stream.type
2+
type: constant_keyword
3+
description: Data stream type.
4+
- name: data_stream.dataset
5+
type: constant_keyword
6+
description: Data stream dataset.
7+
- name: data_stream.namespace
8+
type: constant_keyword
9+
description: Data stream namespace.
10+
- name: '@timestamp'
11+
type: date
12+
description: Event timestamp.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
- name: destination.geo.location
2+
external: ecs
3+
- name: geo.location
4+
external: ecs
5+
- name: source.geo.location
6+
external: ecs
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
title: "First"
2+
type: logs
3+
streams:
4+
- input: logfile
5+
title: Sample logs
6+
description: Collect sample logs
7+
vars:
8+
- name: paths
9+
type: text
10+
title: Paths
11+
multi: true
12+
default:
13+
- /var/log/*.log

0 commit comments

Comments
 (0)