Search in sources :

Example 36 with Filter

use of org.elasticsearch.search.aggregations.bucket.filter.Filter in project elasticsearch by elastic.

the class StringTermsIT method testSingleValuedFieldOrderedBySingleBucketSubAggregationAsc.

public void testSingleValuedFieldOrderedBySingleBucketSubAggregationAsc() throws Exception {
    boolean asc = randomBoolean();
    SearchResponse response = client().prepareSearch("idx").setTypes("type").addAggregation(terms("tags").executionHint(randomExecutionHint()).field("tag").collectMode(randomFrom(SubAggCollectionMode.values())).order(Terms.Order.aggregation("filter", asc)).subAggregation(filter("filter", QueryBuilders.matchAllQuery()))).execute().actionGet();
    assertSearchResponse(response);
    Terms tags = response.getAggregations().get("tags");
    assertThat(tags, notNullValue());
    assertThat(tags.getName(), equalTo("tags"));
    assertThat(tags.getBuckets().size(), equalTo(2));
    Iterator<Terms.Bucket> iters = tags.getBuckets().iterator();
    Terms.Bucket tag = iters.next();
    assertThat(tag, notNullValue());
    assertThat(key(tag), equalTo(asc ? "less" : "more"));
    assertThat(tag.getDocCount(), equalTo(asc ? 2L : 3L));
    Filter filter = tag.getAggregations().get("filter");
    assertThat(filter, notNullValue());
    assertThat(filter.getDocCount(), equalTo(asc ? 2L : 3L));
    tag = iters.next();
    assertThat(tag, notNullValue());
    assertThat(key(tag), equalTo(asc ? "more" : "less"));
    assertThat(tag.getDocCount(), equalTo(asc ? 3L : 2L));
    filter = tag.getAggregations().get("filter");
    assertThat(filter, notNullValue());
    assertThat(filter.getDocCount(), equalTo(asc ? 3L : 2L));
}
Also used : Bucket(org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket) Bucket(org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket) Filter(org.elasticsearch.search.aggregations.bucket.filter.Filter) Terms(org.elasticsearch.search.aggregations.bucket.terms.Terms) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 37 with Filter

use of org.elasticsearch.search.aggregations.bucket.filter.Filter in project elasticsearch by elastic.

the class ShardReduceIT method testGlobalWithFilterWithMissing.

public void testGlobalWithFilterWithMissing() throws Exception {
    SearchResponse response = client().prepareSearch("idx").setQuery(QueryBuilders.matchAllQuery()).addAggregation(global("global").subAggregation(filter("filter", QueryBuilders.matchAllQuery()).subAggregation(missing("missing").field("foobar").subAggregation(dateHistogram("histo").field("date").dateHistogramInterval(DateHistogramInterval.DAY).minDocCount(0))))).execute().actionGet();
    assertSearchResponse(response);
    Global global = response.getAggregations().get("global");
    Filter filter = global.getAggregations().get("filter");
    Missing missing = filter.getAggregations().get("missing");
    Histogram histo = missing.getAggregations().get("histo");
    assertThat(histo.getBuckets().size(), equalTo(4));
}
Also used : Missing(org.elasticsearch.search.aggregations.bucket.missing.Missing) Histogram(org.elasticsearch.search.aggregations.bucket.histogram.Histogram) AggregationBuilders.dateHistogram(org.elasticsearch.search.aggregations.AggregationBuilders.dateHistogram) Filter(org.elasticsearch.search.aggregations.bucket.filter.Filter) Global(org.elasticsearch.search.aggregations.bucket.global.Global) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 38 with Filter

use of org.elasticsearch.search.aggregations.bucket.filter.Filter in project elasticsearch by elastic.

the class TransportTwoNodesSearchIT method testSimpleFacets.

public void testSimpleFacets() throws Exception {
    prepareData();
    SearchSourceBuilder sourceBuilder = searchSource().query(termQuery("multi", "test")).from(0).size(20).explain(true).aggregation(AggregationBuilders.global("global").subAggregation(AggregationBuilders.filter("all", termQuery("multi", "test")))).aggregation(AggregationBuilders.filter("test1", termQuery("name", "test1")));
    SearchResponse searchResponse = client().search(searchRequest("test").source(sourceBuilder)).actionGet();
    assertNoFailures(searchResponse);
    assertThat(searchResponse.getHits().getTotalHits(), equalTo(100L));
    Global global = searchResponse.getAggregations().get("global");
    Filter all = global.getAggregations().get("all");
    Filter test1 = searchResponse.getAggregations().get("test1");
    assertThat(test1.getDocCount(), equalTo(1L));
    assertThat(all.getDocCount(), equalTo(100L));
}
Also used : Filter(org.elasticsearch.search.aggregations.bucket.filter.Filter) Global(org.elasticsearch.search.aggregations.bucket.global.Global) SearchSourceBuilder(org.elasticsearch.search.builder.SearchSourceBuilder) SearchResponse(org.elasticsearch.action.search.SearchResponse) MultiSearchResponse(org.elasticsearch.action.search.MultiSearchResponse)

Example 39 with Filter

use of org.elasticsearch.search.aggregations.bucket.filter.Filter in project elasticsearch by elastic.

the class ChildQuerySearchIT method testScopedFacet.

public void testScopedFacet() throws Exception {
    assertAcked(prepareCreate("test").addMapping("parent").addMapping("child", "_parent", "type=parent", "c_field", "type=keyword"));
    ensureGreen();
    // index simple data
    client().prepareIndex("test", "parent", "p1").setSource("p_field", "p_value1").get();
    client().prepareIndex("test", "child", "c1").setSource("c_field", "red").setParent("p1").get();
    client().prepareIndex("test", "child", "c2").setSource("c_field", "yellow").setParent("p1").get();
    client().prepareIndex("test", "parent", "p2").setSource("p_field", "p_value2").get();
    client().prepareIndex("test", "child", "c3").setSource("c_field", "blue").setParent("p2").get();
    client().prepareIndex("test", "child", "c4").setSource("c_field", "red").setParent("p2").get();
    refresh();
    SearchResponse searchResponse = client().prepareSearch("test").setQuery(hasChildQuery("child", boolQuery().should(termQuery("c_field", "red")).should(termQuery("c_field", "yellow")), ScoreMode.None)).addAggregation(AggregationBuilders.global("global").subAggregation(AggregationBuilders.filter("filter", boolQuery().should(termQuery("c_field", "red")).should(termQuery("c_field", "yellow"))).subAggregation(AggregationBuilders.terms("facet1").field("c_field")))).get();
    assertNoFailures(searchResponse);
    assertThat(searchResponse.getHits().getTotalHits(), equalTo(2L));
    assertThat(searchResponse.getHits().getAt(0).getId(), anyOf(equalTo("p2"), equalTo("p1")));
    assertThat(searchResponse.getHits().getAt(1).getId(), anyOf(equalTo("p2"), equalTo("p1")));
    Global global = searchResponse.getAggregations().get("global");
    Filter filter = global.getAggregations().get("filter");
    Terms termsFacet = filter.getAggregations().get("facet1");
    assertThat(termsFacet.getBuckets().size(), equalTo(2));
    assertThat(termsFacet.getBuckets().get(0).getKeyAsString(), equalTo("red"));
    assertThat(termsFacet.getBuckets().get(0).getDocCount(), equalTo(2L));
    assertThat(termsFacet.getBuckets().get(1).getKeyAsString(), equalTo("yellow"));
    assertThat(termsFacet.getBuckets().get(1).getDocCount(), equalTo(1L));
}
Also used : Filter(org.elasticsearch.search.aggregations.bucket.filter.Filter) Terms(org.elasticsearch.search.aggregations.bucket.terms.Terms) Global(org.elasticsearch.search.aggregations.bucket.global.Global) SearchResponse(org.elasticsearch.action.search.SearchResponse)

Example 40 with Filter

use of org.elasticsearch.search.aggregations.bucket.filter.Filter in project elasticsearch by elastic.

the class EquivalenceIT method testReduce.

// https://github.com/elastic/elasticsearch/issues/6435
public void testReduce() throws Exception {
    createIndex("idx");
    final int value = randomIntBetween(0, 10);
    indexRandom(true, client().prepareIndex("idx", "type").setSource("f", value));
    SearchResponse response = client().prepareSearch("idx").addAggregation(filter("filter", QueryBuilders.matchAllQuery()).subAggregation(range("range").field("f").addUnboundedTo(6).addUnboundedFrom(6).subAggregation(sum("sum").field("f")))).execute().actionGet();
    assertSearchResponse(response);
    Filter filter = response.getAggregations().get("filter");
    assertNotNull(filter);
    assertEquals(1, filter.getDocCount());
    Range range = filter.getAggregations().get("range");
    assertThat(range, notNullValue());
    assertThat(range.getName(), equalTo("range"));
    List<? extends Bucket> buckets = range.getBuckets();
    assertThat(buckets.size(), equalTo(2));
    Range.Bucket bucket = buckets.get(0);
    assertThat(bucket, notNullValue());
    assertThat((String) bucket.getKey(), equalTo("*-6.0"));
    assertThat(((Number) bucket.getFrom()).doubleValue(), equalTo(Double.NEGATIVE_INFINITY));
    assertThat(((Number) bucket.getTo()).doubleValue(), equalTo(6.0));
    assertThat(bucket.getDocCount(), equalTo(value < 6 ? 1L : 0L));
    Sum sum = bucket.getAggregations().get("sum");
    assertEquals(value < 6 ? value : 0, sum.getValue(), 0d);
    bucket = buckets.get(1);
    assertThat(bucket, notNullValue());
    assertThat((String) bucket.getKey(), equalTo("6.0-*"));
    assertThat(((Number) bucket.getFrom()).doubleValue(), equalTo(6.0));
    assertThat(((Number) bucket.getTo()).doubleValue(), equalTo(Double.POSITIVE_INFINITY));
    assertThat(bucket.getDocCount(), equalTo(value >= 6 ? 1L : 0L));
    sum = bucket.getAggregations().get("sum");
    assertEquals(value >= 6 ? value : 0, sum.getValue(), 0d);
}
Also used : Bucket(org.elasticsearch.search.aggregations.bucket.range.Range.Bucket) Filter(org.elasticsearch.search.aggregations.bucket.filter.Filter) Sum(org.elasticsearch.search.aggregations.metrics.sum.Sum) Range(org.elasticsearch.search.aggregations.bucket.range.Range) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Aggregations

Filter (org.elasticsearch.search.aggregations.bucket.filter.Filter)43 SearchResponse (org.elasticsearch.action.search.SearchResponse)42 ElasticsearchAssertions.assertSearchResponse (org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)34 Terms (org.elasticsearch.search.aggregations.bucket.terms.Terms)27 Bucket (org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket)11 SearchRequestBuilder (org.elasticsearch.action.search.SearchRequestBuilder)7 Histogram (org.elasticsearch.search.aggregations.bucket.histogram.Histogram)6 SearchRequest (org.elasticsearch.action.search.SearchRequest)5 FilterAggregationBuilder (org.elasticsearch.search.aggregations.bucket.filter.FilterAggregationBuilder)5 Max (org.elasticsearch.search.aggregations.metrics.max.Max)5 ExtendedStats (org.elasticsearch.search.aggregations.metrics.stats.extended.ExtendedStats)5 ArrayList (java.util.ArrayList)4 XContentBuilder (org.elasticsearch.common.xcontent.XContentBuilder)3 QueryStringQueryBuilder (org.elasticsearch.index.query.QueryStringQueryBuilder)3 Global (org.elasticsearch.search.aggregations.bucket.global.Global)3 Nested (org.elasticsearch.search.aggregations.bucket.nested.Nested)3 Percentiles (org.elasticsearch.search.aggregations.metrics.percentiles.Percentiles)3 Stats (org.elasticsearch.search.aggregations.metrics.stats.Stats)3 Matchers.containsString (org.hamcrest.Matchers.containsString)3 DateTime (org.joda.time.DateTime)3