CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-elasticsearch-plugin--aggs-matrix-stats-client

Elasticsearch plugin that adds matrix statistics aggregation functionality for computing statistical measures and relationships across multiple numeric fields

Pending
Overview
Eval results
Files

aggregation-builder.mddocs/

Aggregation Builder

Factory methods and builder pattern for creating matrix stats aggregations with field configuration and multi-value handling options.

Capabilities

MatrixStatsAggregationBuilders Factory

Static factory class providing convenient methods for creating matrix stats aggregation builders.

/**
 * Factory class for creating matrix stats aggregation builders
 */
public class MatrixStatsAggregationBuilders {
    /**
     * Create a new MatrixStats aggregation with the given name
     * @param name The name for the aggregation
     * @return A new MatrixStatsAggregationBuilder instance
     */
    public static MatrixStatsAggregationBuilder matrixStats(String name);
}

Usage Example:

import org.elasticsearch.search.aggregations.matrix.MatrixStatsAggregationBuilders;

// Create a matrix stats aggregation builder
MatrixStatsAggregationBuilder builder = MatrixStatsAggregationBuilders.matrixStats("sales_analysis");

MatrixStatsAggregationBuilder

Builder class for configuring matrix stats aggregations with field selection and multi-value handling.

/**
 * Builder for matrix stats aggregations
 */
public class MatrixStatsAggregationBuilder extends ArrayValuesSourceAggregationBuilder.LeafOnly<MatrixStatsAggregationBuilder> {
    /** The aggregation type name used in Elasticsearch queries */
    public static final String NAME = "matrix_stats";
    
    /**
     * Constructor for creating a new matrix stats aggregation builder
     * @param name The name for this aggregation instance
     */
    public MatrixStatsAggregationBuilder(String name);
    
    /**
     * Sets the multi-value mode for handling fields with multiple values
     * @param multiValueMode The mode to use (AVG, SUM, MIN, MAX, MEDIAN)
     * @return This builder instance for method chaining
     */
    public MatrixStatsAggregationBuilder multiValueMode(MultiValueMode multiValueMode);
    
    /**
     * Gets the current multi-value mode
     * @return The configured MultiValueMode
     */
    public MultiValueMode multiValueMode();
    
    /**
     * Returns the aggregation type name
     * @return "matrix_stats"
     */
    public String getType();
}

Usage Examples:

import org.elasticsearch.search.aggregations.matrix.MatrixStatsAggregationBuilders;
import org.elasticsearch.search.MultiValueMode;
import java.util.Arrays;

// Basic usage with default settings
MatrixStatsAggregationBuilder basicBuilder = MatrixStatsAggregationBuilders
    .matrixStats("product_stats")
    .fields(Arrays.asList("price", "weight", "rating"));

// Advanced usage with multi-value mode configuration
MatrixStatsAggregationBuilder advancedBuilder = MatrixStatsAggregationBuilders
    .matrixStats("detailed_analysis")
    .fields(Arrays.asList("sales", "profit", "customers"))
    .multiValueMode(MultiValueMode.AVG)
    .format("0.00");

// With missing value handling
Map<String, Object> missingValues = new HashMap<>();
missingValues.put("sales", 0.0);
missingValues.put("profit", 0.0);

MatrixStatsAggregationBuilder builderWithMissing = MatrixStatsAggregationBuilders
    .matrixStats("complete_analysis")
    .fields(Arrays.asList("sales", "profit", "customers"))
    .missingMap(missingValues);

ArrayValuesSourceAggregationBuilder Base Class

Base class providing common functionality for aggregations that work with multiple fields.

/**
 * Base class for aggregations working with arrays of values sources
 */
public abstract class ArrayValuesSourceAggregationBuilder<AB extends ArrayValuesSourceAggregationBuilder<AB>> 
    extends AbstractAggregationBuilder<AB> {
    
    /**
     * Sets the fields to use for this aggregation
     * @param fields List of field names to analyze
     * @return This builder instance for method chaining
     */
    public AB fields(List<String> fields);
    
    /**
     * Gets the currently configured fields
     * @return List of field names
     */
    public List<String> fields();
    
    /**
     * Sets the format to use for the output of the aggregation
     * @param format Format string for numeric output
     * @return This builder instance for method chaining
     */
    public AB format(String format);
    
    /**
     * Gets the format to use for the output of the aggregation
     * @return Current format string
     */
    public String format();
    
    /**
     * Sets the value to use when the aggregation finds a missing value in a document
     * @param missingMap Map of field names to default values
     * @return This builder instance for method chaining
     */
    public AB missingMap(Map<String, Object> missingMap);
    
    /**
     * Gets the value to use when the aggregation finds a missing value in a document
     * @return Map of field names to default values
     */
    public Map<String, Object> missingMap();
}

LeafOnly Specialization

Specialization for aggregations that cannot accept sub-aggregations.

/**
 * Base class for leaf-only aggregations (cannot accept sub-aggregations)
 */
public abstract static class LeafOnly<AB extends ArrayValuesSourceAggregationBuilder<AB>> 
    extends ArrayValuesSourceAggregationBuilder<AB> {
    
    /**
     * Constructor for leaf-only aggregation builders
     * @param name The aggregation name  
     */
    protected LeafOnly(String name);
    
    /**
     * Returns the bucket cardinality for this aggregation type
     * @return BucketCardinality.NONE (leaf aggregations don't create buckets)
     */
    public final BucketCardinality bucketCardinality();
}

Multi-Value Mode Options

When fields contain multiple values per document, the aggregation uses the specified MultiValueMode:

  • AVG (default): Uses the average of all values
  • SUM: Uses the sum of all values
  • MIN: Uses the minimum value
  • MAX: Uses the maximum value
  • MEDIAN: Uses the median value

Error Handling

The builder validates field names and configuration options. Common validation errors include:

  • IllegalArgumentException: Thrown when field list is null or empty
  • AggregationInitializationException: Thrown when attempting to add sub-aggregations to a leaf aggregation

Install with Tessl CLI

npx tessl i tessl/maven-org-elasticsearch-plugin--aggs-matrix-stats-client

docs

aggregation-builder.md

index.md

plugin-registration.md

statistical-results.md

tile.json