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,11 @@ public ShardSearchPhaseAPMMetrics(MeterRegistry meterRegistry) {
4148 );
4249 }
4350
51+ @ Override
52+ public void onDfsPhase (SearchContext searchContext , long tookInNanos ) {
53+ recordPhaseLatency (dfsPhaseMetric , tookInNanos );
54+ }
55+
4456 @ Override
4557 public void onQueryPhase (SearchContext searchContext , long tookInNanos ) {
4658 SearchExecutionContext searchExecutionContext = searchContext .getSearchExecutionContext ();
@@ -55,6 +67,10 @@ public void onFetchPhase(SearchContext searchContext, long tookInNanos) {
5567 recordPhaseLatency (fetchPhaseMetric , tookInNanos , searchContext .request (), rangeTimestampFrom );
5668 }
5769
70+ private static void recordPhaseLatency (LongHistogram histogramMetric , long tookInNanos ) {
71+ histogramMetric .record (TimeUnit .NANOSECONDS .toMillis (tookInNanos ));
72+ }
73+
5874 private static void recordPhaseLatency (
5975 LongHistogram histogramMetric ,
6076 long tookInNanos ,
0 commit comments