|
@@ -810,6 +810,32 @@ public class SearchFieldsIT extends ESIntegTestCase {
|
|
|
equalTo(new BytesRef(new byte[] {42, 100})));
|
|
|
assertThat(searchResponse.getHits().getAt(0).getFields().get("ip_field").getValue(), equalTo("::1"));
|
|
|
|
|
|
+ builder = client().prepareSearch().setQuery(matchAllQuery())
|
|
|
+ .addDocValueField("*field");
|
|
|
+ searchResponse = builder.execute().actionGet();
|
|
|
+
|
|
|
+ assertThat(searchResponse.getHits().getTotalHits(), equalTo(1L));
|
|
|
+ assertThat(searchResponse.getHits().getHits().length, equalTo(1));
|
|
|
+ fields = new HashSet<>(searchResponse.getHits().getAt(0).getFields().keySet());
|
|
|
+ assertThat(fields, equalTo(newHashSet("byte_field", "short_field", "integer_field", "long_field",
|
|
|
+ "float_field", "double_field", "date_field", "boolean_field", "text_field", "keyword_field",
|
|
|
+ "binary_field", "ip_field")));
|
|
|
+
|
|
|
+ assertThat(searchResponse.getHits().getAt(0).getFields().get("byte_field").getValue().toString(), equalTo("1"));
|
|
|
+ assertThat(searchResponse.getHits().getAt(0).getFields().get("short_field").getValue().toString(), equalTo("2"));
|
|
|
+ assertThat(searchResponse.getHits().getAt(0).getFields().get("integer_field").getValue(), equalTo((Object) 3L));
|
|
|
+ assertThat(searchResponse.getHits().getAt(0).getFields().get("long_field").getValue(), equalTo((Object) 4L));
|
|
|
+ assertThat(searchResponse.getHits().getAt(0).getFields().get("float_field").getValue(), equalTo((Object) 5.0));
|
|
|
+ assertThat(searchResponse.getHits().getAt(0).getFields().get("double_field").getValue(), equalTo((Object) 6.0d));
|
|
|
+ dateField = searchResponse.getHits().getAt(0).getFields().get("date_field").getValue();
|
|
|
+ assertThat(dateField.toInstant().toEpochMilli(), equalTo(date.toInstant().toEpochMilli()));
|
|
|
+ assertThat(searchResponse.getHits().getAt(0).getFields().get("boolean_field").getValue(), equalTo((Object) true));
|
|
|
+ assertThat(searchResponse.getHits().getAt(0).getFields().get("text_field").getValue(), equalTo("foo"));
|
|
|
+ assertThat(searchResponse.getHits().getAt(0).getFields().get("keyword_field").getValue(), equalTo("foo"));
|
|
|
+ assertThat(searchResponse.getHits().getAt(0).getFields().get("binary_field").getValue(),
|
|
|
+ equalTo(new BytesRef(new byte[] {42, 100})));
|
|
|
+ assertThat(searchResponse.getHits().getAt(0).getFields().get("ip_field").getValue(), equalTo("::1"));
|
|
|
+
|
|
|
builder = client().prepareSearch().setQuery(matchAllQuery())
|
|
|
.addDocValueField("text_field", "use_field_mapping")
|
|
|
.addDocValueField("keyword_field", "use_field_mapping")
|
|
@@ -977,6 +1003,70 @@ public class SearchFieldsIT extends ESIntegTestCase {
|
|
|
assertThat(fetchedDate, equalTo(date));
|
|
|
}
|
|
|
|
|
|
+ public void testWildcardDocValueFieldsWithFieldAlias() throws Exception {
|
|
|
+ XContentBuilder mapping = XContentFactory.jsonBuilder()
|
|
|
+ .startObject()
|
|
|
+ .startObject("type")
|
|
|
+ .startObject("_source")
|
|
|
+ .field("enabled", false)
|
|
|
+ .endObject()
|
|
|
+ .startObject("properties")
|
|
|
+ .startObject("text_field")
|
|
|
+ .field("type", "text")
|
|
|
+ .field("fielddata", true)
|
|
|
+ .endObject()
|
|
|
+ .startObject("date_field")
|
|
|
+ .field("type", "date")
|
|
|
+ .field("format", "yyyy-MM-dd")
|
|
|
+ .endObject()
|
|
|
+ .startObject("text_field_alias")
|
|
|
+ .field("type", "alias")
|
|
|
+ .field("path", "text_field")
|
|
|
+ .endObject()
|
|
|
+ .startObject("date_field_alias")
|
|
|
+ .field("type", "alias")
|
|
|
+ .field("path", "date_field")
|
|
|
+ .endObject()
|
|
|
+ .endObject()
|
|
|
+ .endObject()
|
|
|
+ .endObject();
|
|
|
+ assertAcked(prepareCreate("test").addMapping("type", mapping));
|
|
|
+ ensureGreen("test");
|
|
|
+
|
|
|
+ ZonedDateTime date = ZonedDateTime.of(1990, 12, 29, 0, 0, 0, 0, ZoneOffset.UTC);
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ROOT);
|
|
|
+
|
|
|
+ index("test", "type", "1", "text_field", "foo", "date_field", formatter.format(date));
|
|
|
+ refresh("test");
|
|
|
+
|
|
|
+ SearchRequestBuilder builder = client().prepareSearch().setQuery(matchAllQuery())
|
|
|
+ .addDocValueField("*alias", "use_field_mapping")
|
|
|
+ .addDocValueField("date_field");
|
|
|
+ SearchResponse searchResponse = builder.execute().actionGet();
|
|
|
+
|
|
|
+ assertNoFailures(searchResponse);
|
|
|
+ assertHitCount(searchResponse, 1);
|
|
|
+ SearchHit hit = searchResponse.getHits().getAt(0);
|
|
|
+
|
|
|
+ Map<String, DocumentField> fields = hit.getFields();
|
|
|
+ assertThat(fields.keySet(), equalTo(newHashSet("text_field_alias", "date_field_alias", "date_field")));
|
|
|
+
|
|
|
+ DocumentField textFieldAlias = fields.get("text_field_alias");
|
|
|
+ assertThat(textFieldAlias.getName(), equalTo("text_field_alias"));
|
|
|
+ assertThat(textFieldAlias.getValue(), equalTo("foo"));
|
|
|
+
|
|
|
+ DocumentField dateFieldAlias = fields.get("date_field_alias");
|
|
|
+ assertThat(dateFieldAlias.getName(), equalTo("date_field_alias"));
|
|
|
+ assertThat(dateFieldAlias.getValue(),
|
|
|
+ equalTo("1990-12-29"));
|
|
|
+
|
|
|
+ DocumentField dateField = fields.get("date_field");
|
|
|
+ assertThat(dateField.getName(), equalTo("date_field"));
|
|
|
+
|
|
|
+ ZonedDateTime fetchedDate = dateField.getValue();
|
|
|
+ assertThat(fetchedDate, equalTo(date));
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
public void testStoredFieldsWithFieldAlias() throws Exception {
|
|
|
XContentBuilder mapping = XContentFactory.jsonBuilder()
|