2727import org .elasticsearch .index .mapper .Mapper ;
2828import org .elasticsearch .index .mapper .MapperService ;
2929import org .elasticsearch .index .mapper .SeqNoFieldMapper ;
30+ import org .elasticsearch .index .mapper .SourceFieldMapper ;
3031import org .elasticsearch .index .mapper .TimeSeriesIdFieldMapper ;
3132import org .elasticsearch .index .mapper .TimeSeriesRoutingHashFieldMapper ;
3233import org .elasticsearch .index .mapper .vectors .DenseVectorFieldMapper ;
@@ -48,12 +49,17 @@ public class PerFieldFormatSupplier {
4849 // TODO: should we just allow all fields to use tsdb doc values codec?
4950 // Avoid using tsdb codec for fields like _seq_no, _primary_term.
5051 // But _tsid and _ts_routing_hash should always use the tsdb codec.
51- Set <String > includeMetaField = new HashSet <>(3 );
52+ Set <String > includeMetaField = new HashSet <>(5 );
5253 includeMetaField .add (TimeSeriesIdFieldMapper .NAME );
5354 includeMetaField .add (TimeSeriesRoutingHashFieldMapper .NAME );
5455 if (SEQNO_FIELD_USE_TSDB_DOC_VALUES_FORMAT .isEnabled ()) {
5556 includeMetaField .add (SeqNoFieldMapper .NAME );
5657 }
58+
59+ // Values of these doc_values fields can be filtered out in RecoverySourcePruneMergePolicy,
60+ // which leads to inconsistencies between merge stats and actual values.
61+ includeMetaField .add (SourceFieldMapper .RECOVERY_SOURCE_NAME );
62+ includeMetaField .add (SourceFieldMapper .RECOVERY_SOURCE_SIZE_NAME );
5763 INCLUDE_META_FIELDS = Collections .unmodifiableSet (includeMetaField );
5864 }
5965
0 commit comments