Remove `numeric_range` filter
As done with #4034, `numeric_range` filter has been deprecated since 1.0.0. Closes #7108.
This commit is contained in:
parent
270b109e65
commit
655282a2c6
|
@ -296,19 +296,6 @@ public abstract class FilterBuilders {
|
|||
return new RangeFilterBuilder(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* A filter that restricts search results to values that are within the given numeric range. Uses the
|
||||
* field data cache (loading all the values for the specified field into memory)
|
||||
*
|
||||
* @param name The field name
|
||||
* @deprecated The numeric_range filter will be removed at some point in time in favor for the range filter with
|
||||
* the execution mode <code>fielddata</code>.
|
||||
*/
|
||||
@Deprecated
|
||||
public static NumericRangeFilterBuilder numericRangeFilter(String name) {
|
||||
return new NumericRangeFilterBuilder(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* A filter that simply wraps a query.
|
||||
*
|
||||
|
|
|
@ -1,381 +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.index.query;
|
||||
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* A filter that restricts search results to values that are within the given numeric range.
|
||||
* <p/>
|
||||
* <p>Uses the field data cache (loading all the values for the specified field into memory).
|
||||
*
|
||||
* @deprecated This filter will be removed at some point in time in favor for the range filter with the execution
|
||||
* mode <code>fielddata</code>.
|
||||
*/
|
||||
@Deprecated
|
||||
public class NumericRangeFilterBuilder extends BaseFilterBuilder {
|
||||
|
||||
private final String name;
|
||||
|
||||
private Object from;
|
||||
|
||||
private Object to;
|
||||
|
||||
private boolean includeLower = true;
|
||||
|
||||
private boolean includeUpper = true;
|
||||
|
||||
private Boolean cache;
|
||||
private String cacheKey;
|
||||
|
||||
private String filterName;
|
||||
|
||||
/**
|
||||
* A filter that restricts search results to values that are within the given range.
|
||||
*
|
||||
* @param name The field name
|
||||
*/
|
||||
public NumericRangeFilterBuilder(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder from(Object from) {
|
||||
this.from = from;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder from(int from) {
|
||||
this.from = from;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder from(long from) {
|
||||
this.from = from;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder from(float from) {
|
||||
this.from = from;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder from(double from) {
|
||||
this.from = from;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder gt(Object from) {
|
||||
this.from = from;
|
||||
this.includeLower = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder gt(int from) {
|
||||
this.from = from;
|
||||
this.includeLower = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder gt(long from) {
|
||||
this.from = from;
|
||||
this.includeLower = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder gt(float from) {
|
||||
this.from = from;
|
||||
this.includeLower = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder gt(double from) {
|
||||
this.from = from;
|
||||
this.includeLower = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder gte(Object from) {
|
||||
this.from = from;
|
||||
this.includeLower = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder gte(int from) {
|
||||
this.from = from;
|
||||
this.includeLower = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder gte(long from) {
|
||||
this.from = from;
|
||||
this.includeLower = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder gte(float from) {
|
||||
this.from = from;
|
||||
this.includeLower = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The from part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder gte(double from) {
|
||||
this.from = from;
|
||||
this.includeLower = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder to(Object to) {
|
||||
this.to = to;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder to(int to) {
|
||||
this.to = to;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder to(long to) {
|
||||
this.to = to;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder to(float to) {
|
||||
this.to = to;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder to(double to) {
|
||||
this.to = to;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder lt(Object to) {
|
||||
this.to = to;
|
||||
this.includeUpper = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder lt(int to) {
|
||||
this.to = to;
|
||||
this.includeUpper = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder lt(long to) {
|
||||
this.to = to;
|
||||
this.includeUpper = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder lt(float to) {
|
||||
this.to = to;
|
||||
this.includeUpper = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder lt(double to) {
|
||||
this.to = to;
|
||||
this.includeUpper = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder lte(Object to) {
|
||||
this.to = to;
|
||||
this.includeUpper = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder lte(int to) {
|
||||
this.to = to;
|
||||
this.includeUpper = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder lte(long to) {
|
||||
this.to = to;
|
||||
this.includeUpper = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder lte(float to) {
|
||||
this.to = to;
|
||||
this.includeUpper = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The to part of the filter query. Null indicates unbounded.
|
||||
*/
|
||||
public NumericRangeFilterBuilder lte(double to) {
|
||||
this.to = to;
|
||||
this.includeUpper = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should the lower bound be included or not. Defaults to <tt>true</tt>.
|
||||
*/
|
||||
public NumericRangeFilterBuilder includeLower(boolean includeLower) {
|
||||
this.includeLower = includeLower;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should the upper bound be included or not. Defaults to <tt>true</tt>.
|
||||
*/
|
||||
public NumericRangeFilterBuilder includeUpper(boolean includeUpper) {
|
||||
this.includeUpper = includeUpper;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the filter name for the filter that can be used when searching for matched_filters per hit.
|
||||
*/
|
||||
public NumericRangeFilterBuilder filterName(String filterName) {
|
||||
this.filterName = filterName;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should the filter be cached or not. Defaults to <tt>false</tt>.
|
||||
*/
|
||||
public NumericRangeFilterBuilder cache(boolean cache) {
|
||||
this.cache = cache;
|
||||
return this;
|
||||
}
|
||||
|
||||
public NumericRangeFilterBuilder cacheKey(String cacheKey) {
|
||||
this.cacheKey = cacheKey;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doXContent(XContentBuilder builder, Params params) throws IOException {
|
||||
builder.startObject(NumericRangeFilterParser.NAME);
|
||||
|
||||
builder.startObject(name);
|
||||
builder.field("from", from);
|
||||
builder.field("to", to);
|
||||
builder.field("include_lower", includeLower);
|
||||
builder.field("include_upper", includeUpper);
|
||||
builder.endObject();
|
||||
|
||||
if (filterName != null) {
|
||||
builder.field("_name", filterName);
|
||||
}
|
||||
if (cache != null) {
|
||||
builder.field("_cache", cache);
|
||||
}
|
||||
if (cacheKey != null) {
|
||||
builder.field("_cache_key", cacheKey);
|
||||
}
|
||||
|
||||
builder.endObject();
|
||||
}
|
||||
}
|
|
@ -1,134 +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.index.query;
|
||||
|
||||
import org.apache.lucene.search.Filter;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.cache.filter.support.CacheKeyFilter;
|
||||
import org.elasticsearch.index.mapper.FieldMapper;
|
||||
import org.elasticsearch.index.mapper.MapperService;
|
||||
import org.elasticsearch.index.mapper.core.NumberFieldMapper;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.index.query.support.QueryParsers.wrapSmartNameFilter;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Deprecated
|
||||
public class NumericRangeFilterParser implements FilterParser {
|
||||
|
||||
public static final String NAME = "numeric_range";
|
||||
|
||||
@Inject
|
||||
public NumericRangeFilterParser() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] names() {
|
||||
return new String[]{NAME, "numericRange"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filter parse(QueryParseContext parseContext) throws IOException, QueryParsingException {
|
||||
XContentParser parser = parseContext.parser();
|
||||
|
||||
boolean cache = false; // default to false, since its using fielddata cache
|
||||
CacheKeyFilter.Key cacheKey = null;
|
||||
String fieldName = null;
|
||||
String from = null;
|
||||
String to = null;
|
||||
boolean includeLower = true;
|
||||
boolean includeUpper = true;
|
||||
|
||||
String filterName = null;
|
||||
String currentFieldName = null;
|
||||
XContentParser.Token token;
|
||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||
if (token == XContentParser.Token.FIELD_NAME) {
|
||||
currentFieldName = parser.currentName();
|
||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||
fieldName = currentFieldName;
|
||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||
if (token == XContentParser.Token.FIELD_NAME) {
|
||||
currentFieldName = parser.currentName();
|
||||
} else {
|
||||
if ("from".equals(currentFieldName)) {
|
||||
from = parser.textOrNull();
|
||||
} else if ("to".equals(currentFieldName)) {
|
||||
to = parser.textOrNull();
|
||||
} else if ("include_lower".equals(currentFieldName) || "includeLower".equals(currentFieldName)) {
|
||||
includeLower = parser.booleanValue();
|
||||
} else if ("include_upper".equals(currentFieldName) || "includeUpper".equals(currentFieldName)) {
|
||||
includeUpper = parser.booleanValue();
|
||||
} else if ("gt".equals(currentFieldName)) {
|
||||
from = parser.textOrNull();
|
||||
includeLower = false;
|
||||
} else if ("gte".equals(currentFieldName) || "ge".equals(currentFieldName)) {
|
||||
from = parser.textOrNull();
|
||||
includeLower = true;
|
||||
} else if ("lt".equals(currentFieldName)) {
|
||||
to = parser.textOrNull();
|
||||
includeUpper = false;
|
||||
} else if ("lte".equals(currentFieldName) || "le".equals(currentFieldName)) {
|
||||
to = parser.textOrNull();
|
||||
includeUpper = true;
|
||||
} else {
|
||||
throw new QueryParsingException(parseContext.index(), "[numeric_range] filter does not support [" + currentFieldName + "]");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (token.isValue()) {
|
||||
if ("_name".equals(currentFieldName)) {
|
||||
filterName = parser.text();
|
||||
} else if ("_cache".equals(currentFieldName)) {
|
||||
cache = parser.booleanValue();
|
||||
} else if ("_cache_key".equals(currentFieldName) || "_cacheKey".equals(currentFieldName)) {
|
||||
cacheKey = new CacheKeyFilter.Key(parser.text());
|
||||
} else {
|
||||
throw new QueryParsingException(parseContext.index(), "[numeric_range] filter does not support [" + currentFieldName + "]");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MapperService.SmartNameFieldMappers smartNameFieldMappers = parseContext.smartFieldMappers(fieldName);
|
||||
|
||||
if (smartNameFieldMappers == null || !smartNameFieldMappers.hasMapper()) {
|
||||
throw new QueryParsingException(parseContext.index(), "failed to find mapping for field [" + fieldName + "]");
|
||||
}
|
||||
|
||||
FieldMapper mapper = smartNameFieldMappers.mapper();
|
||||
if (!(mapper instanceof NumberFieldMapper)) {
|
||||
throw new QueryParsingException(parseContext.index(), "Field [" + fieldName + "] is not a numeric type");
|
||||
}
|
||||
Filter filter = ((NumberFieldMapper) mapper).rangeFilter(parseContext, from, to, includeLower, includeUpper, parseContext);
|
||||
|
||||
if (cache) {
|
||||
filter = parseContext.cacheFilter(filter, cacheKey);
|
||||
}
|
||||
filter = wrapSmartNameFilter(filter, smartNameFieldMappers, parseContext);
|
||||
if (filterName != null) {
|
||||
parseContext.addNamedFilter(filterName, filter);
|
||||
}
|
||||
return filter;
|
||||
}
|
||||
}
|
|
@ -125,7 +125,6 @@ public class IndicesQueriesModule extends AbstractModule {
|
|||
fpBinders.addBinding().to(TermFilterParser.class).asEagerSingleton();
|
||||
fpBinders.addBinding().to(TermsFilterParser.class).asEagerSingleton();
|
||||
fpBinders.addBinding().to(RangeFilterParser.class).asEagerSingleton();
|
||||
fpBinders.addBinding().to(NumericRangeFilterParser.class).asEagerSingleton();
|
||||
fpBinders.addBinding().to(PrefixFilterParser.class).asEagerSingleton();
|
||||
fpBinders.addBinding().to(RegexpFilterParser.class).asEagerSingleton();
|
||||
fpBinders.addBinding().to(ScriptFilterParser.class).asEagerSingleton();
|
||||
|
|
|
@ -756,21 +756,6 @@ public class SimpleIndexQueryParserTests extends ElasticsearchSingleNodeTest {
|
|||
assertThat(rangeFilter.includesMax(), equalTo(false));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNumericRangeFilteredQueryBuilder() throws IOException {
|
||||
IndexQueryParserService queryParser = queryParser();
|
||||
Query parsedQuery = queryParser.parse(filteredQuery(termQuery("name.first", "shay"), numericRangeFilter("age").from(23).to(54).includeLower(true).includeUpper(false))).query();
|
||||
assertThat(parsedQuery, instanceOf(XFilteredQuery.class));
|
||||
Filter filter = ((XFilteredQuery) parsedQuery).getFilter();
|
||||
assertThat(filter, instanceOf(NumericRangeFieldDataFilter.class));
|
||||
NumericRangeFieldDataFilter<Number> rangeFilter = (NumericRangeFieldDataFilter<Number>) filter;
|
||||
assertThat(rangeFilter.getField(), equalTo("age"));
|
||||
assertThat(rangeFilter.getLowerVal().intValue(), equalTo(23));
|
||||
assertThat(rangeFilter.getUpperVal().intValue(), equalTo(54));
|
||||
assertThat(rangeFilter.isIncludeLower(), equalTo(true));
|
||||
assertThat(rangeFilter.isIncludeUpper(), equalTo(false));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRangeFilteredQueryBuilder_executionFieldData() throws IOException {
|
||||
IndexQueryParserService queryParser = queryParser();
|
||||
|
@ -786,22 +771,6 @@ public class SimpleIndexQueryParserTests extends ElasticsearchSingleNodeTest {
|
|||
assertThat(rangeFilter.isIncludeUpper(), equalTo(false));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNumericRangeFilteredQuery() throws IOException {
|
||||
IndexQueryParserService queryParser = queryParser();
|
||||
String query = copyToStringFromClasspath("/org/elasticsearch/index/query/numeric_range-filter.json");
|
||||
Query parsedQuery = queryParser.parse(query).query();
|
||||
assertThat(parsedQuery, instanceOf(XFilteredQuery.class));
|
||||
Filter filter = ((XFilteredQuery) parsedQuery).getFilter();
|
||||
assertThat(filter, instanceOf(NumericRangeFieldDataFilter.class));
|
||||
NumericRangeFieldDataFilter<Number> rangeFilter = (NumericRangeFieldDataFilter<Number>) filter;
|
||||
assertThat(rangeFilter.getField(), equalTo("age"));
|
||||
assertThat(rangeFilter.getLowerVal().intValue(), equalTo(23));
|
||||
assertThat(rangeFilter.getUpperVal().intValue(), equalTo(54));
|
||||
assertThat(rangeFilter.isIncludeLower(), equalTo(true));
|
||||
assertThat(rangeFilter.isIncludeUpper(), equalTo(false));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBoolFilteredQueryBuilder() throws IOException {
|
||||
IndexQueryParserService queryParser = queryParser();
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
{
|
||||
"filtered":{
|
||||
"query":{
|
||||
"term":{
|
||||
"name.first":"shay"
|
||||
}
|
||||
},
|
||||
"filter":{
|
||||
"numeric_range":{
|
||||
"age":{
|
||||
"from":"23",
|
||||
"to":"54",
|
||||
"include_lower":true,
|
||||
"include_upper":false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2047,15 +2047,11 @@ public class SimpleQueryTests extends ElasticsearchIntegrationTest {
|
|||
}
|
||||
|
||||
private static FilterBuilder rangeFilter(String field, Object from, Object to) {
|
||||
if (randomBoolean()) {
|
||||
if (randomBoolean()) {
|
||||
return FilterBuilders.rangeFilter(field).from(from).to(to);
|
||||
} else {
|
||||
return FilterBuilders.rangeFilter(field).from(from).to(to).setExecution("fielddata");
|
||||
}
|
||||
} else {
|
||||
return FilterBuilders.numericRangeFilter(field).from(from).to(to);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue