diff --git a/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlighterSearchIT.java b/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlighterSearchIT.java
index 14cd65335f4..ac6bc9ab359 100644
--- a/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlighterSearchIT.java
+++ b/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlighterSearchIT.java
@@ -24,6 +24,7 @@ import org.elasticsearch.Version;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
+import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.action.support.WriteRequest;
import org.elasticsearch.cluster.metadata.IndexMetaData;
import org.elasticsearch.common.geo.GeoPoint;
@@ -40,15 +41,19 @@ import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder;
import org.elasticsearch.index.search.MatchQuery;
+import org.elasticsearch.indices.IndicesRequestCache;
import org.elasticsearch.plugins.Plugin;
import org.elasticsearch.rest.RestStatus;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field;
+import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.test.ESIntegTestCase;
import org.elasticsearch.test.InternalSettingsPlugin;
import org.hamcrest.Matcher;
import org.hamcrest.Matchers;
+import org.joda.time.DateTime;
+import org.joda.time.chrono.ISOChronology;
import java.io.IOException;
import java.util.Collection;
@@ -84,6 +89,7 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHigh
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNotHighlighted;
+import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse;
import static org.elasticsearch.test.hamcrest.RegexMatcher.matches;
import static org.hamcrest.Matchers.anyOf;
import static org.hamcrest.Matchers.containsString;
@@ -2948,4 +2954,34 @@ public class HighlighterSearchIT extends ESIntegTestCase {
equalTo("The quick brown fox jumps over the lazy dog"));
}
}
+
+ public void testHighlightQueryRewriteDatesWithNow() throws Exception {
+ assertAcked(client().admin().indices().prepareCreate("index-1").addMapping("type", "d", "type=date",
+ "field", "type=text,store=true,term_vector=with_positions_offsets")
+ .setSettings("index.number_of_replicas", 0, "index.number_of_shards", 2)
+ .get());
+ DateTime now = new DateTime(ISOChronology.getInstanceUTC());
+ indexRandom(true, client().prepareIndex("index-1", "type", "1").setSource("d", now, "field", "hello world"),
+ client().prepareIndex("index-1", "type", "2").setSource("d", now.minusDays(1), "field", "hello"),
+ client().prepareIndex("index-1", "type", "3").setSource("d", now.minusDays(2), "field", "world"));
+ ensureSearchable("index-1");
+ for (int i = 0; i < 5; i++) {
+ final SearchResponse r1 = client().prepareSearch("index-1")
+ .addSort("d", SortOrder.DESC)
+ .setTrackScores(true)
+ .highlighter(highlight()
+ .field("field")
+ .preTags("")
+ .postTags("")
+ ).setQuery(QueryBuilders.boolQuery().must(
+ QueryBuilders.rangeQuery("d").gte("now-7d/d").lte("now").includeLower(true).includeUpper(true).boost(1.0f))
+ .should(QueryBuilders.termQuery("field", "hello")))
+ .get();
+
+ assertSearchResponse(r1);
+ assertThat(r1.getHits().getTotalHits(), equalTo(3L));
+ assertHighlight(r1, 0, "field", 0, 1,
+ equalTo("hello world"));
+ }
+ }
}