2222
2323public final class ShardSearchPhaseAPMMetrics implements SearchOperationListener {
2424
25+ public static final String DFS_SEARCH_PHASE_METRIC = "es.search.shards.phases.dfs.duration.histogram" ;
2526 public static final String QUERY_SEARCH_PHASE_METRIC = "es.search.shards.phases.query.duration.histogram" ;
2627 public static final String FETCH_SEARCH_PHASE_METRIC = "es.search.shards.phases.fetch.duration.histogram" ;
2728
29+ private final LongHistogram dfsPhaseMetric ;
2830 private final LongHistogram queryPhaseMetric ;
2931 private final LongHistogram fetchPhaseMetric ;
3032
3133 public ShardSearchPhaseAPMMetrics (MeterRegistry meterRegistry ) {
34+ this .dfsPhaseMetric = meterRegistry .registerLongHistogram (
35+ DFS_SEARCH_PHASE_METRIC ,
36+ "DFS search phase execution times at the shard level, expressed as a histogram" ,
37+ "ms"
38+ );
3239 this .queryPhaseMetric = meterRegistry .registerLongHistogram (
3340 QUERY_SEARCH_PHASE_METRIC ,
3441 "Query search phase execution times at the shard level, expressed as a histogram" ,
@@ -41,6 +48,13 @@ public ShardSearchPhaseAPMMetrics(MeterRegistry meterRegistry) {
4148 );
4249 }
4350
51+ @ Override
52+ public void onDfsPhase (SearchContext searchContext , long tookInNanos ) {
53+ SearchExecutionContext searchExecutionContext = searchContext .getSearchExecutionContext ();
54+ Long rangeTimestampFrom = searchExecutionContext .getRangeTimestampFrom ();
55+ recordPhaseLatency (dfsPhaseMetric , tookInNanos , searchContext .request (), rangeTimestampFrom );
56+ }
57+
4458 @ Override
4559 public void onQueryPhase (SearchContext searchContext , long tookInNanos ) {
4660 SearchExecutionContext searchExecutionContext = searchContext .getSearchExecutionContext ();
0 commit comments