@@ -418,7 +418,6 @@ public IndexShard(
418
418
this .refreshFieldHasValueListener = new RefreshFieldHasValueListener ();
419
419
this .relativeTimeInNanosSupplier = relativeTimeInNanosSupplier ;
420
420
this .indexCommitListener = indexCommitListener ;
421
- this .fieldInfos = FieldInfos .EMPTY ;
422
421
}
423
422
424
423
public ThreadPool getThreadPool () {
@@ -1025,7 +1024,11 @@ public void setFieldInfos(FieldInfos fieldInfos) {
1025
1024
}
1026
1025
1027
1026
public FieldInfos getFieldInfos () {
1028
- return fieldInfos ;
1027
+ var res = fieldInfos ;
1028
+ if (res == null ) {
1029
+ return loadFieldInfos ();
1030
+ }
1031
+ return res ;
1029
1032
}
1030
1033
1031
1034
public static Engine .Index prepareIndex (
@@ -4131,16 +4134,23 @@ public void beforeRefresh() {}
4131
4134
4132
4135
@ Override
4133
4136
public void afterRefresh (boolean didRefresh ) {
4134
- if (enableFieldHasValue && (didRefresh || fieldInfos == FieldInfos .EMPTY )) {
4135
- try (Engine .Searcher hasValueSearcher = getEngine ().acquireSearcher ("field_has_value" )) {
4136
- setFieldInfos (FieldInfos .getMergedFieldInfos (hasValueSearcher .getIndexReader ()));
4137
- } catch (AlreadyClosedException ignore ) {
4138
- // engine is closed - no updated FieldInfos is fine
4139
- }
4137
+ if (enableFieldHasValue && (didRefresh || fieldInfos == null )) {
4138
+ loadFieldInfos ();
4140
4139
}
4141
4140
}
4142
4141
}
4143
4142
4143
+ private FieldInfos loadFieldInfos () {
4144
+ try (Engine .Searcher hasValueSearcher = getEngine ().acquireSearcher ("field_has_value" )) {
4145
+ var res = FieldInfos .getMergedFieldInfos (hasValueSearcher .getIndexReader ());
4146
+ setFieldInfos (res );
4147
+ return res ;
4148
+ } catch (AlreadyClosedException ignore ) {
4149
+ // engine is closed - no update to3 FieldInfos is fine
4150
+ }
4151
+ return FieldInfos .EMPTY ;
4152
+ }
4153
+
4144
4154
/**
4145
4155
* Returns the shard-level field stats, which includes the number of segments in the latest NRT reader of this shard
4146
4156
* and the total number of fields across those segments.
0 commit comments