List of usage examples for org.springframework.data.elasticsearch.core.facet.request TermFacetRequestBuilder TermFacetRequestBuilder
public TermFacetRequestBuilder(String name)
From source file:example.springdata.elasticsearch.ElasticsearchOperationsTest.java
@Test public void termFacet() { String termField = "keywords"; String facetName = "all-keywords"; FacetedPage<Conference> firstPage = operations.queryForPage(// new NativeSearchQueryBuilder().// withQuery(matchAllQuery()).// withFacet(new TermFacetRequestBuilder(facetName).// allTerms().// descCount().// fields(termField).build()) .// build(),//from www . ja v a 2s. c o m Conference.class); TermResult facet = (TermResult) firstPage.getFacet(facetName); assertThat(facet.getTerms(), hasSize(8)); facet.getTerms().forEach(term -> { assertThat(term.getTerm(), isOneOf("java", "spring", "scala", "play", "elasticsearch", "kibana", "cloud", "aws")); }); }
From source file:com.company.project.data.elasticsearch.service.UserESServiceTest.java
public void testRepositoryQueries() { System.out.println("testRepository"); //elasticsearchTemplate.deleteIndex("xuseridx"); elasticsearchTemplate.deleteIndex(User.class); elasticsearchTemplate.createIndex(User.class); //elasticsearchTemplate.createIndex(User.class, user); //elasticsearchTemplate.createIndex("xuseridx"); elasticsearchTemplate.putMapping(User.class); elasticsearchTemplate.refresh(User.class, true); String id = UUID.randomUUID().toString(); User user = new User(); user.setId(id);/*from w ww . j a va 2 s . c om*/ user.setName("user-" + id); user.setRole(1l); user.setPath("1.0"); Map<Integer, Collection<String>> userFilter = new HashMap<>(); userFilter.put(1, Arrays.asList("filter1", "filter2")); userFilter.put(2, Arrays.asList("filter11", "filter12")); user.setFilter(userFilter); userRepository.save(user); boolean exists = userRepository.exists(user.getId()); assertTrue(exists); List<User> users = new ArrayList<>(); id = UUID.randomUUID().toString(); user = new User(); user.setId(id); user.setName("user-" + id); user.setRole(2l); user.setPath("1.1.0"); userFilter = new HashMap<>(); userFilter.put(1, Arrays.asList("filter1", "filter3")); userFilter.put(2, Arrays.asList("filter11", "filter13")); user.setFilter(userFilter); users.add(user); //userRepository.save(user); id = UUID.randomUUID().toString(); user = new User(); user.setId(id); user.setName("user-" + id); user.setRole(3l); user.setPath("1.1.1.0"); userFilter = new HashMap<>(); userFilter.put(1, Arrays.asList("filter1", "filter4")); userFilter.put(2, Arrays.asList("filter11", "filter14")); user.setFilter(userFilter); users.add(user); //userRepository.save(user); userRepository.save(users); //bulk save exists = userRepository.exists(user.getId()); assertTrue(exists); elasticsearchTemplate.refresh(User.class, true); GetQuery getQuery = new GetQuery(); getQuery.setId(id); User userIndexed = elasticsearchTemplate.queryForObject(getQuery, User.class); assertEquals("user-" + id, "" + userIndexed.getName()); assertEquals(id, "" + userIndexed.getId()); assertEquals("3", "" + userIndexed.getRole()); String facetName = "testName"; SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) .withFacet(new TermFacetRequestBuilder(facetName).fields("role").descCount().build()).build(); // when FacetedPage<User> result = elasticsearchTemplate.queryForPage(searchQuery, User.class); assertEquals(3, result.getNumberOfElements()); TermResult facet = (TermResult) result.getFacet(facetName); assertEquals(3, facet.getTerms().size()); for (Term term : facet.getTerms()) { assertTrue("1".equals(term.getTerm()) || "2".equals(term.getTerm()) || "3".equals(term.getTerm())); System.out.println("Facet term : " + term.getTerm()); //System.out.println("Facet count : " + term.getCount()); //result //Facet term : 3 //Facet term : 2 //Facet term : 1 } // query list all searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) //.withFacet(new TermFacetRequestBuilder(facetName).fields("role").descCount().build()) .build(); List<User> userList = elasticsearchTemplate.queryForList(searchQuery, User.class); assertEquals(3, userList.size()); for (User u : userList) { System.out.println("User ID: " + u.getId()); System.out.println("User Name: " + u.getName()); } // query list all with pagination searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withPageable(new PageRequest(0, 10)) //.withIndices("xuseridx") //.withTypes("xusertype") //.withFacet(new TermFacetRequestBuilder(facetName).fields("role").descCount().build()) .build(); Page<User> pagedUsers = elasticsearchTemplate.queryForPage(searchQuery, User.class); assertEquals(3, pagedUsers.getTotalElements()); assertEquals(1, pagedUsers.getTotalPages()); for (User u : pagedUsers.getContent()) { System.out.println("User ID: " + u.getId()); System.out.println("User Name: " + u.getName()); } // query filter with key "1" contains value "filter3" and key "2" contains value "filter13" QueryBuilder builder = nestedQuery("filter", boolQuery().must(termQuery("1", "filter3")).must(termQuery("2", "filter13"))); searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build(); userList = elasticsearchTemplate.queryForList(searchQuery, User.class); assertEquals(1, userList.size()); for (User u : userList) { System.out.println("User ID: " + u.getId()); System.out.println("User Name: " + u.getName()); } // query all with filter path prefix "1.1" builder = boolQuery().must(prefixQuery("path", "1.1")); searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build(); userList = elasticsearchTemplate.queryForList(searchQuery, User.class); assertEquals(2, userList.size()); for (User u : userList) { System.out.println("User ID: " + u.getId()); System.out.println("User Name: " + u.getName()); } builder = QueryBuilders.multiMatchQuery("user", // term to search "path", "name" // field to search ); searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build(); userList = elasticsearchTemplate.queryForList(searchQuery, User.class); assertEquals(3, userList.size()); for (User u : userList) { System.out.println("User ID: " + u.getId()); System.out.println("User Name: " + u.getName()); } // ref: https://github.com/elasticsearch/elasticsearch/blob/master/docs/java-api/query-dsl-queries.asciidoc#boolean-query // http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/query-dsl-queries.html // Boolean Query builder = boolQuery().must(termQuery("content", "test1")) // field name, keyword .must(termQuery("content", "test4")) // field name, keyword .mustNot(termQuery("content", "test2")) // field name, keyword .should(termQuery("content", "test3")); // field name, keyword // Boosting Query builder = QueryBuilders.boostingQuery().positive(termQuery("name", "kimchy")) // query that will promote documents .negative(termQuery("name", "dadoonet")) // query that will demote documents .negativeBoost(0.2f); // negative boost //IDs Query builder = QueryBuilders.idsQuery().ids("1", "2"); // Constant Score Query builder = QueryBuilders.constantScoreQuery(termFilter("name", "kimchy") // you can use a filter ).boost(2.0f); // filter score builder = QueryBuilders.constantScoreQuery(termQuery("name", "kimchy") // you can use a query ).boost(2.0f); // Prefix Query builder = QueryBuilders.prefixQuery("brand", // field "heine" // term ); // QueryString Query builder = QueryBuilders.queryString("+kimchy -elasticsearch"); // Range Query builder = QueryBuilders.rangeQuery("price") // field .from(5) // from .to(10) // to .includeLower(true) // include lower value means that from is gt when false or gte when true .includeUpper(false); // include upper value means that to is lt when false or lte when true builder = QueryBuilders.disMaxQuery() // add your queries .add(termQuery("name", "kimchy")) // add your queries .add(termQuery("name", "elasticsearch")) // .boost(1.2f) // boost factor .tieBreaker(0.7f); // tie breaker // Fuzzy Like This (Field) Query (flt and flt_field) builder = QueryBuilders.fuzzyLikeThisQuery("name.first", "name.last") // fields .likeText("text like this one") // text .maxQueryTerms(12); // max num of Terms in generated queries //FuzzyQuery builder = QueryBuilders.fuzzyQuery("name", // field "kimzhy" // term ); }