diff options
Diffstat (limited to 'core/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsBuilder.java')
-rw-r--r-- | core/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsBuilder.java | 276 |
1 files changed, 0 insertions, 276 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsBuilder.java deleted file mode 100644 index 3d8aff9b24..0000000000 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsBuilder.java +++ /dev/null @@ -1,276 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.search.aggregations.bucket.terms; - -import org.apache.lucene.util.automaton.RegExp; -import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.search.aggregations.Aggregator.SubAggCollectionMode; -import org.elasticsearch.search.aggregations.ValuesSourceAggregationBuilder; - -import java.io.IOException; -import java.util.Locale; - -/** - * Builder for the {@link Terms} aggregation. - */ -public class TermsBuilder extends ValuesSourceAggregationBuilder<TermsBuilder> { - - private TermsAggregator.BucketCountThresholds bucketCountThresholds = new TermsAggregator.BucketCountThresholds(-1, -1, -1, -1); - - private Terms.ValueType valueType; - private Terms.Order order; - private String includePattern; - private String excludePattern; - private String executionHint; - private SubAggCollectionMode collectionMode; - private Boolean showTermDocCountError; - private String[] includeTerms = null; - private String[] excludeTerms = null; - - /** - * Sole constructor. - */ - public TermsBuilder(String name) { - super(name, "terms"); - } - - /** - * Sets the size - indicating how many term buckets should be returned (defaults to 10) - */ - public TermsBuilder size(int size) { - bucketCountThresholds.setRequiredSize(size); - return this; - } - - /** - * Sets the shard_size - indicating the number of term buckets each shard will return to the coordinating node (the - * node that coordinates the search execution). The higher the shard size is, the more accurate the results are. - */ - public TermsBuilder shardSize(int shardSize) { - bucketCountThresholds.setShardSize(shardSize); - return this; - } - - /** - * Set the minimum document count terms should have in order to appear in the response. - */ - public TermsBuilder minDocCount(long minDocCount) { - bucketCountThresholds.setMinDocCount(minDocCount); - return this; - } - - /** - * Set the minimum document count terms should have on the shard in order to appear in the response. - */ - public TermsBuilder shardMinDocCount(long shardMinDocCount) { - bucketCountThresholds.setShardMinDocCount(shardMinDocCount); - return this; - } - - /** - * Define a regular expression that will determine what terms should be aggregated. The regular expression is based - * on the {@link RegExp} class. - * - * @see RegExp#RegExp(String) - */ - public TermsBuilder include(String regex) { - if (includeTerms != null) { - throw new IllegalArgumentException("exclude clause must be an array of strings or a regex, not both"); - } - this.includePattern = regex; - return this; - } - - /** - * Define a set of terms that should be aggregated. - */ - public TermsBuilder include(String [] terms) { - if (includePattern != null) { - throw new IllegalArgumentException("include clause must be an array of exact values or a regex, not both"); - } - this.includeTerms = terms; - return this; - } - - /** - * Define a set of terms that should be aggregated. - */ - public TermsBuilder include(long [] terms) { - if (includePattern != null) { - throw new IllegalArgumentException("include clause must be an array of exact values or a regex, not both"); - } - this.includeTerms = longsArrToStringArr(terms); - return this; - } - - private String[] longsArrToStringArr(long[] terms) { - String[] termsAsString = new String[terms.length]; - for (int i = 0; i < terms.length; i++) { - termsAsString[i] = Long.toString(terms[i]); - } - return termsAsString; - } - - - /** - * Define a set of terms that should be aggregated. - */ - public TermsBuilder include(double [] terms) { - if (includePattern != null) { - throw new IllegalArgumentException("include clause must be an array of exact values or a regex, not both"); - } - this.includeTerms = doubleArrToStringArr(terms); - return this; - } - - private String[] doubleArrToStringArr(double[] terms) { - String[] termsAsString = new String[terms.length]; - for (int i = 0; i < terms.length; i++) { - termsAsString[i] = Double.toString(terms[i]); - } - return termsAsString; - } - - /** - * Define a regular expression that will filter out terms that should be excluded from the aggregation. The regular - * expression is based on the {@link RegExp} class. - * - * @see RegExp#RegExp(String) - */ - public TermsBuilder exclude(String regex) { - if (excludeTerms != null) { - throw new IllegalArgumentException("exclude clause must be an array of exact values or a regex, not both"); - } - this.excludePattern = regex; - return this; - } - - /** - * Define a set of terms that should not be aggregated. - */ - public TermsBuilder exclude(String [] terms) { - if (excludePattern != null) { - throw new IllegalArgumentException("exclude clause must be an array of exact values or a regex, not both"); - } - this.excludeTerms = terms; - return this; - } - - - /** - * Define a set of terms that should not be aggregated. - */ - public TermsBuilder exclude(long [] terms) { - if (excludePattern != null) { - throw new IllegalArgumentException("exclude clause must be an array of exact values or a regex, not both"); - } - this.excludeTerms = longsArrToStringArr(terms); - return this; - } - - /** - * Define a set of terms that should not be aggregated. - */ - public TermsBuilder exclude(double [] terms) { - if (excludePattern != null) { - throw new IllegalArgumentException("exclude clause must be an array of exact values or a regex, not both"); - } - this.excludeTerms = doubleArrToStringArr(terms); - return this; - } - - - - /** - * When using scripts, the value type indicates the types of the values the script is generating. - */ - public TermsBuilder valueType(Terms.ValueType valueType) { - this.valueType = valueType; - return this; - } - - /** - * Defines the order in which the buckets will be returned. - */ - public TermsBuilder order(Terms.Order order) { - this.order = order; - return this; - } - - /** - * Expert: provide an execution hint to the aggregation. - */ - public TermsBuilder executionHint(String executionHint) { - this.executionHint = executionHint; - return this; - } - - /** - * Expert: set the collection mode. - */ - public TermsBuilder collectMode(SubAggCollectionMode mode) { - this.collectionMode = mode; - return this; - } - - /** - * Expert: return document count errors per term in the response. - */ - public TermsBuilder showTermDocCountError(boolean showTermDocCountError) { - this.showTermDocCountError = showTermDocCountError; - return this; - } - - @Override - protected XContentBuilder doInternalXContent(XContentBuilder builder, Params params) throws IOException { - - bucketCountThresholds.toXContent(builder, params); - - if (showTermDocCountError != null) { - builder.field(TermsAggregatorFactory.SHOW_TERM_DOC_COUNT_ERROR.getPreferredName(), showTermDocCountError); - } - if (executionHint != null) { - builder.field(TermsAggregatorFactory.EXECUTION_HINT_FIELD_NAME.getPreferredName(), executionHint); - } - if (valueType != null) { - builder.field("value_type", valueType.name().toLowerCase(Locale.ROOT)); - } - if (order != null) { - builder.field("order"); - order.toXContent(builder, params); - } - if (collectionMode != null) { - builder.field(SubAggCollectionMode.KEY.getPreferredName(), collectionMode.parseField().getPreferredName()); - } - if (includeTerms != null) { - builder.array("include", includeTerms); - } - if (includePattern != null) { - builder.field("include", includePattern); - } - if (excludeTerms != null) { - builder.array("exclude", excludeTerms); - } - if (excludePattern != null) { - builder.field("exclude", excludePattern); - } - return builder; - } -} |