|
29 | 29 | import org.elasticsearch.index.query.FilterBuilders;
|
30 | 30 | import org.elasticsearch.index.query.QueryBuilders;
|
31 | 31 | import org.elasticsearch.search.facet.FacetBuilders;
|
| 32 | +import org.elasticsearch.search.facet.filter.FilterFacet; |
32 | 33 | import org.elasticsearch.search.facet.termsstats.TermsStatsFacet;
|
33 | 34 | import org.elasticsearch.test.integration.AbstractNodesTests;
|
34 | 35 | import org.testng.annotations.AfterClass;
|
|
39 | 40 |
|
40 | 41 | import static org.elasticsearch.common.settings.ImmutableSettings.settingsBuilder;
|
41 | 42 | import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
|
42 |
| -import static org.elasticsearch.index.query.FilterBuilders.nestedFilter; |
| 43 | +import static org.elasticsearch.index.query.FilterBuilders.*; |
43 | 44 | import static org.elasticsearch.index.query.QueryBuilders.*;
|
44 | 45 | import static org.hamcrest.MatcherAssert.assertThat;
|
45 | 46 | import static org.hamcrest.Matchers.equalTo;
|
@@ -437,28 +438,52 @@ private void testFacets(int numberOfShards) throws Exception {
|
437 | 438 | assertThat(termsStatsFacet.getEntries().get(3).getCount(), equalTo(1l));
|
438 | 439 | assertThat(termsStatsFacet.getEntries().get(3).getTotal(), equalTo(12d));
|
439 | 440 |
|
440 |
| - // test scope ones |
441 |
| -// searchResponse = client.prepareSearch("test") |
442 |
| -// .setQuery( |
443 |
| -// nestedQuery("nested1.nested2", termQuery("nested1.nested2.field2_1", "blue")) |
444 |
| -// ) |
445 |
| -// .addFacet( |
446 |
| -// FacetBuilders.termsStatsFacet("facet1") |
447 |
| -// .keyField("nested1.nested2.field2_1") |
448 |
| -// .valueField("nested1.nested2.field2_2") |
449 |
| -// .nested("nested1.nested2") |
450 |
| -// .facetFilter(nestedFilter("nested1.nested2", termQuery("nested1.nested2.field2_1", "blue")).join(false)) |
451 |
| -// ) |
452 |
| -// .execute().actionGet(); |
453 |
| -// |
454 |
| -// assertThat(Arrays.toString(searchResponse.shardFailures()), searchResponse.failedShards(), equalTo(0)); |
455 |
| -// assertThat(searchResponse.hits().totalHits(), equalTo(2l)); |
456 |
| -// |
457 |
| -// termsStatsFacet = searchResponse.facets().facet("facet1"); |
458 |
| -// assertThat(termsStatsFacet.getEntries().size(), equalTo(1)); |
459 |
| -// assertThat(termsStatsFacet.getEntries().get(0).getTerm().string(), equalTo("blue")); |
460 |
| -// assertThat(termsStatsFacet.getEntries().get(0).getCount(), equalTo(3l)); |
461 |
| -// assertThat(termsStatsFacet.getEntries().get(0).getTotal(), equalTo(8d)); |
| 441 | + // test scope ones (collector based) |
| 442 | + searchResponse = client.prepareSearch("test") |
| 443 | + .setQuery( |
| 444 | + nestedQuery("nested1.nested2", termQuery("nested1.nested2.field2_1", "blue")) |
| 445 | + ) |
| 446 | + .addFacet( |
| 447 | + FacetBuilders.termsStatsFacet("facet1") |
| 448 | + .keyField("nested1.nested2.field2_1") |
| 449 | + .valueField("nested1.nested2.field2_2") |
| 450 | + .nested("nested1.nested2") |
| 451 | + // Maybe remove the `join` option? |
| 452 | + // The following also works: |
| 453 | + // .facetFilter(termFilter("nested1.nested2.field2_1", "blue")) |
| 454 | + .facetFilter(nestedFilter("nested1.nested2", termFilter("nested1.nested2.field2_1", "blue")).join(false)) |
| 455 | + ) |
| 456 | + .execute().actionGet(); |
| 457 | + |
| 458 | + assertThat(Arrays.toString(searchResponse.getShardFailures()), searchResponse.getFailedShards(), equalTo(0)); |
| 459 | + assertThat(searchResponse.getHits().totalHits(), equalTo(2l)); |
| 460 | + |
| 461 | + termsStatsFacet = searchResponse.getFacets().facet("facet1"); |
| 462 | + assertThat(termsStatsFacet.getEntries().size(), equalTo(1)); |
| 463 | + assertThat(termsStatsFacet.getEntries().get(0).getTerm().string(), equalTo("blue")); |
| 464 | + assertThat(termsStatsFacet.getEntries().get(0).getCount(), equalTo(3l)); |
| 465 | + assertThat(termsStatsFacet.getEntries().get(0).getTotal(), equalTo(8d)); |
| 466 | + |
| 467 | + // test scope ones (post based) |
| 468 | + searchResponse = client.prepareSearch("test") |
| 469 | + .setQuery( |
| 470 | + nestedQuery("nested1.nested2", termQuery("nested1.nested2.field2_1", "blue")) |
| 471 | + ) |
| 472 | + .addFacet( |
| 473 | + FacetBuilders.filterFacet("facet1") |
| 474 | + .global(true) |
| 475 | + .filter(rangeFilter("nested1.nested2.field2_2").gte(0).lte(2)) |
| 476 | + .nested("nested1.nested2") |
| 477 | + .facetFilter(nestedFilter("nested1.nested2", termFilter("nested1.nested2.field2_1", "blue")).join(false)) |
| 478 | + ) |
| 479 | + .execute().actionGet(); |
| 480 | + |
| 481 | + assertThat(Arrays.toString(searchResponse.getShardFailures()), searchResponse.getFailedShards(), equalTo(0)); |
| 482 | + assertThat(searchResponse.getHits().totalHits(), equalTo(2l)); |
| 483 | + |
| 484 | + FilterFacet filterFacet = searchResponse.getFacets().facet("facet1"); |
| 485 | + assertThat(filterFacet.getCount(), equalTo(2l)); |
| 486 | + assertThat(filterFacet.getName(), equalTo("facet1")); |
462 | 487 | }
|
463 | 488 |
|
464 | 489 | @Test
|
|
0 commit comments