Skip to content

Commit de4c845

Browse files
committed
use binary dv and fix tests
1 parent 974646a commit de4c845

File tree

3 files changed

+18
-12
lines changed

3 files changed

+18
-12
lines changed

server/src/main/java/org/elasticsearch/index/mapper/IgnoredSourceFieldMapper.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import org.apache.lucene.document.SortedSetDocValuesField;
1313
import org.apache.lucene.document.StoredField;
14+
import org.apache.lucene.index.BinaryDocValues;
1415
import org.apache.lucene.index.LeafReader;
1516
import org.apache.lucene.index.SortedSetDocValues;
1617
import org.apache.lucene.util.BytesRef;
@@ -28,6 +29,7 @@
2829
import org.elasticsearch.index.IndexSettings;
2930
import org.elasticsearch.index.IndexVersion;
3031
import org.elasticsearch.index.IndexVersions;
32+
import org.elasticsearch.index.fielddata.MultiValuedSortedBinaryDocValues;
3133
import org.elasticsearch.index.query.SearchExecutionContext;
3234
import org.elasticsearch.search.lookup.SourceFilter;
3335
import org.elasticsearch.xcontent.XContentBuilder;
@@ -553,7 +555,7 @@ public BytesRef filterValue(BytesRef value, Function<Map<String, Object>, Map<St
553555
DOC_VALUES_IGNORED_SOURCE {
554556
@Override
555557
public IgnoredSourceLeafLoader createLeafLoader(LeafReader leafReader) throws IOException {
556-
SortedSetDocValues docValues = leafReader.getSortedSetDocValues(NAME);
558+
var docValues = MultiValuedSortedBinaryDocValues.from(leafReader, NAME);
557559
return new IgnoredSourceLeafLoader() {
558560
@Override
559561
public Map<String, List<NameValue>> loadAllIgnoredFields(
@@ -567,8 +569,7 @@ public Map<String, List<NameValue>> loadAllIgnoredFields(
567569
Map<String, List<NameValue>> objectsWithIgnoredFields = new HashMap<>();
568570
int count = docValues.docValueCount();
569571
for (int i = 0; i < count; i++) {
570-
long ord = docValues.nextOrd();
571-
BytesRef encoded = docValues.lookupOrd(ord);
572+
BytesRef encoded = docValues.nextValue();
572573
List<NameValue> nameValues = CoalescedIgnoredSourceEncoding.decode(encoded);
573574
assert nameValues.isEmpty() == false;
574575
for (var nameValue : nameValues) {
@@ -595,8 +596,7 @@ public Map<String, List<NameValue>> loadSingleIgnoredField(
595596
}
596597
int count = docValues.docValueCount();
597598
for (int i = 0; i < count; i++) {
598-
long ord = docValues.nextOrd();
599-
BytesRef encoded = docValues.lookupOrd(ord);
599+
BytesRef encoded = docValues.nextValue();
600600
List<NameValue> nameValues = CoalescedIgnoredSourceEncoding.decode(encoded);
601601
assert nameValues.isEmpty() == false;
602602
String fieldPath = nameValues.getFirst().name();
@@ -622,8 +622,11 @@ public void writeIgnoredFields(Collection<NameValue> ignoredFieldValues) {
622622

623623
for (var docEntry : entriesMap.entrySet()) {
624624
for (var fieldEntry : docEntry.getValue().entrySet()) {
625-
docEntry.getKey()
626-
.add(new SortedSetDocValuesField(NAME, CoalescedIgnoredSourceEncoding.encode(fieldEntry.getValue())));
625+
MultiValuedBinaryDocValuesField.SeparateCount.addToSeparateCountMultiBinaryFieldInDoc(
626+
docEntry.getKey(),
627+
NAME,
628+
CoalescedIgnoredSourceEncoding.encode(fieldEntry.getValue())
629+
);
627630
}
628631
}
629632
}

server/src/test/java/org/elasticsearch/index/mapper/DocCountFieldMapperTests.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ public void testSyntheticSourceMany() throws IOException {
9999
}
100100
}, reader -> {
101101
SourceLoader loader = mapper.mappingLookup().newSourceLoader(null, SourceFieldMetrics.NOOP);
102-
assertThat(loader.requiredStoredFields(), Matchers.contains("_ignored_source"));
103102
for (LeafReaderContext leaf : reader.leaves()) {
104103
int[] docIds = IntStream.range(0, leaf.reader().maxDoc()).toArray();
105104
SourceLoader.Leaf sourceLoaderLeaf = loader.leaf(leaf.reader(), docIds);

test/framework/src/main/java/org/elasticsearch/index/mapper/NativeArrayIntegrationTestCase.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
import org.apache.lucene.index.FieldInfos;
1616
import org.apache.lucene.index.IndexableField;
1717
import org.apache.lucene.index.LeafReader;
18+
import org.apache.lucene.index.MultiDocValues;
19+
import org.apache.lucene.index.MultiFields;
20+
import org.apache.lucene.index.MultiReader;
1821
import org.apache.lucene.util.BytesRef;
1922
import org.elasticsearch.action.admin.indices.forcemerge.ForceMergeRequest;
2023
import org.elasticsearch.action.admin.indices.refresh.RefreshAction;
@@ -236,9 +239,10 @@ public void testSynthesizeRandomArrayInNestedContext() throws Exception {
236239

237240
try (var searcher = indexService.getShard(0).acquireSearcher(getTestName())) {
238241
var reader = searcher.getDirectoryReader();
239-
var document = reader.storedFields().document(0);
240-
Set<String> storedFieldNames = new LinkedHashSet<>(document.getFields().stream().map(IndexableField::name).toList());
241-
assertThat(storedFieldNames, contains(IgnoredSourceFieldMapper.NAME));
242+
var binaryDV = MultiDocValues.getBinaryValues(reader, IgnoredSourceFieldMapper.NAME);
243+
assertThat(binaryDV, notNullValue());
244+
binaryDV.advanceExact(0);
245+
assertThat(binaryDV.binaryValue(), notNullValue());
242246
assertThat(FieldInfos.getMergedFieldInfos(reader).fieldInfo("parent.field.offsets"), nullValue());
243247
}
244248
}
@@ -376,7 +380,7 @@ protected void verifySyntheticObjectArray(List<List<Object[]>> documents) throws
376380
var document = reader.storedFields().document(i);
377381
// Verify that there is ignored source because of leaf array being wrapped by object array:
378382
List<String> storedFieldNames = document.getFields().stream().map(IndexableField::name).toList();
379-
assertThat(storedFieldNames, contains("_id", IgnoredSourceFieldMapper.NAME));
383+
assertThat(storedFieldNames, contains("_id"));
380384

381385
// Verify that there is no offset field:
382386
LeafReader leafReader = reader.leaves().get(0).reader();

0 commit comments

Comments
 (0)