|
@@ -19,13 +19,18 @@
|
|
|
|
|
|
package org.elasticsearch.index.mapper.boost;
|
|
|
|
|
|
+import org.apache.lucene.search.BoostQuery;
|
|
|
+import org.apache.lucene.search.TermQuery;
|
|
|
import org.elasticsearch.Version;
|
|
|
import org.elasticsearch.cluster.metadata.IndexMetaData;
|
|
|
import org.elasticsearch.common.compress.CompressedXContent;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.common.xcontent.XContentFactory;
|
|
|
+import org.elasticsearch.index.IndexService;
|
|
|
+import org.elasticsearch.index.mapper.DocumentFieldMappers;
|
|
|
import org.elasticsearch.index.mapper.DocumentMapper;
|
|
|
import org.elasticsearch.index.mapper.ParsedDocument;
|
|
|
+import org.elasticsearch.index.query.QueryShardContext;
|
|
|
import org.elasticsearch.plugins.Plugin;
|
|
|
import org.elasticsearch.test.ESSingleNodeTestCase;
|
|
|
import org.elasticsearch.test.InternalSettingsPlugin;
|
|
@@ -33,6 +38,7 @@ import org.elasticsearch.test.InternalSettingsPlugin;
|
|
|
import java.util.Collection;
|
|
|
|
|
|
import static org.hamcrest.Matchers.equalTo;
|
|
|
+import static org.hamcrest.Matchers.instanceOf;
|
|
|
|
|
|
public class CustomBoostMappingTests extends ESSingleNodeTestCase {
|
|
|
|
|
@@ -77,4 +83,87 @@ public class CustomBoostMappingTests extends ESSingleNodeTestCase {
|
|
|
assertThat(doc.rootDoc().getField("f_field").boost(), equalTo(8.0f));
|
|
|
assertThat(doc.rootDoc().getField("date_field").boost(), equalTo(9.0f));
|
|
|
}
|
|
|
+
|
|
|
+ public void testBackCompatFieldMappingBoostValues() throws Exception {
|
|
|
+ String mapping = XContentFactory.jsonBuilder().startObject().startObject("type").startObject("properties")
|
|
|
+ .startObject("s_field").field("type", "keyword").field("boost", 2.0f).endObject()
|
|
|
+ .startObject("l_field").field("type", "long").field("boost", 3.0f).startObject("norms").field("enabled", true).endObject().endObject()
|
|
|
+ .startObject("i_field").field("type", "integer").field("boost", 4.0f).startObject("norms").field("enabled", true).endObject().endObject()
|
|
|
+ .startObject("sh_field").field("type", "short").field("boost", 5.0f).startObject("norms").field("enabled", true).endObject().endObject()
|
|
|
+ .startObject("b_field").field("type", "byte").field("boost", 6.0f).startObject("norms").field("enabled", true).endObject().endObject()
|
|
|
+ .startObject("d_field").field("type", "double").field("boost", 7.0f).startObject("norms").field("enabled", true).endObject().endObject()
|
|
|
+ .startObject("f_field").field("type", "float").field("boost", 8.0f).startObject("norms").field("enabled", true).endObject().endObject()
|
|
|
+ .startObject("date_field").field("type", "date").field("boost", 9.0f).startObject("norms").field("enabled", true).endObject().endObject()
|
|
|
+ .endObject().endObject().endObject().string();
|
|
|
+
|
|
|
+ {
|
|
|
+ IndexService indexService = createIndex("test", BW_SETTINGS);
|
|
|
+ QueryShardContext context = indexService.newQueryShardContext();
|
|
|
+ DocumentMapper mapper = indexService.mapperService().documentMapperParser().parse("type", new CompressedXContent(mapping));
|
|
|
+ DocumentFieldMappers fieldMappers = mapper.mappers();
|
|
|
+ assertThat(fieldMappers.getMapper("s_field").fieldType().termQuery("0", context), instanceOf(TermQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("l_field").fieldType().termQuery("0", context), instanceOf(TermQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("i_field").fieldType().termQuery("0", context), instanceOf(TermQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("sh_field").fieldType().termQuery("0", context), instanceOf(TermQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("b_field").fieldType().termQuery("0", context), instanceOf(TermQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("d_field").fieldType().termQuery("0", context), instanceOf(TermQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("f_field").fieldType().termQuery("0", context), instanceOf(TermQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("date_field").fieldType().termQuery("0", context), instanceOf(TermQuery.class));
|
|
|
+
|
|
|
+ ParsedDocument doc = mapper.parse("test", "type", "1", XContentFactory.jsonBuilder().startObject()
|
|
|
+ .field("s_field", "s_value")
|
|
|
+ .field("l_field", 1L)
|
|
|
+ .field("i_field", 1)
|
|
|
+ .field("sh_field", 1)
|
|
|
+ .field("b_field", 1)
|
|
|
+ .field("d_field", 1)
|
|
|
+ .field("f_field", 1)
|
|
|
+ .field("date_field", "20100101")
|
|
|
+ .endObject().bytes());
|
|
|
+
|
|
|
+ assertThat(doc.rootDoc().getField("s_field").boost(), equalTo(2.0f));
|
|
|
+ assertThat(doc.rootDoc().getField("l_field").boost(), equalTo(3.0f));
|
|
|
+ assertThat(doc.rootDoc().getField("i_field").boost(), equalTo(4.0f));
|
|
|
+ assertThat(doc.rootDoc().getField("sh_field").boost(), equalTo(5.0f));
|
|
|
+ assertThat(doc.rootDoc().getField("b_field").boost(), equalTo(6.0f));
|
|
|
+ assertThat(doc.rootDoc().getField("d_field").boost(), equalTo(7.0f));
|
|
|
+ assertThat(doc.rootDoc().getField("f_field").boost(), equalTo(8.0f));
|
|
|
+ assertThat(doc.rootDoc().getField("date_field").boost(), equalTo(9.0f));
|
|
|
+ }
|
|
|
+
|
|
|
+ {
|
|
|
+ IndexService indexService = createIndex("text");
|
|
|
+ QueryShardContext context = indexService.newQueryShardContext();
|
|
|
+ DocumentMapper mapper = indexService.mapperService().documentMapperParser().parse("type", new CompressedXContent(mapping));
|
|
|
+ DocumentFieldMappers fieldMappers = mapper.mappers();
|
|
|
+ assertThat(fieldMappers.getMapper("s_field").fieldType().termQuery("0", context), instanceOf(BoostQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("l_field").fieldType().termQuery("0", context), instanceOf(BoostQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("i_field").fieldType().termQuery("0", context), instanceOf(BoostQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("sh_field").fieldType().termQuery("0", context), instanceOf(BoostQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("b_field").fieldType().termQuery("0", context), instanceOf(BoostQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("d_field").fieldType().termQuery("0", context), instanceOf(BoostQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("f_field").fieldType().termQuery("0", context), instanceOf(BoostQuery.class));
|
|
|
+ assertThat(fieldMappers.getMapper("date_field").fieldType().termQuery("0", context), instanceOf(BoostQuery.class));
|
|
|
+
|
|
|
+ ParsedDocument doc = mapper.parse("test", "type", "1", XContentFactory.jsonBuilder().startObject()
|
|
|
+ .field("s_field", "s_value")
|
|
|
+ .field("l_field", 1L)
|
|
|
+ .field("i_field", 1)
|
|
|
+ .field("sh_field", 1)
|
|
|
+ .field("b_field", 1)
|
|
|
+ .field("d_field", 1)
|
|
|
+ .field("f_field", 1)
|
|
|
+ .field("date_field", "20100101")
|
|
|
+ .endObject().bytes());
|
|
|
+
|
|
|
+ assertThat(doc.rootDoc().getField("s_field").boost(), equalTo(1f));
|
|
|
+ assertThat(doc.rootDoc().getField("l_field").boost(), equalTo(1f));
|
|
|
+ assertThat(doc.rootDoc().getField("i_field").boost(), equalTo(1f));
|
|
|
+ assertThat(doc.rootDoc().getField("sh_field").boost(), equalTo(1f));
|
|
|
+ assertThat(doc.rootDoc().getField("b_field").boost(), equalTo(1f));
|
|
|
+ assertThat(doc.rootDoc().getField("d_field").boost(), equalTo(1f));
|
|
|
+ assertThat(doc.rootDoc().getField("f_field").boost(), equalTo(1f));
|
|
|
+ assertThat(doc.rootDoc().getField("date_field").boost(), equalTo(1f));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|