Package org.elasticsearch.search.profile
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<PB>
breakdowns
protected java.util.ArrayList<E>
elements
A list of the original queries, keyed by index positionprotected 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<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 aQueryProfileBreakdown
for a scoring query.java.util.List<ProfileResult>
getTree()
After the element 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 treeprotected 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
-
breakdowns
-
tree
protected java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> treeMaps the Query to it's list of children. This is basically the dependency tree -
elements
A list of the original queries, keyed by index position -
roots
protected java.util.ArrayList<java.lang.Integer> rootsA list of top-level "roots". Each root can have its own tree of profiles -
stack
protected java.util.Deque<java.lang.Integer> stackA temporary stack used to record where we are in the dependency tree.
-
-
Constructor Details
-
AbstractInternalProfileTree
public AbstractInternalProfileTree()
-
-
Method Details
-
getProfileBreakdown
Returns aQueryProfileBreakdown
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
-
pollLast
public void pollLast()Removes the last (e.g. most recent) value on the stack -
getTree
After the element 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
-
getDescriptionFromElement
-