Class AbstractInternalProfileTree<PB extends AbstractProfileBreakdown<?>,​E>

java.lang.Object
org.elasticsearch.search.profile.AbstractInternalProfileTree<PB,​E>
Direct Known Subclasses:
InternalAggregationProfileTree

public abstract class AbstractInternalProfileTree<PB extends AbstractProfileBreakdown<?>,​E>
extends java.lang.Object
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected java.util.ArrayList<E> elements
    A list of the original queries, keyed by index position
    protected java.util.ArrayList<java.lang.Integer> roots
    A list of top-level "roots".
    protected java.util.Deque<java.lang.Integer> stack
    A temporary stack used to record where we are in the dependency tree.
    protected java.util.ArrayList<PB> timings  
    protected java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> tree
    Maps the Query to it's list of children.
  • Constructor Summary

    Constructors 
    Constructor Description
    AbstractInternalProfileTree()  
  • Method Summary

    Modifier and Type Method Description
    protected abstract PB createProfileBreakdown()  
    protected abstract java.lang.String getDescriptionFromElement​(E element)  
    PB getProfileBreakdown​(E query)
    Returns a QueryProfileBreakdown for a scoring query.
    java.util.List<ProfileResult> getTree()
    After the query has been run and profiled, we need to merge the flat timing map with the dependency graph to build a data structure that mirrors the original query tree
    protected abstract java.lang.String getTypeFromElement​(E element)  
    void pollLast()
    Removes the last (e.g.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • timings

      protected java.util.ArrayList<PB extends AbstractProfileBreakdown<?>> timings
    • tree

      protected java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> tree
      Maps the Query to it's list of children. This is basically the dependency tree
    • elements

      protected java.util.ArrayList<E> elements
      A list of the original queries, keyed by index position
    • roots

      protected java.util.ArrayList<java.lang.Integer> roots
      A list of top-level "roots". Each root can have its own tree of profiles
    • stack

      protected java.util.Deque<java.lang.Integer> stack
      A temporary stack used to record where we are in the dependency tree.
  • Constructor Details

  • Method Details

    • getProfileBreakdown

      public PB getProfileBreakdown​(E query)
      Returns a QueryProfileBreakdown for a scoring query. Scoring queries (e.g. those that are past the rewrite phase and are now being wrapped by createWeight() ) follow a recursive progression. We can track the dependency tree by a simple stack The only hiccup is that the first scoring query will be identical to the last rewritten query, so we need to take special care to fix that
      Parameters:
      query - The scoring query we wish to profile
      Returns:
      A ProfileBreakdown for this query
    • createProfileBreakdown

      protected abstract PB createProfileBreakdown()
    • pollLast

      public void pollLast()
      Removes the last (e.g. most recent) value on the stack
    • getTree

      public java.util.List<ProfileResult> getTree()
      After the query has been run and profiled, we need to merge the flat timing map with the dependency graph to build a data structure that mirrors the original query tree
      Returns:
      a hierarchical representation of the profiled query tree
    • getTypeFromElement

      protected abstract java.lang.String getTypeFromElement​(E element)
    • getDescriptionFromElement

      protected abstract java.lang.String getDescriptionFromElement​(E element)