Class FacetStream
- java.lang.Object
-
- org.apache.solr.client.solrj.io.stream.TupleStream
-
- org.apache.solr.client.solrj.io.stream.FacetStream
-
- All Implemented Interfaces:
Closeable
,Serializable
,AutoCloseable
,Expressible
,ParallelMetricsRollup
,org.apache.solr.common.MapSerializable
,org.apache.solr.common.MapWriter
,org.apache.solr.common.NavigableObject
,org.noggit.JSONWriter.Writable
public class FacetStream extends TupleStream implements Expressible, ParallelMetricsRollup
The FacetStream abstracts the output from the JSON facet API as a Stream of Tuples. This provides an alternative to the RollupStream which uses Map/Reduce to perform aggregations.- Since:
- 6.0.0
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.solr.client.solrj.io.stream.TupleStream
TupleStream.IgnoreException
-
-
Field Summary
Fields Modifier and Type Field Description protected SolrClientCache
cache
protected org.apache.solr.client.solrj.impl.CloudSolrClient
cloudSolrClient
protected StreamContext
context
protected TupleStream
parallelizedStream
-
Constructor Summary
Constructors Constructor Description FacetStream(String zkHost, String collection, org.apache.solr.common.params.SolrParams params, Bucket[] buckets, Metric[] metrics, FieldComparator[] bucketSorts, int bucketSizeLimit)
FacetStream(StreamExpression expression, StreamFactory factory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<TupleStream>
children()
void
close()
Bucket[]
getBuckets()
int
getBucketSizeLimit()
String
getCollection()
int
getCost()
int
getOffset()
int
getOverfetch()
protected Map<String,String>
getRollupSelectFields(Metric[] rollupMetrics)
The projection of dimensions and metrics from the rollup stream.int
getRows()
TupleStream
getSortedRollupStream(ParallelListStream plist, Metric[] rollupMetrics)
Get the rollup for the parallelized streams that is sorted based on the original (non-parallel) sort order.StreamComparator
getStreamSort()
void
open()
TupleStream[]
parallelize(List<String> partitions)
Given a list of collections, return an array of TupleStream for each partition.Tuple
read()
void
setStreamContext(StreamContext context)
Explanation
toExplanation(StreamFactory factory)
Returns an explanation about the stream objectStreamExpressionParameter
toExpression(StreamFactory factory)
-
Methods inherited from class org.apache.solr.client.solrj.io.stream.TupleStream
getShards, getShards, getStreamNodeId, writeMap
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.solr.common.NavigableObject
_forEachEntry, _forEachEntry, _forEachEntry, _get, _get, _getStr, _getStr, _size
-
Methods inherited from interface org.apache.solr.client.solrj.io.stream.ParallelMetricsRollup
getRollupMetrics, openParallelStream
-
-
-
-
Field Detail
-
cache
protected transient SolrClientCache cache
-
cloudSolrClient
protected transient org.apache.solr.client.solrj.impl.CloudSolrClient cloudSolrClient
-
parallelizedStream
protected transient TupleStream parallelizedStream
-
context
protected transient StreamContext context
-
-
Constructor Detail
-
FacetStream
public FacetStream(String zkHost, String collection, org.apache.solr.common.params.SolrParams params, Bucket[] buckets, Metric[] metrics, FieldComparator[] bucketSorts, int bucketSizeLimit) throws IOException
- Throws:
IOException
-
FacetStream
public FacetStream(StreamExpression expression, StreamFactory factory) throws IOException
- Throws:
IOException
-
-
Method Detail
-
getBucketSizeLimit
public int getBucketSizeLimit()
-
getRows
public int getRows()
-
getOffset
public int getOffset()
-
getOverfetch
public int getOverfetch()
-
getBuckets
public Bucket[] getBuckets()
-
getCollection
public String getCollection()
-
toExpression
public StreamExpressionParameter toExpression(StreamFactory factory) throws IOException
- Specified by:
toExpression
in interfaceExpressible
- Throws:
IOException
-
toExplanation
public Explanation toExplanation(StreamFactory factory) throws IOException
Description copied from interface:Expressible
Returns an explanation about the stream object- Specified by:
toExplanation
in interfaceExpressible
- Specified by:
toExplanation
in classTupleStream
- Parameters:
factory
- Stream factory for this, contains information about the function name- Returns:
- Explanation about this stream object containing explanations of any child stream objects
- Throws:
IOException
- throw on any error
-
setStreamContext
public void setStreamContext(StreamContext context)
- Specified by:
setStreamContext
in classTupleStream
-
children
public List<TupleStream> children()
- Specified by:
children
in classTupleStream
-
open
public void open() throws IOException
- Specified by:
open
in classTupleStream
- Throws:
IOException
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in classTupleStream
- Throws:
IOException
-
read
public Tuple read() throws IOException
- Specified by:
read
in classTupleStream
- Throws:
IOException
-
getCost
public int getCost()
- Overrides:
getCost
in classTupleStream
-
getStreamSort
public StreamComparator getStreamSort()
- Specified by:
getStreamSort
in classTupleStream
-
parallelize
public TupleStream[] parallelize(List<String> partitions) throws IOException
Description copied from interface:ParallelMetricsRollup
Given a list of collections, return an array of TupleStream for each partition.- Specified by:
parallelize
in interfaceParallelMetricsRollup
- Parameters:
partitions
- A list of collections to parallelize metrics computation across.- Returns:
- An array of TupleStream for each partition requested.
- Throws:
IOException
- if an error occurs while constructing the underlying TupleStream for a partition.
-
getSortedRollupStream
public TupleStream getSortedRollupStream(ParallelListStream plist, Metric[] rollupMetrics) throws IOException
Description copied from interface:ParallelMetricsRollup
Get the rollup for the parallelized streams that is sorted based on the original (non-parallel) sort order.- Specified by:
getSortedRollupStream
in interfaceParallelMetricsRollup
- Parameters:
plist
- A parallel list stream to fetch metrics from each partition concurrentlyrollupMetrics
- An array of metrics to rollup- Returns:
- A rollup over parallelized streams that provide metrics; this is typically a SortStream.
- Throws:
IOException
- if an error occurs while reading from the sorted stream
-
getRollupSelectFields
protected Map<String,String> getRollupSelectFields(Metric[] rollupMetrics)
The projection of dimensions and metrics from the rollup stream.- Parameters:
rollupMetrics
- The metrics being rolled up.- Returns:
- A mapping of fields produced by the rollup stream to their output name.
-
-