From f43bf307c845ec90d0c96f6eb32ef83962f05eb4 Mon Sep 17 00:00:00 2001 From: Shay Banon Date: Fri, 29 Jul 2011 20:01:43 +0300 Subject: [PATCH] Mapping: Root object non ISO date formats to support timezone, closes #1181. --- .../index/mapper/object/RootObjectMapper.java | 2 +- .../mapper/date/SimpleDateMappingTests.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/mapper/object/RootObjectMapper.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/mapper/object/RootObjectMapper.java index 65b78ceb5e8..f997f3ead90 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/mapper/object/RootObjectMapper.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/mapper/object/RootObjectMapper.java @@ -51,7 +51,7 @@ public class RootObjectMapper extends ObjectMapper { public static final FormatDateTimeFormatter[] DATE_TIME_FORMATTERS = new FormatDateTimeFormatter[]{ DateFieldMapper.Defaults.DATE_TIME_FORMATTER, - Joda.forPattern("yyyy/MM/dd HH:mm:ss||yyyy/MM/dd") + Joda.forPattern("yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z") }; public static final boolean DATE_DETECTION = true; } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/mapper/date/SimpleDateMappingTests.java b/modules/elasticsearch/src/test/java/org/elasticsearch/index/mapper/date/SimpleDateMappingTests.java index 96107b5e65e..9c31b07e07d 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/mapper/date/SimpleDateMappingTests.java +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/mapper/date/SimpleDateMappingTests.java @@ -21,8 +21,10 @@ package org.elasticsearch.index.mapper.date; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.index.mapper.DocumentMapper; +import org.elasticsearch.index.mapper.FieldMapper; import org.elasticsearch.index.mapper.MapperTests; import org.elasticsearch.index.mapper.ParsedDocument; +import org.elasticsearch.index.mapper.core.DateFieldMapper; import org.testng.annotations.Test; import static org.hamcrest.MatcherAssert.*; @@ -31,6 +33,23 @@ import static org.hamcrest.Matchers.*; @Test public class SimpleDateMappingTests { + @Test public void testAutomaticDateParser() throws Exception { + String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") + .startObject("properties").endObject() + .endObject().endObject().string(); + + DocumentMapper defaultMapper = MapperTests.newParser().parse(mapping); + + ParsedDocument doc = defaultMapper.parse("type", "1", XContentFactory.jsonBuilder() + .startObject() + .field("date_field", "2011/01/22 00:00:00 +02") + .endObject() + .copiedBytes()); + + FieldMapper fieldMapper = defaultMapper.mappers().smartNameFieldMapper("date_field"); + assertThat(fieldMapper, instanceOf(DateFieldMapper.class)); + } + @Test public void testTimestampAsDate() throws Exception { String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") .startObject("properties").startObject("date_field").field("type", "date").endObject().endObject()