Skip to content

Commit 8efac46

Browse files
committed
apply patch to simplify fielddata
1 parent b7450c2 commit 8efac46

File tree

1 file changed

+29
-44
lines changed

1 file changed

+29
-44
lines changed

x-pack/plugin/mapper-patterned-text/src/main/java/org/elasticsearch/xpack/patternedtext/PatternedTextIndexFieldData.java

Lines changed: 29 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,15 @@
77

88
package org.elasticsearch.xpack.patternedtext;
99

10+
import org.apache.lucene.index.LeafReader;
1011
import org.apache.lucene.index.LeafReaderContext;
11-
import org.apache.lucene.index.SortedSetDocValues;
1212
import org.apache.lucene.search.SortField;
1313
import org.apache.lucene.util.BytesRef;
1414
import org.elasticsearch.common.util.BigArrays;
1515
import org.elasticsearch.index.fielddata.IndexFieldData;
1616
import org.elasticsearch.index.fielddata.IndexFieldDataCache;
1717
import org.elasticsearch.index.fielddata.LeafFieldData;
18-
import org.elasticsearch.index.fielddata.LeafOrdinalsFieldData;
1918
import org.elasticsearch.index.fielddata.SortedBinaryDocValues;
20-
import org.elasticsearch.index.fielddata.plain.SortedSetOrdinalsIndexFieldData;
2119
import org.elasticsearch.indices.breaker.CircuitBreakerService;
2220
import org.elasticsearch.script.field.DocValuesScriptFieldFactory;
2321
import org.elasticsearch.script.field.KeywordDocValuesField;
@@ -29,53 +27,32 @@
2927
import org.elasticsearch.search.sort.SortOrder;
3028

3129
import java.io.IOException;
30+
import java.io.UncheckedIOException;
3231

3332
public class PatternedTextIndexFieldData implements IndexFieldData<LeafFieldData> {
3433

35-
private final SortedSetOrdinalsIndexFieldData templateFieldData;
36-
private final SortedSetOrdinalsIndexFieldData argsFieldData;
37-
private final ToScriptFieldFactory<SortedBinaryDocValues> toScriptFieldFactory;
38-
private final String name;
34+
private final PatternedTextFieldType fieldType;
3935

4036
static class Builder implements IndexFieldData.Builder {
4137

42-
final String name;
43-
final SortedSetOrdinalsIndexFieldData.Builder templateFieldDataBuilder;
44-
final SortedSetOrdinalsIndexFieldData.Builder argsFieldDataBuilder;
45-
46-
Builder(
47-
String name,
48-
SortedSetOrdinalsIndexFieldData.Builder templateFieldData,
49-
SortedSetOrdinalsIndexFieldData.Builder argsFieldData
50-
) {
51-
this.name = name;
52-
this.templateFieldDataBuilder = templateFieldData;
53-
this.argsFieldDataBuilder = argsFieldData;
38+
final PatternedTextFieldType fieldType;
39+
40+
Builder(PatternedTextFieldType fieldType) {
41+
this.fieldType = fieldType;
5442
}
5543

5644
public PatternedTextIndexFieldData build(IndexFieldDataCache cache, CircuitBreakerService breakerService) {
57-
SortedSetOrdinalsIndexFieldData templateFieldData = templateFieldDataBuilder.build(cache, breakerService);
58-
SortedSetOrdinalsIndexFieldData argsFieldData = argsFieldDataBuilder.build(cache, breakerService);
59-
ToScriptFieldFactory<SortedBinaryDocValues> factory = KeywordDocValuesField::new;
60-
return new PatternedTextIndexFieldData(name, factory, templateFieldData, argsFieldData);
45+
return new PatternedTextIndexFieldData(fieldType);
6146
}
6247
}
6348

64-
PatternedTextIndexFieldData(
65-
String name,
66-
ToScriptFieldFactory<SortedBinaryDocValues> toScriptFieldFactory,
67-
SortedSetOrdinalsIndexFieldData templateFieldData,
68-
SortedSetOrdinalsIndexFieldData argsFieldData
69-
) {
70-
this.name = name;
71-
this.templateFieldData = templateFieldData;
72-
this.argsFieldData = argsFieldData;
73-
this.toScriptFieldFactory = toScriptFieldFactory;
49+
PatternedTextIndexFieldData(PatternedTextFieldType fieldType) {
50+
this.fieldType = fieldType;
7451
}
7552

7653
@Override
7754
public String getFieldName() {
78-
return name;
55+
return fieldType.name();
7956
}
8057

8158
@Override
@@ -85,24 +62,32 @@ public ValuesSourceType getValuesSourceType() {
8562

8663
@Override
8764
public LeafFieldData load(LeafReaderContext context) {
88-
return loadDirect(context);
65+
try {
66+
return loadDirect(context);
67+
} catch (IOException e) {
68+
throw new UncheckedIOException(e);
69+
}
8970
}
9071

9172
@Override
92-
public LeafFieldData loadDirect(LeafReaderContext context) {
93-
LeafOrdinalsFieldData leafTemplateFieldData = templateFieldData.loadDirect(context);
94-
LeafOrdinalsFieldData leafArgsFieldData = argsFieldData.loadDirect(context);
73+
public LeafFieldData loadDirect(LeafReaderContext context) throws IOException {
74+
LeafReader leafReader = context.reader();
75+
PatternedTextDocValues docValues = PatternedTextDocValues.from(
76+
leafReader,
77+
fieldType.templateFieldName(),
78+
fieldType.argsFieldName()
79+
);
9580
return new LeafFieldData() {
81+
82+
final ToScriptFieldFactory<SortedBinaryDocValues> factory = KeywordDocValuesField::new;
83+
9684
@Override
9785
public DocValuesScriptFieldFactory getScriptFieldFactory(String name) {
98-
return toScriptFieldFactory.getScriptFieldFactory(getBytesValues(), name);
86+
return factory.getScriptFieldFactory(getBytesValues(), name);
9987
}
10088

10189
@Override
10290
public SortedBinaryDocValues getBytesValues() {
103-
SortedSetDocValues templateDocValues = leafTemplateFieldData.getOrdinalsValues();
104-
SortedSetDocValues argsDocValues = leafArgsFieldData.getOrdinalsValues();
105-
var docValues = new PatternedTextDocValues(templateDocValues, argsDocValues);
10691
return new SortedBinaryDocValues() {
10792
@Override
10893
public boolean advanceExact(int doc) throws IOException {
@@ -123,14 +108,14 @@ public BytesRef nextValue() throws IOException {
123108

124109
@Override
125110
public long ramBytesUsed() {
126-
return leafTemplateFieldData.ramBytesUsed() + leafArgsFieldData.ramBytesUsed();
111+
return 1L;
127112
}
128113
};
129114
}
130115

131116
@Override
132117
public SortField sortField(Object missingValue, MultiValueMode sortMode, XFieldComparatorSource.Nested nested, boolean reverse) {
133-
return templateFieldData.sortField(missingValue, sortMode, nested, reverse);
118+
throw new IllegalArgumentException("not supported for source patterned text field type");
134119
}
135120

136121
@Override

0 commit comments

Comments
 (0)