Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extract field name from MappedFieldType #88475

Closed
wants to merge 21 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.index.fielddata.IndexFieldDataCache;
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
import org.elasticsearch.index.mapper.MappedFieldType;
import org.elasticsearch.index.mapper.MappedField;
import org.elasticsearch.index.mapper.NumberFieldMapper.NumberFieldType;
import org.elasticsearch.index.mapper.NumberFieldMapper.NumberType;
import org.elasticsearch.indices.breaker.CircuitBreakerService;
Expand Down Expand Up @@ -78,13 +78,16 @@ public class ScriptScoreBenchmark {
);
private final ScriptModule scriptModule = new ScriptModule(Settings.EMPTY, pluginsService.filterPlugins(ScriptPlugin.class));

private final Map<String, MappedFieldType> fieldTypes = Map.ofEntries(
Map.entry("n", new NumberFieldType("n", NumberType.LONG, false, false, true, true, null, Map.of(), null, false, null))
private final Map<String, MappedField> mappedFields = Map.ofEntries(
Map.entry(
"n",
new MappedField("n", new NumberFieldType(NumberType.LONG, false, false, true, true, null, Map.of(), null, false, null))
)
);
private final IndexFieldDataCache fieldDataCache = new IndexFieldDataCache.None();
private final CircuitBreakerService breakerService = new NoneCircuitBreakerService();
private SearchLookup lookup = new SearchLookup(
fieldTypes::get,
mappedFields::get,
(mft, lookup) -> mft.fielddataBuilder("test", lookup).build(fieldDataCache, breakerService)
);

Expand Down Expand Up @@ -150,8 +153,8 @@ private Query scriptScoreQuery(ScoreScript.Factory factory) {

private ScoreScript.Factory bareMetalScript() {
return (params, lookup) -> {
MappedFieldType type = fieldTypes.get("n");
IndexNumericFieldData ifd = (IndexNumericFieldData) lookup.getForField(type);
MappedField mappedField = mappedFields.get("n");
IndexNumericFieldData ifd = (IndexNumericFieldData) lookup.getForField(mappedField);
return new ScoreScript.LeafFactory() {
@Override
public ScoreScript newInstance(DocReader docReader) throws IOException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import org.elasticsearch.index.cache.bitset.BitsetFilterCache;
import org.elasticsearch.index.fielddata.IndexFieldData;
import org.elasticsearch.index.fielddata.IndexFieldDataCache;
import org.elasticsearch.index.mapper.MappedFieldType;
import org.elasticsearch.index.mapper.MappedField;
import org.elasticsearch.index.mapper.NestedLookup;
import org.elasticsearch.index.mapper.NumberFieldMapper;
import org.elasticsearch.index.mapper.NumberFieldMapper.NumberType;
Expand Down Expand Up @@ -207,16 +207,16 @@ public Analyzer buildCustomAnalyzer(
}

@Override
protected IndexFieldData<?> buildFieldData(MappedFieldType ft) {
protected IndexFieldData<?> buildFieldData(MappedField mappedField) {
IndexFieldDataCache indexFieldDataCache = indicesFieldDataCache.buildIndexFieldDataCache(new IndexFieldDataCache.Listener() {
}, index, ft.name());
return ft.fielddataBuilder("test", this::lookup).build(indexFieldDataCache, breakerService);
}, index, mappedField.name());
return mappedField.fielddataBuilder("test", this::lookup).build(indexFieldDataCache, breakerService);
}

@Override
public MappedFieldType getFieldType(String path) {
public MappedField getMappedField(String path) {
if (path.startsWith("int")) {
return new NumberFieldMapper.NumberFieldType(path, NumberType.INTEGER);
return new MappedField(path, new NumberFieldMapper.NumberFieldType(NumberType.INTEGER));
}
throw new UnsupportedOperationException();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import org.apache.lucene.store.Directory;
import org.apache.lucene.tests.index.RandomIndexWriter;
import org.apache.lucene.util.NumericUtils;
import org.elasticsearch.index.mapper.MappedFieldType;
import org.elasticsearch.index.mapper.MappedField;
import org.elasticsearch.index.mapper.NumberFieldMapper;
import org.elasticsearch.plugins.SearchPlugin;
import org.elasticsearch.search.aggregations.AggregatorTestCase;
Expand All @@ -30,7 +30,7 @@
public class MatrixStatsAggregatorTests extends AggregatorTestCase {

public void testNoData() throws Exception {
MappedFieldType ft = new NumberFieldMapper.NumberFieldType("field", NumberFieldMapper.NumberType.DOUBLE);
MappedField mappedField = new MappedField("field", new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.DOUBLE));

try (Directory directory = newDirectory(); RandomIndexWriter indexWriter = new RandomIndexWriter(random(), directory)) {
if (randomBoolean()) {
Expand All @@ -41,15 +41,15 @@ public void testNoData() throws Exception {
MatrixStatsAggregationBuilder aggBuilder = new MatrixStatsAggregationBuilder("my_agg").fields(
Collections.singletonList("field")
);
InternalMatrixStats stats = searchAndReduce(searcher, new MatchAllDocsQuery(), aggBuilder, ft);
InternalMatrixStats stats = searchAndReduce(searcher, new MatchAllDocsQuery(), aggBuilder, mappedField);
assertNull(stats.getStats());
assertEquals(0L, stats.getDocCount());
}
}
}

public void testUnmapped() throws Exception {
MappedFieldType ft = new NumberFieldMapper.NumberFieldType("field", NumberFieldMapper.NumberType.DOUBLE);
MappedField mappedField = new MappedField("field", new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.DOUBLE));

try (Directory directory = newDirectory(); RandomIndexWriter indexWriter = new RandomIndexWriter(random(), directory)) {
if (randomBoolean()) {
Expand All @@ -60,7 +60,7 @@ public void testUnmapped() throws Exception {
MatrixStatsAggregationBuilder aggBuilder = new MatrixStatsAggregationBuilder("my_agg").fields(
Collections.singletonList("bogus")
);
InternalMatrixStats stats = searchAndReduce(searcher, new MatchAllDocsQuery(), aggBuilder, ft);
InternalMatrixStats stats = searchAndReduce(searcher, new MatchAllDocsQuery(), aggBuilder, mappedField);
assertNull(stats.getStats());
assertEquals(0L, stats.getDocCount());
}
Expand All @@ -69,9 +69,9 @@ public void testUnmapped() throws Exception {

public void testTwoFields() throws Exception {
String fieldA = "a";
MappedFieldType ftA = new NumberFieldMapper.NumberFieldType(fieldA, NumberFieldMapper.NumberType.DOUBLE);
MappedField ftA = new MappedField(fieldA, new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.DOUBLE));
String fieldB = "b";
MappedFieldType ftB = new NumberFieldMapper.NumberFieldType(fieldB, NumberFieldMapper.NumberType.DOUBLE);
MappedField ftB = new MappedField(fieldB, new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.DOUBLE));

try (Directory directory = newDirectory(); RandomIndexWriter indexWriter = new RandomIndexWriter(random(), directory)) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public void testGetTimestampFieldTypeForTsdbDataStream() throws IOException {
IndexResponse indexResponse = indexDoc();

var indicesService = getInstanceFromNode(IndicesService.class);
var result = indicesService.getTimestampFieldType(indexResponse.getShardId().getIndex());
var result = indicesService.getTimestampField(indexResponse.getShardId().getIndex());
assertThat(result, notNullValue());
}

Expand All @@ -70,7 +70,7 @@ public void testGetTimestampFieldTypeForDataStream() throws IOException {
IndexResponse indexResponse = indexDoc();

var indicesService = getInstanceFromNode(IndicesService.class);
var result = indicesService.getTimestampFieldType(indexResponse.getShardId().getIndex());
var result = indicesService.getTimestampField(indexResponse.getShardId().getIndex());
assertThat(result, nullValue());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
import org.elasticsearch.index.mapper.DateFieldMapper;
import org.elasticsearch.index.mapper.GeoPointFieldMapper.GeoPointFieldType;
import org.elasticsearch.index.mapper.MappedFieldType;
import org.elasticsearch.index.mapper.MappedField;
import org.elasticsearch.script.AggregationScript;
import org.elasticsearch.script.BucketAggregationScript;
import org.elasticsearch.script.BucketAggregationSelectorScript;
Expand Down Expand Up @@ -454,22 +454,22 @@ private static DoubleValuesSource getDocValueSource(String variable, SearchLooku
}

String fieldname = parts[1].text;
MappedFieldType fieldType = lookup.fieldType(fieldname);
MappedField mappedField = lookup.mappedField(fieldname);

if (fieldType == null) {
if (mappedField == null) {
throw new ParseException("Field [" + fieldname + "] does not exist in mappings", 5);
}

IndexFieldData<?> fieldData = lookup.getForField(fieldType);
IndexFieldData<?> fieldData = lookup.getForField(mappedField);
final DoubleValuesSource valueSource;
if (fieldType instanceof GeoPointFieldType) {
if (mappedField.type() instanceof GeoPointFieldType) {
// geo
if (methodname == null) {
valueSource = GeoField.getVariable(fieldData, fieldname, variablename);
} else {
valueSource = GeoField.getMethod(fieldData, fieldname, methodname);
}
} else if (fieldType instanceof DateFieldMapper.DateFieldType) {
} else if (mappedField.type() instanceof DateFieldMapper.DateFieldType) {
if (dateAccessor) {
// date object
if (methodname == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
import org.elasticsearch.index.fielddata.LeafNumericFieldData;
import org.elasticsearch.index.fielddata.SortedNumericDoubleValues;
import org.elasticsearch.index.mapper.MappedField;
import org.elasticsearch.index.mapper.NumberFieldMapper;
import org.elasticsearch.script.FieldScript;
import org.elasticsearch.script.ScriptException;
Expand All @@ -35,7 +36,7 @@ public class ExpressionFieldScriptTests extends ESTestCase {
public void setUp() throws Exception {
super.setUp();

NumberFieldMapper.NumberFieldType fieldType = new NumberFieldMapper.NumberFieldType("field", NumberFieldMapper.NumberType.DOUBLE);
MappedField mappedField = new MappedField("field", new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.DOUBLE));

SortedNumericDoubleValues doubleValues = mock(SortedNumericDoubleValues.class);
when(doubleValues.advanceExact(anyInt())).thenReturn(true);
Expand All @@ -49,7 +50,7 @@ public void setUp() throws Exception {
when(fieldData.load(any())).thenReturn(atomicFieldData);

service = new ExpressionScriptEngine();
lookup = new SearchLookup(field -> field.equals("field") ? fieldType : null, (ignored, _lookup) -> fieldData);
lookup = new SearchLookup(field -> field.equals("field") ? mappedField : null, (ignored, _lookup) -> fieldData);
}

private FieldScript.LeafFactory compile(String expression) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
import org.elasticsearch.index.fielddata.LeafNumericFieldData;
import org.elasticsearch.index.fielddata.SortedNumericDoubleValues;
import org.elasticsearch.index.mapper.MappedField;
import org.elasticsearch.index.mapper.NumberFieldMapper.NumberFieldType;
import org.elasticsearch.index.mapper.NumberFieldMapper.NumberType;
import org.elasticsearch.script.DocValuesDocReader;
Expand All @@ -36,7 +37,7 @@ public class ExpressionNumberSortScriptTests extends ESTestCase {
public void setUp() throws Exception {
super.setUp();

NumberFieldType fieldType = new NumberFieldType("field", NumberType.DOUBLE);
MappedField mappedField = new MappedField("field", new NumberFieldType(NumberType.DOUBLE));

SortedNumericDoubleValues doubleValues = mock(SortedNumericDoubleValues.class);
when(doubleValues.advanceExact(anyInt())).thenReturn(true);
Expand All @@ -50,7 +51,7 @@ public void setUp() throws Exception {
when(fieldData.load(any())).thenReturn(atomicFieldData);

service = new ExpressionScriptEngine();
lookup = new SearchLookup(field -> field.equals("field") ? fieldType : null, (ignored, _lookup) -> fieldData);
lookup = new SearchLookup(field -> field.equals("field") ? mappedField : null, (ignored, _lookup) -> fieldData);
}

private NumberSortScript.LeafFactory compile(String expression) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
import org.elasticsearch.index.fielddata.LeafNumericFieldData;
import org.elasticsearch.index.fielddata.SortedNumericDoubleValues;
import org.elasticsearch.index.mapper.MappedField;
import org.elasticsearch.index.mapper.NumberFieldMapper.NumberFieldType;
import org.elasticsearch.index.mapper.NumberFieldMapper.NumberType;
import org.elasticsearch.script.ScriptException;
Expand All @@ -35,7 +36,7 @@ public class ExpressionTermsSetQueryTests extends ESTestCase {
public void setUp() throws Exception {
super.setUp();

NumberFieldType fieldType = new NumberFieldType("field", NumberType.DOUBLE);
MappedField mappedField = new MappedField("field", new NumberFieldType(NumberType.DOUBLE));

SortedNumericDoubleValues doubleValues = mock(SortedNumericDoubleValues.class);
when(doubleValues.advanceExact(anyInt())).thenReturn(true);
Expand All @@ -49,7 +50,7 @@ public void setUp() throws Exception {
when(fieldData.load(any())).thenReturn(atomicFieldData);

service = new ExpressionScriptEngine();
lookup = new SearchLookup(field -> field.equals("field") ? fieldType : null, (ignored, _lookup) -> fieldData);
lookup = new SearchLookup(field -> field.equals("field") ? mappedField : null, (ignored, _lookup) -> fieldData);
}

private TermsSetQueryScript.LeafFactory compile(String expression) {
Expand Down
Loading