Add support for a 'format' option in fields retrieval.#57855
Add support for a 'format' option in fields retrieval.#57855jtibshirani merged 4 commits intoelastic:field-retrievalfrom
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.
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.
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.