-
Notifications
You must be signed in to change notification settings - Fork 25.6k
Add support for a 'format' option in fields retrieval. #57855
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Pinging @elastic/es-search (:Search/Mapping) |
|
|
||
| DateFormatter dateTimeFormatter = fieldType().dateTimeFormatter(); | ||
| if (format != null) { | ||
| dateTimeFormatter = DateFormatter.forPattern(format).withLocale(dateTimeFormatter.locale()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd prefer to avoid this one day, but for now it is cool. And, I think it'd be a bit overboard to try and avoid it now. If I did want to avoid it maybe something like:
public Function<Object, String> sourceParser(String format);
I don't know. Just thinking out loud. Not needed now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree, instead of a function we could even introduce an object like SourceValueParser. This could also help clean up some of the fragility around the dual lookupValues and parseSourceValue methods. It did feel like overkill to do this refactor now, though.
|
Thanks @nik9000 for the review. Any thoughts on this comment?
|
I'm super ok doing it just for dates now. |
The new `format` option allows for passing a custom date format:
```
POST logs-*/_search
{
"fields": [
"file.*",
{
"field": "event.timestamp",
"format": "epoch_millis"
},
...
]
}
```
Other API notes:
* We use the same syntax as `docvalue_fields` for consistency. Under the hood,
both `fields` and `docvalue_fields` use the same `FieldAndFormat` object to
share serialization logic.
* Only `date` and `date_range` fields support formatting currently.
The new `format` option allows for passing a custom date format:
```
POST logs-*/_search
{
"fields": [
"file.*",
{
"field": "event.timestamp",
"format": "epoch_millis"
},
...
]
}
```
Other API notes:
* We use the same syntax as `docvalue_fields` for consistency. Under the hood,
both `fields` and `docvalue_fields` use the same `FieldAndFormat` object to
share serialization logic.
* Only `date` and `date_range` fields support formatting currently.
The new `format` option allows for passing a custom date format:
```
POST logs-*/_search
{
"fields": [
"file.*",
{
"field": "event.timestamp",
"format": "epoch_millis"
},
...
]
}
```
Other API notes:
* We use the same syntax as `docvalue_fields` for consistency. Under the hood,
both `fields` and `docvalue_fields` use the same `FieldAndFormat` object to
share serialization logic.
* Only `date` and `date_range` fields support formatting currently.
The new `format` option allows for passing a custom date format:
```
POST logs-*/_search
{
"fields": [
"file.*",
{
"field": "event.timestamp",
"format": "epoch_millis"
},
...
]
}
```
Other API notes:
* We use the same syntax as `docvalue_fields` for consistency. Under the hood,
both `fields` and `docvalue_fields` use the same `FieldAndFormat` object to
share serialization logic.
* Only `date` and `date_range` fields support formatting currently.
The new `format` option allows for passing a custom date format:
```
POST logs-*/_search
{
"fields": [
"file.*",
{
"field": "event.timestamp",
"format": "epoch_millis"
},
...
]
}
```
Other API notes:
* We use the same syntax as `docvalue_fields` for consistency. Under the hood,
both `fields` and `docvalue_fields` use the same `FieldAndFormat` object to
share serialization logic.
* Only `date` and `date_range` fields support formatting currently.
The new `format` option allows for passing a custom date format:
```
POST logs-*/_search
{
"fields": [
"file.*",
{
"field": "event.timestamp",
"format": "epoch_millis"
},
...
]
}
```
Other API notes:
* We use the same syntax as `docvalue_fields` for consistency. Under the hood,
both `fields` and `docvalue_fields` use the same `FieldAndFormat` object to
share serialization logic.
* Only `date` and `date_range` fields support formatting currently.
The new `format` option allows for passing a custom date format:
```
POST logs-*/_search
{
"fields": [
"file.*",
{
"field": "event.timestamp",
"format": "epoch_millis"
},
...
]
}
```
Other API notes:
* We use the same syntax as `docvalue_fields` for consistency. Under the hood,
both `fields` and `docvalue_fields` use the same `FieldAndFormat` object to
share serialization logic.
* Only `date` and `date_range` fields support formatting currently.
The new `format` option allows for passing a custom date format:
```
POST logs-*/_search
{
"fields": [
"file.*",
{
"field": "event.timestamp",
"format": "epoch_millis"
},
...
]
}
```
Other API notes:
* We use the same syntax as `docvalue_fields` for consistency. Under the hood,
both `fields` and `docvalue_fields` use the same `FieldAndFormat` object to
share serialization logic.
* Only `date` and `date_range` fields support formatting currently.
The new `format` option allows for passing a custom date format:
```
POST logs-*/_search
{
"fields": [
"file.*",
{
"field": "event.timestamp",
"format": "epoch_millis"
},
...
]
}
```
Other API notes:
* We use the same syntax as `docvalue_fields` for consistency. Under the hood,
both `fields` and `docvalue_fields` use the same `FieldAndFormat` object to
share serialization logic.
* Only `date` and `date_range` fields support formatting currently.
The new `format` option allows for passing a custom date format:
```
POST logs-*/_search
{
"fields": [
"file.*",
{
"field": "event.timestamp",
"format": "epoch_millis"
},
...
]
}
```
Other API notes:
* We use the same syntax as `docvalue_fields` for consistency. Under the hood,
both `fields` and `docvalue_fields` use the same `FieldAndFormat` object to
share serialization logic.
* Only `date` and `date_range` fields support formatting currently.
The new `format` option allows for passing a custom date format:
```
POST logs-*/_search
{
"fields": [
"file.*",
{
"field": "event.timestamp",
"format": "epoch_millis"
},
...
]
}
```
Other API notes:
* We use the same syntax as `docvalue_fields` for consistency. Under the hood,
both `fields` and `docvalue_fields` use the same `FieldAndFormat` object to
share serialization logic.
* Only `date` and `date_range` fields support formatting currently.
The new
formatoption allows for passing a custom date format:Other API notes:
docvalue_fieldsfor consistency. Under the hood, bothfieldsanddocvalue_fieldsuse the sameFieldAndFormatobject to share serialization logic.dateanddate_rangefields support formatting currently. I really wasn't sure how helpful it was to support a decimal format on numeric fields (as we do withdocvalues_fields), and didn't want to add pre-emptive functionality. I'm very happy for feedback on this point.Implementation notes:
DocValueFormatto perform the formatting, but this didn't seem like the right way to go.DocValueFormatis specifically designed for translating between on-disk docvalues and human-readable values, and it felt like an abuse to start using it for formatting source values.