Module elastic_types::date [] [src]

Implementation of the Elasticsearch date type.

Dates in Elasticsearch are exposed as a formatted string which can contain a date and/or a time component.

All dates used by elastic_types are expected to be given in UTC, and if no time is supplied, then 12:00am will be used instead. Where performance is paramount, the EpochMillis date format will parse and format dates the fastest. The difference is especially obvious on the stable channel, where date formats can't be parsed at compile time.

Examples

For defining your own date mapping, see mapping details.

Map with a default date:

struct MyType {
    pub field: Date<DefaultDateFormat>
}

Map with a custom date:

struct MyType {
    pub field: Date<EpochMillis, MyDateMapping>
}

Creating Formats

To make it easier to build your own date formats, use the date_fmt! macro. This will convert an Elasticsearch or chrono format string into a Vec<Item> for efficient parsing at runtime:

#[derive(Default, Clone)]
struct MyFormat;
date_fmt!(MyFormat, "yyyy-MM-ddTHH:mm:ss", "yyyy-MM-dd'T'HH:mm:ss");

You can also implement CustomDateFormat yourself and write your own arbitrary format/parse logic:

#[derive(Default, Clone)]
struct MyCustomFormat;
impl CustomDateFormat for MyCustomFormat {
    fn name() -> &'static str { "yyyy-MM-dd'T'HH:mm:ssZ" }

    fn format(date: &DateTime<UTC>) -> String {
        date.to_rfc3339()
    }

    fn parse(date: &str) -> Result<DateTime<UTC>, ParseError> {
        let date = try!(DateTime::parse_from_rfc3339(date).map_err(|e| ParseError::from(e)));

            Ok(DateTime::from_utc(date.naive_local(), UTC))
        }
    }

Links

Modules

mapping

Mapping for the Elasticsearch date type.

prelude

Includes all types for the date type.

Structs

BasicDateTime

Format for basic_date_time.

BasicDateTimeNoMillis

Format for basic_date_time_no_millis.

ChronoFormat

Format for default chrono::DateTime.

Date

An Elasticsearch date type with a required time component.

EpochMillis

Format for epoch_millis.

ParseError

Represents an error encountered during parsing.

Traits

CustomDateFormat

A format used for parsing and formatting dates.

DateFormat

A format used for parsing and formatting dates.

Datelike

The common set of methods for date component.

Timelike

The common set of methods for time component.

Type Definitions

ChronoDateTime

A re-export of the chrono::DateTime struct with UTC timezone.

DefaultDateFormat

The default date format (BasicDateTime).