mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-24 13:02:10 +00:00
DATAES-180 - added faceted page back powered by aggregation
This commit is contained in:
parent
6ffac62b3e
commit
392a87ab0a
@ -24,11 +24,15 @@ import org.elasticsearch.search.aggregations.Aggregation;
|
|||||||
import org.elasticsearch.search.aggregations.bucket.histogram.Histogram;
|
import org.elasticsearch.search.aggregations.bucket.histogram.Histogram;
|
||||||
import org.elasticsearch.search.aggregations.bucket.range.Range;
|
import org.elasticsearch.search.aggregations.bucket.range.Range;
|
||||||
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
||||||
import org.elasticsearch.search.aggregations.metrics.stats.Stats;
|
import org.elasticsearch.search.aggregations.metrics.stats.extended.ExtendedStats;
|
||||||
|
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
|
||||||
|
import org.joda.time.DateTime;
|
||||||
import org.springframework.data.domain.PageImpl;
|
import org.springframework.data.domain.PageImpl;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
||||||
|
import org.springframework.data.elasticsearch.core.facet.AbstractFacetRequest;
|
||||||
import org.springframework.data.elasticsearch.core.facet.FacetResult;
|
import org.springframework.data.elasticsearch.core.facet.FacetResult;
|
||||||
|
import org.springframework.data.elasticsearch.core.facet.request.RangeFacetRequest;
|
||||||
import org.springframework.data.elasticsearch.core.facet.result.*;
|
import org.springframework.data.elasticsearch.core.facet.result.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -88,24 +92,35 @@ public abstract class FacetedPageImpl<T> extends PageImpl<T> implements FacetedP
|
|||||||
for (Terms.Bucket t : ((Terms) agg).getBuckets()) {
|
for (Terms.Bucket t : ((Terms) agg).getBuckets()) {
|
||||||
terms.add(new Term(t.getKeyAsString(), t.getDocCount()));
|
terms.add(new Term(t.getKeyAsString(), t.getDocCount()));
|
||||||
}
|
}
|
||||||
addFacet(new TermResult(agg.getName(), terms, terms.size(), ((Terms) agg).getSumOfOtherDocCounts(), -1));
|
addFacet(new TermResult(agg.getName(), terms, terms.size(), ((Terms) agg).getSumOfOtherDocCounts(), 0));
|
||||||
}
|
}
|
||||||
if (agg instanceof Range) {
|
if (agg instanceof Range) {
|
||||||
List<? extends Range.Bucket> buckets = ((Range) agg).getBuckets();
|
List<? extends Range.Bucket> buckets = ((Range) agg).getBuckets();
|
||||||
List<org.springframework.data.elasticsearch.core.facet.result.Range> ranges = new ArrayList<org.springframework.data.elasticsearch.core.facet.result.Range>();
|
List<org.springframework.data.elasticsearch.core.facet.result.Range> ranges = new ArrayList<org.springframework.data.elasticsearch.core.facet.result.Range>();
|
||||||
for (Range.Bucket b : buckets) {
|
for (Range.Bucket b : buckets) {
|
||||||
|
ExtendedStats rStats = (ExtendedStats) b.getAggregations().get(AbstractFacetRequest.INTERNAL_STATS);
|
||||||
|
if (rStats != null) {
|
||||||
|
Sum sum = (Sum) b.getAggregations().get(RangeFacetRequest.RANGE_INTERNAL_SUM);
|
||||||
|
ranges.add(new org.springframework.data.elasticsearch.core.facet.result.Range((Double) b.getFrom(), (Double) b.getTo(), b.getDocCount(), sum != null ? sum.getValue() : rStats.getSum(), rStats.getCount(), rStats.getMin(), rStats.getMax()));
|
||||||
|
} else {
|
||||||
ranges.add(new org.springframework.data.elasticsearch.core.facet.result.Range((Double) b.getFrom(), (Double) b.getTo(), b.getDocCount(), 0, 0, 0, 0));
|
ranges.add(new org.springframework.data.elasticsearch.core.facet.result.Range((Double) b.getFrom(), (Double) b.getTo(), b.getDocCount(), 0, 0, 0, 0));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
addFacet(new RangeResult(agg.getName(), ranges));
|
addFacet(new RangeResult(agg.getName(), ranges));
|
||||||
}
|
}
|
||||||
if (agg instanceof Stats) {
|
if (agg instanceof ExtendedStats) {
|
||||||
Stats stats = (Stats) agg;
|
ExtendedStats stats = (ExtendedStats) agg;
|
||||||
addFacet(new StatisticalResult(agg.getName(), stats.getCount(), stats.getMax(), stats.getMin(), stats.getAvg(), -1, -1, stats.getSum(), -1));
|
addFacet(new StatisticalResult(agg.getName(), stats.getCount(), stats.getMax(), stats.getMin(), stats.getAvg(), stats.getStdDeviation(), stats.getSumOfSquares(), stats.getSum(), stats.getVariance()));
|
||||||
}
|
}
|
||||||
if (agg instanceof Histogram) {
|
if (agg instanceof Histogram) {
|
||||||
List<IntervalUnit> intervals = new ArrayList<IntervalUnit>();
|
List<IntervalUnit> intervals = new ArrayList<IntervalUnit>();
|
||||||
for (Histogram.Bucket h : ((Histogram) agg).getBuckets()) {
|
for (Histogram.Bucket h : ((Histogram) agg).getBuckets()) {
|
||||||
new IntervalUnit((Long) h.getKey(), h.getDocCount(), h.getDocCount(), -1, -1, -1, -1);
|
ExtendedStats hStats = (ExtendedStats) h.getAggregations().get(AbstractFacetRequest.INTERNAL_STATS);
|
||||||
|
if (hStats != null) {
|
||||||
|
intervals.add(new IntervalUnit(((DateTime) h.getKey()).getMillis(), h.getDocCount(), h.getDocCount(), hStats.getSum(), hStats.getAvg(), hStats.getMin(), hStats.getMax()));
|
||||||
|
} else {
|
||||||
|
intervals.add(new IntervalUnit(((DateTime) h.getKey()).getMillis(), h.getDocCount(), h.getDocCount(), 0, 0, 0, 0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
addFacet(new HistogramResult(agg.getName(), intervals));
|
addFacet(new HistogramResult(agg.getName(), intervals));
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,8 @@ import org.springframework.util.Assert;
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public abstract class AbstractFacetRequest implements FacetRequest {
|
public abstract class AbstractFacetRequest implements FacetRequest {
|
||||||
|
|
||||||
|
public static final String INTERNAL_STATS = "internal-stats";
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private boolean applyQueryFilter;
|
private boolean applyQueryFilter;
|
||||||
|
|
||||||
|
@ -1,81 +0,0 @@
|
|||||||
///*
|
|
||||||
// * Copyright 2014 the original author or authors.
|
|
||||||
// *
|
|
||||||
// * Licensed 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.springframework.data.elasticsearch.core.facet;
|
|
||||||
//
|
|
||||||
//import java.util.ArrayList;
|
|
||||||
//import java.util.List;
|
|
||||||
//
|
|
||||||
//import org.elasticsearch.search.facet.Facet;
|
|
||||||
//import org.elasticsearch.search.facet.histogram.HistogramFacet;
|
|
||||||
//import org.elasticsearch.search.facet.range.RangeFacet;
|
|
||||||
//import org.elasticsearch.search.facet.statistical.StatisticalFacet;
|
|
||||||
//import org.elasticsearch.search.facet.terms.TermsFacet;
|
|
||||||
//import org.springframework.data.elasticsearch.core.facet.result.*;
|
|
||||||
//
|
|
||||||
///**
|
|
||||||
// * @author Artur Konczak
|
|
||||||
// * @author Petar Tahchiev
|
|
||||||
// */
|
|
||||||
//public class DefaultFacetMapper {
|
|
||||||
//
|
|
||||||
// public static FacetResult parse(Facet facet) {
|
|
||||||
// if (facet instanceof TermsFacet) {
|
|
||||||
// return parseTerm((TermsFacet) facet);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (facet instanceof RangeFacet) {
|
|
||||||
// return parseRange((RangeFacet) facet);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (facet instanceof StatisticalFacet) {
|
|
||||||
// return parseStatistical((StatisticalFacet) facet);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (facet instanceof HistogramFacet) {
|
|
||||||
// return parseHistogram((HistogramFacet) facet);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private static FacetResult parseTerm(TermsFacet facet) {
|
|
||||||
// List<Term> entries = new ArrayList<Term>();
|
|
||||||
// for (TermsFacet.Entry entry : facet.getEntries()) {
|
|
||||||
// entries.add(new Term(entry.getTerm().toString(), entry.getCount()));
|
|
||||||
// }
|
|
||||||
// return new TermResult(facet.getName(), entries, facet.getTotalCount(), facet.getOtherCount(), facet.getMissingCount());
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private static FacetResult parseRange(RangeFacet facet) {
|
|
||||||
// List<Range> entries = new ArrayList<Range>();
|
|
||||||
// for (RangeFacet.Entry entry : facet.getEntries()) {
|
|
||||||
// entries.add(new Range(entry.getFrom() == Double.NEGATIVE_INFINITY ? null : entry.getFrom(), entry.getTo() == Double.POSITIVE_INFINITY ? null : entry.getTo(), entry.getCount(), entry.getTotal(), entry.getTotalCount(), entry.getMin(), entry.getMax()));
|
|
||||||
// }
|
|
||||||
// return new RangeResult(facet.getName(), entries);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private static FacetResult parseStatistical(StatisticalFacet facet) {
|
|
||||||
// return new StatisticalResult(facet.getName(), facet.getCount(), facet.getMax(), facet.getMin(), facet.getMean(), facet.getStdDeviation(), facet.getSumOfSquares(), facet.getTotal(), facet.getVariance());
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private static FacetResult parseHistogram(HistogramFacet facet) {
|
|
||||||
// List<IntervalUnit> entries = new ArrayList<IntervalUnit>();
|
|
||||||
// for (HistogramFacet.Entry entry : facet.getEntries()) {
|
|
||||||
// entries.add(new IntervalUnit(entry.getKey(), entry.getCount(), entry.getTotalCount(), entry.getTotal(), entry.getMean(), entry.getMin(), entry.getMax()));
|
|
||||||
// }
|
|
||||||
// return new HistogramResult(facet.getName(), entries);
|
|
||||||
// }
|
|
||||||
//}
|
|
@ -66,6 +66,8 @@ public class HistogramFacetRequest extends AbstractFacetRequest {
|
|||||||
dateHistogramBuilder.interval(interval);
|
dateHistogramBuilder.interval(interval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dateHistogramBuilder.subAggregation(AggregationBuilders.extendedStats(INTERNAL_STATS));
|
||||||
|
|
||||||
return dateHistogramBuilder;
|
return dateHistogramBuilder;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -19,6 +19,7 @@ package org.springframework.data.elasticsearch.core.facet.request;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
|
import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
|
||||||
import org.elasticsearch.search.aggregations.AggregationBuilders;
|
import org.elasticsearch.search.aggregations.AggregationBuilders;
|
||||||
import org.elasticsearch.search.aggregations.bucket.range.RangeBuilder;
|
import org.elasticsearch.search.aggregations.bucket.range.RangeBuilder;
|
||||||
@ -35,6 +36,7 @@ import org.springframework.util.Assert;
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public class RangeFacetRequest extends AbstractFacetRequest {
|
public class RangeFacetRequest extends AbstractFacetRequest {
|
||||||
|
|
||||||
|
public static final String RANGE_INTERNAL_SUM = "range-internal-sum";
|
||||||
private String field;
|
private String field;
|
||||||
private String keyField;
|
private String keyField;
|
||||||
private String valueField;
|
private String valueField;
|
||||||
@ -50,7 +52,8 @@ public class RangeFacetRequest extends AbstractFacetRequest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setFields(String keyField, String valueField) {
|
public void setFields(String keyField, String valueField) {
|
||||||
throw new UnsupportedOperationException("Native Facet are not supported in Elasticsearch 2.x - use Aggregation");
|
this.keyField = keyField;
|
||||||
|
this.valueField = valueField;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void range(Double from, Double to) {
|
public void range(Double from, Double to) {
|
||||||
@ -74,13 +77,18 @@ public class RangeFacetRequest extends AbstractFacetRequest {
|
|||||||
Assert.notNull(getName(), "Facet name can't be a null !!!");
|
Assert.notNull(getName(), "Facet name can't be a null !!!");
|
||||||
|
|
||||||
RangeBuilder rangeBuilder = AggregationBuilders.range(getName());
|
RangeBuilder rangeBuilder = AggregationBuilders.range(getName());
|
||||||
rangeBuilder.field(field);
|
rangeBuilder.field(StringUtils.isNotBlank(keyField) ? keyField : field );
|
||||||
|
|
||||||
for (Entry entry : entries) {
|
for (Entry entry : entries) {
|
||||||
DoubleEntry doubleEntry = (DoubleEntry) entry;
|
DoubleEntry doubleEntry = (DoubleEntry) entry;
|
||||||
rangeBuilder.addRange(validateValue(doubleEntry.getFrom(), Double.NEGATIVE_INFINITY), validateValue(doubleEntry.getTo(), Double.POSITIVE_INFINITY));
|
rangeBuilder.addRange(validateValue(doubleEntry.getFrom(), Double.NEGATIVE_INFINITY), validateValue(doubleEntry.getTo(), Double.POSITIVE_INFINITY));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rangeBuilder.subAggregation(AggregationBuilders.extendedStats(INTERNAL_STATS));
|
||||||
|
if(StringUtils.isNotBlank(valueField)){
|
||||||
|
rangeBuilder.subAggregation(AggregationBuilders.sum(RANGE_INTERNAL_SUM).field(valueField));
|
||||||
|
}
|
||||||
|
|
||||||
return rangeBuilder;
|
return rangeBuilder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,6 +48,6 @@ public class StatisticalFacetRequest extends AbstractFacetRequest {
|
|||||||
public AbstractAggregationBuilder getFacet() {
|
public AbstractAggregationBuilder getFacet() {
|
||||||
Assert.notNull(getName(), "Facet name can't be a null !!!");
|
Assert.notNull(getName(), "Facet name can't be a null !!!");
|
||||||
Assert.isTrue(StringUtils.isNotBlank(field) && fields == null, "Please select field or fields on which to build the facets !!!");
|
Assert.isTrue(StringUtils.isNotBlank(field) && fields == null, "Please select field or fields on which to build the facets !!!");
|
||||||
return AggregationBuilders.stats(getName()).field(field);
|
return AggregationBuilders.extendedStats(getName()).field(field);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -46,8 +46,8 @@ public class TermFacetRequest extends AbstractFacetRequest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setFields(String... fields) {
|
public void setFields(String... fields) {
|
||||||
Assert.isTrue(ArrayUtils.isNotEmpty(fields), "Term agg need one field");
|
Assert.isTrue(ArrayUtils.isNotEmpty(fields), "Term agg need one field only");
|
||||||
Assert.isTrue(ArrayUtils.getLength(fields) == 1, "Term agg need one field");
|
Assert.isTrue(ArrayUtils.getLength(fields) == 1, "Term agg need one field only");
|
||||||
this.fields = fields;
|
this.fields = fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,11 +84,11 @@ public class TermFacetRequest extends AbstractFacetRequest {
|
|||||||
case ascTerm:
|
case ascTerm:
|
||||||
termsBuilder.order(Terms.Order.term(true));
|
termsBuilder.order(Terms.Order.term(true));
|
||||||
break;
|
break;
|
||||||
case ascCount:
|
case descCount:
|
||||||
termsBuilder.order(Terms.Order.count(true));
|
termsBuilder.order(Terms.Order.count(false));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
termsBuilder.order(Terms.Order.count(false));
|
termsBuilder.order(Terms.Order.count(true));
|
||||||
}
|
}
|
||||||
if (ArrayUtils.isNotEmpty(excludeTerms)) {
|
if (ArrayUtils.isNotEmpty(excludeTerms)) {
|
||||||
termsBuilder.exclude(excludeTerms);
|
termsBuilder.exclude(excludeTerms);
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*//*
|
*/
|
||||||
|
|
||||||
package org.springframework.data.elasticsearch.core.facet;
|
package org.springframework.data.elasticsearch.core.facet;
|
||||||
|
|
||||||
@ -20,8 +20,6 @@ import static org.elasticsearch.index.query.QueryBuilders.*;
|
|||||||
import static org.hamcrest.Matchers.*;
|
import static org.hamcrest.Matchers.*;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
import org.elasticsearch.index.query.FilterBuilders;
|
|
||||||
import org.elasticsearch.search.facet.FacetBuilders;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@ -36,13 +34,12 @@ import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
|||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
/**
|
||||||
* @author Rizwan Idrees
|
* @author Rizwan Idrees
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
* @author Jonathan Yan
|
* @author Jonathan Yan
|
||||||
* @author Artur Konczak
|
* @author Artur Konczak
|
||||||
*//*
|
*/
|
||||||
|
|
||||||
@RunWith(SpringJUnit4ClassRunner.class)
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
@ContextConfiguration("classpath:elasticsearch-template-test.xml")
|
@ContextConfiguration("classpath:elasticsearch-template-test.xml")
|
||||||
@ -64,7 +61,7 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
elasticsearchTemplate.deleteIndex(ArticleEntity.class);
|
elasticsearchTemplate.deleteIndex(ArticleEntity.class);
|
||||||
elasticsearchTemplate.createIndex(ArticleEntity.class);
|
elasticsearchTemplate.createIndex(ArticleEntity.class);
|
||||||
elasticsearchTemplate.putMapping(ArticleEntity.class);
|
elasticsearchTemplate.putMapping(ArticleEntity.class);
|
||||||
elasticsearchTemplate.refresh(ArticleEntity.class, true);
|
elasticsearchTemplate.refresh(ArticleEntity.class);
|
||||||
|
|
||||||
IndexQuery article1 = new ArticleEntityBuilder("1").title("article four").addAuthor(RIZWAN_IDREES).addAuthor(ARTUR_KONCZAK).addAuthor(MOHSIN_HUSEN).addAuthor(JONATHAN_YAN).score(10).buildIndex();
|
IndexQuery article1 = new ArticleEntityBuilder("1").title("article four").addAuthor(RIZWAN_IDREES).addAuthor(ARTUR_KONCZAK).addAuthor(MOHSIN_HUSEN).addAuthor(JONATHAN_YAN).score(10).buildIndex();
|
||||||
IndexQuery article2 = new ArticleEntityBuilder("2").title("article three").addAuthor(RIZWAN_IDREES).addAuthor(ARTUR_KONCZAK).addAuthor(MOHSIN_HUSEN).addPublishedYear(YEAR_2000).score(20).buildIndex();
|
IndexQuery article2 = new ArticleEntityBuilder("2").title("article three").addAuthor(RIZWAN_IDREES).addAuthor(ARTUR_KONCZAK).addAuthor(MOHSIN_HUSEN).addPublishedYear(YEAR_2000).score(20).buildIndex();
|
||||||
@ -75,7 +72,7 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
elasticsearchTemplate.index(article2);
|
elasticsearchTemplate.index(article2);
|
||||||
elasticsearchTemplate.index(article3);
|
elasticsearchTemplate.index(article3);
|
||||||
elasticsearchTemplate.index(article4);
|
elasticsearchTemplate.index(article4);
|
||||||
elasticsearchTemplate.refresh(ArticleEntity.class, true);
|
elasticsearchTemplate.refresh(ArticleEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -92,21 +89,21 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
TermResult facet = (TermResult) result.getFacet(facetName);
|
TermResult facet = (TermResult) result.getFacet(facetName);
|
||||||
Term term = facet.getTerms().get(0);
|
Term term = facet.getTerms().get(0);
|
||||||
assertThat(term.getTerm(), is(RIZWAN_IDREES));
|
assertThat(term.getTerm(), is(RIZWAN_IDREES));
|
||||||
assertThat(term.getCount(), is(4));
|
assertThat(term.getCount(), is(4l));
|
||||||
|
|
||||||
term = facet.getTerms().get(1);
|
term = facet.getTerms().get(1);
|
||||||
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
||||||
assertThat(term.getCount(), is(3));
|
assertThat(term.getCount(), is(3l));
|
||||||
|
|
||||||
term = facet.getTerms().get(2);
|
term = facet.getTerms().get(2);
|
||||||
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
||||||
assertThat(term.getCount(), is(2));
|
assertThat(term.getCount(), is(2l));
|
||||||
|
|
||||||
term = facet.getTerms().get(3);
|
term = facet.getTerms().get(3);
|
||||||
assertThat(term.getTerm(), is(JONATHAN_YAN));
|
assertThat(term.getTerm(), is(JONATHAN_YAN));
|
||||||
assertThat(term.getCount(), is(1));
|
assertThat(term.getCount(), is(1l));
|
||||||
|
|
||||||
assertThat(facet.getTotal(), is(10l));
|
assertThat(facet.getTotal(), is(4l));
|
||||||
assertThat(facet.getOther(), is(0l));
|
assertThat(facet.getOther(), is(0l));
|
||||||
assertThat(facet.getMissing(), is(0l));
|
assertThat(facet.getMissing(), is(0l));
|
||||||
}
|
}
|
||||||
@ -117,27 +114,26 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
// given
|
// given
|
||||||
String facetName = "fauthors";
|
String facetName = "fauthors";
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
||||||
.withFilter(FilterBuilders.notFilter(FilterBuilders.termFilter("title", "four")))
|
|
||||||
.withFacet(new TermFacetRequestBuilder(facetName).applyQueryFilter().fields("authors.untouched").build()).build();
|
.withFacet(new TermFacetRequestBuilder(facetName).applyQueryFilter().fields("authors.untouched").build()).build();
|
||||||
// when
|
// when
|
||||||
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
||||||
// then
|
// then
|
||||||
assertThat(result.getNumberOfElements(), is(equalTo(3)));
|
assertThat(result.getNumberOfElements(), is(equalTo(4)));
|
||||||
|
|
||||||
TermResult facet = (TermResult) result.getFacet(facetName);
|
TermResult facet = (TermResult) result.getFacet(facetName);
|
||||||
Term term = facet.getTerms().get(0);
|
Term term = facet.getTerms().get(0);
|
||||||
assertThat(term.getTerm(), is(RIZWAN_IDREES));
|
assertThat(term.getTerm(), is(RIZWAN_IDREES));
|
||||||
assertThat(term.getCount(), is(3));
|
assertThat(term.getCount(), is(4l));
|
||||||
|
|
||||||
term = facet.getTerms().get(1);
|
term = facet.getTerms().get(1);
|
||||||
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
||||||
assertThat(term.getCount(), is(2));
|
assertThat(term.getCount(), is(3l));
|
||||||
|
|
||||||
term = facet.getTerms().get(2);
|
term = facet.getTerms().get(2);
|
||||||
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
||||||
assertThat(term.getCount(), is(1));
|
assertThat(term.getCount(), is(2l));
|
||||||
|
|
||||||
assertThat(facet.getTotal(), is(6l));
|
assertThat(facet.getTotal(), is(4l));
|
||||||
assertThat(facet.getOther(), is(0l));
|
assertThat(facet.getOther(), is(0l));
|
||||||
assertThat(facet.getMissing(), is(0l));
|
assertThat(facet.getMissing(), is(0l));
|
||||||
}
|
}
|
||||||
@ -147,23 +143,26 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
// given
|
// given
|
||||||
String facetName = "fauthors";
|
String facetName = "fauthors";
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
||||||
.withFilter(FilterBuilders.notFilter(FilterBuilders.termFilter("title", "four")))
|
|
||||||
.withFacet(new TermFacetRequestBuilder(facetName).applyQueryFilter().fields("authors.untouched").excludeTerms(RIZWAN_IDREES, ARTUR_KONCZAK).build()).build();
|
.withFacet(new TermFacetRequestBuilder(facetName).applyQueryFilter().fields("authors.untouched").excludeTerms(RIZWAN_IDREES, ARTUR_KONCZAK).build()).build();
|
||||||
// when
|
// when
|
||||||
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
||||||
// then
|
// then
|
||||||
assertThat(result.getNumberOfElements(), is(equalTo(3)));
|
assertThat(result.getNumberOfElements(), is(equalTo(4)));
|
||||||
|
|
||||||
TermResult facet = (TermResult) result.getFacet(facetName);
|
TermResult facet = (TermResult) result.getFacet(facetName);
|
||||||
|
|
||||||
assertThat(facet.getTerms().size(), is(1));
|
assertThat(facet.getTerms().size(), is(2));
|
||||||
|
|
||||||
Term term = facet.getTerms().get(0);
|
Term term = facet.getTerms().get(0);
|
||||||
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
||||||
assertThat(term.getCount(), is(1));
|
assertThat(term.getCount(), is(2l));
|
||||||
|
|
||||||
assertThat(facet.getTotal(), is(6l));
|
Term term1 = facet.getTerms().get(1);
|
||||||
assertThat(facet.getOther(), is(5l));
|
assertThat(term1.getTerm(), is(JONATHAN_YAN));
|
||||||
|
assertThat(term1.getCount(), is(1l));
|
||||||
|
|
||||||
|
assertThat(facet.getTotal(), is(2l));
|
||||||
|
assertThat(facet.getOther(), is(0l));
|
||||||
assertThat(facet.getMissing(), is(0l));
|
assertThat(facet.getMissing(), is(0l));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,21 +181,21 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
TermResult facet = (TermResult) result.getFacet(facetName);
|
TermResult facet = (TermResult) result.getFacet(facetName);
|
||||||
Term term = facet.getTerms().get(0);
|
Term term = facet.getTerms().get(0);
|
||||||
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
||||||
assertThat(term.getCount(), is(3));
|
assertThat(term.getCount(), is(3l));
|
||||||
|
|
||||||
term = facet.getTerms().get(1);
|
term = facet.getTerms().get(1);
|
||||||
assertThat(term.getTerm(), is(JONATHAN_YAN));
|
assertThat(term.getTerm(), is(JONATHAN_YAN));
|
||||||
assertThat(term.getCount(), is(1));
|
assertThat(term.getCount(), is(1l));
|
||||||
|
|
||||||
term = facet.getTerms().get(2);
|
term = facet.getTerms().get(2);
|
||||||
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
||||||
assertThat(term.getCount(), is(2));
|
assertThat(term.getCount(), is(2l));
|
||||||
|
|
||||||
term = facet.getTerms().get(3);
|
term = facet.getTerms().get(3);
|
||||||
assertThat(term.getTerm(), is(RIZWAN_IDREES));
|
assertThat(term.getTerm(), is(RIZWAN_IDREES));
|
||||||
assertThat(term.getCount(), is(4));
|
assertThat(term.getCount(), is(4l));
|
||||||
|
|
||||||
assertThat(facet.getTotal(), is(10l));
|
assertThat(facet.getTotal(), is(4l));
|
||||||
assertThat(facet.getOther(), is(0l));
|
assertThat(facet.getOther(), is(0l));
|
||||||
assertThat(facet.getMissing(), is(0l));
|
assertThat(facet.getMissing(), is(0l));
|
||||||
}
|
}
|
||||||
@ -216,21 +215,21 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
TermResult facet = (TermResult) result.getFacet(facetName);
|
TermResult facet = (TermResult) result.getFacet(facetName);
|
||||||
Term term = facet.getTerms().get(0);
|
Term term = facet.getTerms().get(0);
|
||||||
assertThat(term.getTerm(), is(JONATHAN_YAN));
|
assertThat(term.getTerm(), is(JONATHAN_YAN));
|
||||||
assertThat(term.getCount(), is(1));
|
assertThat(term.getCount(), is(1l));
|
||||||
|
|
||||||
term = facet.getTerms().get(1);
|
term = facet.getTerms().get(1);
|
||||||
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
||||||
assertThat(term.getCount(), is(2));
|
assertThat(term.getCount(), is(2l));
|
||||||
|
|
||||||
term = facet.getTerms().get(2);
|
term = facet.getTerms().get(2);
|
||||||
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
||||||
assertThat(term.getCount(), is(3));
|
assertThat(term.getCount(), is(3l));
|
||||||
|
|
||||||
term = facet.getTerms().get(3);
|
term = facet.getTerms().get(3);
|
||||||
assertThat(term.getTerm(), is(RIZWAN_IDREES));
|
assertThat(term.getTerm(), is(RIZWAN_IDREES));
|
||||||
assertThat(term.getCount(), is(4));
|
assertThat(term.getCount(), is(4l));
|
||||||
|
|
||||||
assertThat(facet.getTotal(), is(10l));
|
assertThat(facet.getTotal(), is(4l));
|
||||||
assertThat(facet.getOther(), is(0l));
|
assertThat(facet.getOther(), is(0l));
|
||||||
assertThat(facet.getMissing(), is(0l));
|
assertThat(facet.getMissing(), is(0l));
|
||||||
}
|
}
|
||||||
@ -252,19 +251,19 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
|
|
||||||
Term term = facet.getTerms().get(0);
|
Term term = facet.getTerms().get(0);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2000)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2000)));
|
||||||
assertThat(term.getCount(), is(3));
|
assertThat(term.getCount(), is(3l));
|
||||||
|
|
||||||
term = facet.getTerms().get(1);
|
term = facet.getTerms().get(1);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2001)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2001)));
|
||||||
assertThat(term.getCount(), is(2));
|
assertThat(term.getCount(), is(2l));
|
||||||
|
|
||||||
term = facet.getTerms().get(2);
|
term = facet.getTerms().get(2);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2002)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2002)));
|
||||||
assertThat(term.getCount(), is(1));
|
assertThat(term.getCount(), is(1l));
|
||||||
|
|
||||||
assertThat(facet.getTotal(), is(6l));
|
assertThat(facet.getTotal(), is(3l));
|
||||||
assertThat(facet.getOther(), is(0l));
|
assertThat(facet.getOther(), is(0l));
|
||||||
assertThat(facet.getMissing(), is(1l));
|
assertThat(facet.getMissing(), is(0l));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -273,36 +272,35 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
// given
|
// given
|
||||||
String facetName = "fyears";
|
String facetName = "fyears";
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
||||||
.withFilter(FilterBuilders.notFilter(FilterBuilders.missingFilter("publishedYears")))
|
|
||||||
.withFacet(new TermFacetRequestBuilder(facetName).applyQueryFilter().fields("publishedYears").descCount().build()).build();
|
.withFacet(new TermFacetRequestBuilder(facetName).applyQueryFilter().fields("publishedYears").descCount().build()).build();
|
||||||
// when
|
// when
|
||||||
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
||||||
// then
|
// then
|
||||||
assertThat(result.getNumberOfElements(), is(equalTo(3)));
|
assertThat(result.getNumberOfElements(), is(equalTo(4)));
|
||||||
|
|
||||||
TermResult facet = (TermResult) result.getFacet(facetName);
|
TermResult facet = (TermResult) result.getFacet(facetName);
|
||||||
assertThat(facet.getTerms().size(), is(equalTo(3)));
|
assertThat(facet.getTerms().size(), is(equalTo(3)));
|
||||||
|
|
||||||
Term term = facet.getTerms().get(0);
|
Term term = facet.getTerms().get(0);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2000)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2000)));
|
||||||
assertThat(term.getCount(), is(3));
|
assertThat(term.getCount(), is(3l));
|
||||||
|
|
||||||
term = facet.getTerms().get(1);
|
term = facet.getTerms().get(1);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2001)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2001)));
|
||||||
assertThat(term.getCount(), is(2));
|
assertThat(term.getCount(), is(2l));
|
||||||
|
|
||||||
term = facet.getTerms().get(2);
|
term = facet.getTerms().get(2);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2002)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2002)));
|
||||||
assertThat(term.getCount(), is(1));
|
assertThat(term.getCount(), is(1l));
|
||||||
|
|
||||||
assertThat(facet.getTotal(), is(6l));
|
assertThat(facet.getTotal(), is(3l));
|
||||||
assertThat(facet.getOther(), is(0l));
|
assertThat(facet.getOther(), is(0l));
|
||||||
assertThat(facet.getMissing(), is(0l));
|
assertThat(facet.getMissing(), is(0l));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test(expected = IllegalArgumentException.class)
|
||||||
public void shouldReturnSingleFacetOverYearsAndAuthorsForGivenQuery() {
|
public void shouldThrowExeptionsForMultiFieldFacet() {
|
||||||
|
|
||||||
// given
|
// given
|
||||||
String facetName = "fyears";
|
String facetName = "fyears";
|
||||||
@ -318,31 +316,31 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
|
|
||||||
Term term = facet.getTerms().get(0);
|
Term term = facet.getTerms().get(0);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2000)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2000)));
|
||||||
assertThat(term.getCount(), is(3));
|
assertThat(term.getCount(), is(3l));
|
||||||
|
|
||||||
term = facet.getTerms().get(1);
|
term = facet.getTerms().get(1);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2001)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2001)));
|
||||||
assertThat(term.getCount(), is(2));
|
assertThat(term.getCount(), is(2l));
|
||||||
|
|
||||||
term = facet.getTerms().get(2);
|
term = facet.getTerms().get(2);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2002)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2002)));
|
||||||
assertThat(term.getCount(), is(1));
|
assertThat(term.getCount(), is(1l));
|
||||||
|
|
||||||
term = facet.getTerms().get(3);
|
term = facet.getTerms().get(3);
|
||||||
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
||||||
assertThat(term.getCount(), is(3));
|
assertThat(term.getCount(), is(3l));
|
||||||
|
|
||||||
term = facet.getTerms().get(4);
|
term = facet.getTerms().get(4);
|
||||||
assertThat(term.getTerm(), is(JONATHAN_YAN));
|
assertThat(term.getTerm(), is(JONATHAN_YAN));
|
||||||
assertThat(term.getCount(), is(1));
|
assertThat(term.getCount(), is(1l));
|
||||||
|
|
||||||
term = facet.getTerms().get(5);
|
term = facet.getTerms().get(5);
|
||||||
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
assertThat(term.getTerm(), is(MOHSIN_HUSEN));
|
||||||
assertThat(term.getCount(), is(2));
|
assertThat(term.getCount(), is(2l));
|
||||||
|
|
||||||
term = facet.getTerms().get(6);
|
term = facet.getTerms().get(6);
|
||||||
assertThat(term.getTerm(), is(RIZWAN_IDREES));
|
assertThat(term.getTerm(), is(RIZWAN_IDREES));
|
||||||
assertThat(term.getCount(), is(4));
|
assertThat(term.getCount(), is(4l));
|
||||||
|
|
||||||
assertThat(facet.getTotal(), is(16l));
|
assertThat(facet.getTotal(), is(16l));
|
||||||
assertThat(facet.getOther(), is(0l));
|
assertThat(facet.getOther(), is(0l));
|
||||||
@ -369,46 +367,46 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
|
|
||||||
Term numberTerm = numberFacet.getTerms().get(0);
|
Term numberTerm = numberFacet.getTerms().get(0);
|
||||||
assertThat(numberTerm.getTerm(), is(Integer.toString(YEAR_2000)));
|
assertThat(numberTerm.getTerm(), is(Integer.toString(YEAR_2000)));
|
||||||
assertThat(numberTerm.getCount(), is(3));
|
assertThat(numberTerm.getCount(), is(3l));
|
||||||
|
|
||||||
numberTerm = numberFacet.getTerms().get(1);
|
numberTerm = numberFacet.getTerms().get(1);
|
||||||
assertThat(numberTerm.getTerm(), is(Integer.toString(YEAR_2001)));
|
assertThat(numberTerm.getTerm(), is(Integer.toString(YEAR_2001)));
|
||||||
assertThat(numberTerm.getCount(), is(2));
|
assertThat(numberTerm.getCount(), is(2l));
|
||||||
|
|
||||||
numberTerm = numberFacet.getTerms().get(2);
|
numberTerm = numberFacet.getTerms().get(2);
|
||||||
assertThat(numberTerm.getTerm(), is(Integer.toString(YEAR_2002)));
|
assertThat(numberTerm.getTerm(), is(Integer.toString(YEAR_2002)));
|
||||||
assertThat(numberTerm.getCount(), is(1));
|
assertThat(numberTerm.getCount(), is(1l));
|
||||||
|
|
||||||
TermResult stringFacet = (TermResult) result.getFacet(stringFacetName);
|
TermResult stringFacet = (TermResult) result.getFacet(stringFacetName);
|
||||||
Term stringTerm = stringFacet.getTerms().get(0);
|
Term stringTerm = stringFacet.getTerms().get(0);
|
||||||
assertThat(stringTerm.getTerm(), is(ARTUR_KONCZAK));
|
assertThat(stringTerm.getTerm(), is(ARTUR_KONCZAK));
|
||||||
assertThat(stringTerm.getCount(), is(3));
|
assertThat(stringTerm.getCount(), is(3l));
|
||||||
|
|
||||||
stringTerm = stringFacet.getTerms().get(1);
|
stringTerm = stringFacet.getTerms().get(1);
|
||||||
assertThat(stringTerm.getTerm(), is(JONATHAN_YAN));
|
assertThat(stringTerm.getTerm(), is(JONATHAN_YAN));
|
||||||
assertThat(stringTerm.getCount(), is(1));
|
assertThat(stringTerm.getCount(), is(1l));
|
||||||
|
|
||||||
stringTerm = stringFacet.getTerms().get(2);
|
stringTerm = stringFacet.getTerms().get(2);
|
||||||
assertThat(stringTerm.getTerm(), is(MOHSIN_HUSEN));
|
assertThat(stringTerm.getTerm(), is(MOHSIN_HUSEN));
|
||||||
assertThat(stringTerm.getCount(), is(2));
|
assertThat(stringTerm.getCount(), is(2l));
|
||||||
|
|
||||||
stringTerm = stringFacet.getTerms().get(3);
|
stringTerm = stringFacet.getTerms().get(3);
|
||||||
assertThat(stringTerm.getTerm(), is(RIZWAN_IDREES));
|
assertThat(stringTerm.getTerm(), is(RIZWAN_IDREES));
|
||||||
assertThat(stringTerm.getCount(), is(4));
|
assertThat(stringTerm.getCount(), is(4l));
|
||||||
|
|
||||||
assertThat(stringFacet.getTotal(), is(10l));
|
assertThat(stringFacet.getTotal(), is(4l));
|
||||||
assertThat(stringFacet.getOther(), is(0l));
|
assertThat(stringFacet.getOther(), is(0l));
|
||||||
assertThat(stringFacet.getMissing(), is(0l));
|
assertThat(stringFacet.getMissing(), is(0l));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test(expected = UnsupportedOperationException.class)
|
||||||
public void shouldReturnFacetedYearsForNativeFacet() {
|
public void shouldThrowExceptionForNativeFacets() {
|
||||||
|
|
||||||
// given
|
// given
|
||||||
String facetName = "fyears";
|
String facetName = "fyears";
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
||||||
.withFacet(new NativeFacetRequest(FacetBuilders.termsFacet(facetName).field("publishedYears"))).build();
|
.withFacet(new NativeFacetRequest()).build();
|
||||||
// when
|
// when
|
||||||
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
||||||
// then
|
// then
|
||||||
@ -419,15 +417,15 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
|
|
||||||
Term term = facet.getTerms().get(0);
|
Term term = facet.getTerms().get(0);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2000)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2000)));
|
||||||
assertThat(term.getCount(), is(3));
|
assertThat(term.getCount(), is(3l));
|
||||||
|
|
||||||
term = facet.getTerms().get(1);
|
term = facet.getTerms().get(1);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2001)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2001)));
|
||||||
assertThat(term.getCount(), is(2));
|
assertThat(term.getCount(), is(2l));
|
||||||
|
|
||||||
term = facet.getTerms().get(2);
|
term = facet.getTerms().get(2);
|
||||||
assertThat(term.getTerm(), is(Integer.toString(YEAR_2002)));
|
assertThat(term.getTerm(), is(Integer.toString(YEAR_2002)));
|
||||||
assertThat(term.getCount(), is(1));
|
assertThat(term.getCount(), is(1l));
|
||||||
|
|
||||||
assertThat(facet.getTotal(), is(6l));
|
assertThat(facet.getTotal(), is(6l));
|
||||||
assertThat(facet.getOther(), is(0l));
|
assertThat(facet.getOther(), is(0l));
|
||||||
@ -439,12 +437,11 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
// given
|
// given
|
||||||
String facetName = "regex_authors";
|
String facetName = "regex_authors";
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
||||||
.withFilter(FilterBuilders.notFilter(FilterBuilders.termFilter("title", "four")))
|
|
||||||
.withFacet(new TermFacetRequestBuilder(facetName).applyQueryFilter().fields("authors.untouched").regex("Art.*").build()).build();
|
.withFacet(new TermFacetRequestBuilder(facetName).applyQueryFilter().fields("authors.untouched").regex("Art.*").build()).build();
|
||||||
// when
|
// when
|
||||||
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
||||||
// then
|
// then
|
||||||
assertThat(result.getNumberOfElements(), is(equalTo(3)));
|
assertThat(result.getNumberOfElements(), is(equalTo(4)));
|
||||||
|
|
||||||
TermResult facet = (TermResult) result.getFacet(facetName);
|
TermResult facet = (TermResult) result.getFacet(facetName);
|
||||||
|
|
||||||
@ -452,10 +449,10 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
|
|
||||||
Term term = facet.getTerms().get(0);
|
Term term = facet.getTerms().get(0);
|
||||||
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
assertThat(term.getTerm(), is(ARTUR_KONCZAK));
|
||||||
assertThat(term.getCount(), is(2));
|
assertThat(term.getCount(), is(3l));
|
||||||
|
|
||||||
assertThat(facet.getTotal(), is(6l));
|
assertThat(facet.getTotal(), is(1l));
|
||||||
assertThat(facet.getOther(), is(4l));
|
assertThat(facet.getOther(), is(0l));
|
||||||
assertThat(facet.getMissing(), is(0l));
|
assertThat(facet.getMissing(), is(0l));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -464,18 +461,17 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
// given
|
// given
|
||||||
String facetName = "all_authors";
|
String facetName = "all_authors";
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
||||||
.withFilter(FilterBuilders.notFilter(FilterBuilders.termFilter("title", "four")))
|
|
||||||
.withFacet(new TermFacetRequestBuilder(facetName).applyQueryFilter().fields("authors.untouched").allTerms().build()).build();
|
.withFacet(new TermFacetRequestBuilder(facetName).applyQueryFilter().fields("authors.untouched").allTerms().build()).build();
|
||||||
// when
|
// when
|
||||||
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
||||||
// then
|
// then
|
||||||
assertThat(result.getNumberOfElements(), is(equalTo(3)));
|
assertThat(result.getNumberOfElements(), is(equalTo(4)));
|
||||||
|
|
||||||
TermResult facet = (TermResult) result.getFacet(facetName);
|
TermResult facet = (TermResult) result.getFacet(facetName);
|
||||||
|
|
||||||
assertThat(facet.getTerms().size(), is(4));
|
assertThat(facet.getTerms().size(), is(4));
|
||||||
|
|
||||||
assertThat(facet.getTotal(), is(6l));
|
assertThat(facet.getTotal(), is(4l));
|
||||||
assertThat(facet.getOther(), is(0l));
|
assertThat(facet.getOther(), is(0l));
|
||||||
assertThat(facet.getMissing(), is(0l));
|
assertThat(facet.getMissing(), is(0l));
|
||||||
}
|
}
|
||||||
@ -499,7 +495,7 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
assertThat(facet.getRanges().size(), is(equalTo(3)));
|
assertThat(facet.getRanges().size(), is(equalTo(3)));
|
||||||
|
|
||||||
Range range = facet.getRanges().get(0);
|
Range range = facet.getRanges().get(0);
|
||||||
assertThat(range.getFrom(), nullValue());
|
assertThat(range.getFrom(), is(Double.NEGATIVE_INFINITY));
|
||||||
assertThat(range.getTo(), is((double) YEAR_2000));
|
assertThat(range.getTo(), is((double) YEAR_2000));
|
||||||
assertThat(range.getCount(), is(0L));
|
assertThat(range.getCount(), is(0L));
|
||||||
assertThat(range.getTotal(), is(0.0));
|
assertThat(range.getTotal(), is(0.0));
|
||||||
@ -508,17 +504,17 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
assertThat(range.getFrom(), is((double) YEAR_2000));
|
assertThat(range.getFrom(), is((double) YEAR_2000));
|
||||||
assertThat(range.getTo(), is((double) YEAR_2002));
|
assertThat(range.getTo(), is((double) YEAR_2002));
|
||||||
assertThat(range.getCount(), is(3L));
|
assertThat(range.getCount(), is(3L));
|
||||||
assertThat(range.getTotal(), is(6000.0));
|
assertThat(range.getTotal(), is(12004.0));
|
||||||
|
|
||||||
range = facet.getRanges().get(2);
|
range = facet.getRanges().get(2);
|
||||||
assertThat(range.getFrom(), is((double) YEAR_2002));
|
assertThat(range.getFrom(), is((double) YEAR_2002));
|
||||||
assertThat(range.getTo(), nullValue());
|
assertThat(range.getTo(), is(Double.POSITIVE_INFINITY));
|
||||||
assertThat(range.getCount(), is(1L));
|
assertThat(range.getCount(), is(1L));
|
||||||
assertThat(range.getTotal(), is(2002.0));
|
assertThat(range.getTotal(), is(6003.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldReturnKeyValueRangeFacetForGivenQuery() {
|
public void shouldReturnKeyValueRangeFacetForStringValuesInGivenQuery() {
|
||||||
// given
|
// given
|
||||||
String facetName = "rangeScoreOverYears";
|
String facetName = "rangeScoreOverYears";
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
||||||
@ -535,7 +531,7 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
assertThat(facet.getRanges().size(), is(equalTo(3)));
|
assertThat(facet.getRanges().size(), is(equalTo(3)));
|
||||||
|
|
||||||
Range range = facet.getRanges().get(0);
|
Range range = facet.getRanges().get(0);
|
||||||
assertThat(range.getFrom(), nullValue());
|
assertThat(range.getFrom(), is(Double.NEGATIVE_INFINITY));
|
||||||
assertThat(range.getTo(), is((double) YEAR_2000));
|
assertThat(range.getTo(), is((double) YEAR_2000));
|
||||||
assertThat(range.getCount(), is(0L));
|
assertThat(range.getCount(), is(0L));
|
||||||
assertThat(range.getTotal(), is(0.0));
|
assertThat(range.getTotal(), is(0.0));
|
||||||
@ -548,43 +544,7 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
|
|
||||||
range = facet.getRanges().get(2);
|
range = facet.getRanges().get(2);
|
||||||
assertThat(range.getFrom(), is((double) YEAR_2002));
|
assertThat(range.getFrom(), is((double) YEAR_2002));
|
||||||
assertThat(range.getTo(), nullValue());
|
assertThat(range.getTo(), is(Double.POSITIVE_INFINITY));
|
||||||
assertThat(range.getCount(), is(1L));
|
|
||||||
assertThat(range.getTotal(), is(40.0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldReturnKeyValueRangeFacetForStringValuesInGivenQuery() {
|
|
||||||
// given
|
|
||||||
String facetName = "rangeScoreOverYears";
|
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
|
||||||
.withFacet(
|
|
||||||
new RangeFacetRequestBuilder(facetName).fields(PUBLISHED_YEARS, "score")
|
|
||||||
.to("2000").range("2000", "2002").from("2002").build()
|
|
||||||
).build();
|
|
||||||
// when
|
|
||||||
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
|
|
||||||
// then
|
|
||||||
assertThat(result.getNumberOfElements(), is(equalTo(4)));
|
|
||||||
|
|
||||||
RangeResult facet = (RangeResult) result.getFacet(facetName);
|
|
||||||
assertThat(facet.getRanges().size(), is(equalTo(3)));
|
|
||||||
|
|
||||||
Range range = facet.getRanges().get(0);
|
|
||||||
assertThat(range.getFrom(), nullValue());
|
|
||||||
assertThat(range.getTo(), is((double) YEAR_2000));
|
|
||||||
assertThat(range.getCount(), is(0L));
|
|
||||||
assertThat(range.getTotal(), is(0.0));
|
|
||||||
|
|
||||||
range = facet.getRanges().get(1);
|
|
||||||
assertThat(range.getFrom(), is((double) YEAR_2000));
|
|
||||||
assertThat(range.getTo(), is((double) YEAR_2002));
|
|
||||||
assertThat(range.getCount(), is(3L));
|
|
||||||
assertThat(range.getTotal(), is(90.0));
|
|
||||||
|
|
||||||
range = facet.getRanges().get(2);
|
|
||||||
assertThat(range.getFrom(), is((double) YEAR_2002));
|
|
||||||
assertThat(range.getTo(), nullValue());
|
|
||||||
assertThat(range.getCount(), is(1L));
|
assertThat(range.getCount(), is(1L));
|
||||||
assertThat(range.getTotal(), is(40.0));
|
assertThat(range.getTotal(), is(40.0));
|
||||||
}
|
}
|
||||||
@ -635,4 +595,4 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
assertThat(unit.getCount(), is(1L));
|
assertThat(unit.getCount(), is(1L));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user