List of usage examples for org.springframework.data.elasticsearch.core.query IndexQuery setType
public void setType(String type)
From source file:com.company.project.data.elasticsearch.service.UserESServiceTest.java
/** * Test of crud method, of class UserESService. *///from w ww. j a v a 2s. co m //@Test public void testCrud() { System.out.println("crud"); //userESService.crud(); // TODO review the generated test code and remove the default call to fail. 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); boolean typeExists = elasticsearchTemplate.typeExists("xuseridx", "xusertype"); /** * Single index example */ String id = UUID.randomUUID().toString(); User user = new User(); user.setId(id); user.setName("user-" + id); IndexQuery userIndex = new IndexQuery(); userIndex.setId(id); userIndex.setObject(user); userIndex.setIndexName("xuseridx"); userIndex.setType("xusertype"); elasticsearchTemplate.index(userIndex); /** * Bulk index example */ id = UUID.randomUUID().toString(); user = new User(); user.setId(id); user.setName("user-" + id); IndexQuery indexQuery2 = new IndexQueryBuilder().withId(user.getId()).withIndexName("xuseridx") .withObject(user).build(); id = UUID.randomUUID().toString(); user = new User(); user.setId(id); user.setName("user-" + RandomStringUtils.random(5)); IndexQuery indexQuery3 = new IndexQueryBuilder().withId(user.getId()).withIndexName("xuseridx") .withObject(user).build(); elasticsearchTemplate.bulkIndex(Arrays.asList(indexQuery2, indexQuery3)); // alternative to index //userRepository.save(Arrays.asList(user)); elasticsearchTemplate.refresh(User.class, true); QueryBuilder builder = nestedQuery("xuseridx", boolQuery().must(termQuery("xusertype.name", "user2")).must(termQuery("xusertype.name", "user3"))); //https://github.com/BioMedCentralLtd/spring-data-elasticsearch-sample-application/blob/master/src/main/java/org/springframework/data/elasticsearch/entities/Article.java Page<User> pageUser = userRepository.findByName("user-" + id, new PageRequest(0, 10)); System.out.println("Page user total elements" + pageUser.getTotalElements()); System.out.println("Page user total elements" + pageUser.getTotalPages()); System.out.println("Page user first element" + pageUser.getContent().get(0).getName()); Iterable<User> pageUserSorted = userRepository .findAll(new Sort(new Sort.Order(Sort.Direction.ASC, "xusertype.name"))); System.out.println("Page user sorted total elements" + pageUserSorted.iterator().hasNext()); System.out.println("Page user sorted first element" + pageUserSorted.iterator().next().getName()); //SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build(); SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withIndices("xuseridx") .build(); List persons = elasticsearchTemplate.queryForList(searchQuery, User.class); System.out.println("People size:" + (persons != null ? persons.size() : null)); searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) .withFilter(boolFilter().must(existsFilter("name"))).withPageable(new PageRequest(0, 2)).build(); Page<User> users = userRepository.search(searchQuery); System.out.println("Page user query total elements" + users.getTotalElements()); System.out.println("Page user query total pages" + users.getTotalPages()); System.out.println("Page user query first element" + users.getContent().get(0).getName()); }
From source file:com.company.project.data.elasticsearch.service.UserESServiceTest.java
@Test public void testAggregation() { System.out.println("testAggregation"); elasticsearchTemplate.deleteIndex(Car.class); elasticsearchTemplate.createIndex("car_idx"); elasticsearchTemplate.putMapping(Car.class); elasticsearchTemplate.refresh(Car.class, true); boolean typeExists = elasticsearchTemplate.typeExists("car_idx", "car_type"); assertTrue(typeExists);/*from w ww. j a v a 2 s .c o m*/ /** * Single index example */ String id = "1"; Car car = new Car(); car.setId(id); car.setColor("red"); car.setPrice(10000); car.setMake("honda"); car.setSold("2014-10-28"); IndexQuery userIndex = new IndexQuery(); userIndex.setId(id); userIndex.setObject(car); userIndex.setIndexName("car_idx"); userIndex.setType("car_type"); elasticsearchTemplate.index(userIndex); /** * Bulk index example */ id = "2"; car = new Car(); car.setId(id); car.setColor("red"); car.setPrice(20000); car.setMake("honda"); car.setSold("2014-11-05"); IndexQuery indexQuery2 = new IndexQueryBuilder().withId(car.getId()).withIndexName("car_idx") .withObject(car).build(); id = "3"; car = new Car(); car.setId(id); car.setColor("green"); car.setPrice(30000); car.setMake("ford"); car.setSold("2014-05-18"); IndexQuery indexQuery3 = new IndexQueryBuilder().withId(car.getId()).withIndexName("car_idx") .withObject(car).build(); id = "4"; car = new Car(); car.setId(id); car.setColor("blue"); car.setPrice(15000); car.setMake("toyota"); car.setSold("2014-07-02"); IndexQuery indexQuery4 = new IndexQueryBuilder().withId(car.getId()).withIndexName("car_idx") .withObject(car).build(); id = "5"; car = new Car(); car.setId(id); car.setColor("green"); car.setPrice(12000); car.setMake("toyota"); car.setSold("2014-08-19"); IndexQuery indexQuery5 = new IndexQueryBuilder().withId(car.getId()).withIndexName("car_idx") .withObject(car).build(); id = "6"; car = new Car(); car.setId(id); car.setColor("red"); car.setPrice(20000); car.setMake("honda"); car.setSold("2014-11-05"); IndexQuery indexQuery6 = new IndexQueryBuilder().withId(car.getId()).withIndexName("car_idx") .withObject(car).build(); id = "7"; car = new Car(); car.setId(id); car.setColor("red"); car.setPrice(80000); car.setMake("bmw"); car.setSold("2014-01-01"); IndexQuery indexQuery7 = new IndexQueryBuilder().withId(car.getId()).withIndexName("car_idx") .withObject(car).build(); id = "8"; car = new Car(); car.setId(id); car.setColor("blue"); car.setPrice(25000); car.setMake("ford"); car.setSold("2014-02-12"); IndexQuery indexQuery8 = new IndexQueryBuilder().withId(car.getId()).withIndexName("car_idx") .withObject(car).build(); elasticsearchTemplate.bulkIndex(Arrays.asList(indexQuery2, indexQuery3, indexQuery4, indexQuery5, indexQuery6, indexQuery7, indexQuery8)); // alternative to index //userRepository.save(Arrays.asList(car)); elasticsearchTemplate.refresh(Car.class, true); // 1 honda red 10000 2014-10-28 // 2 honda red 20000 2014-11-05 // 3 ford green 30000 2014-05-18 // 4 toyota blue 15000 2014-07-02 // 5 toyota green 12000 2014-08-19 // 6 honda red 20000 2014-11-05 // 7 bmw red 80000 2014-01-01 // 8 ford blue 25000 2014-02-12 SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) .withSearchType(SearchType.COUNT).withIndices("car_idx").withTypes("car_type") .addAggregation(AggregationBuilders.terms("colors").field("color") .subAggregation(AggregationBuilders.avg("avg_price").field("price"))) .build(); Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() { @Override public Aggregations extract(SearchResponse response) { return response.getAggregations(); } }); assertThat(aggregations, is(notNullValue())); assertThat(aggregations.asMap().get("colors"), is(notNullValue())); Gson gson = new Gson(); for (Aggregation agg : aggregations.asList()) { // {"order":{"id":1,"key":"_count","asc":false,"comparator":{}},"requiredSize":10,"minDocCount":1, // "buckets":[{"termBytes":{"bytes":[114,101,100],"offset":0,"length":3},"bucketOrd":0,"docCount":3, // "aggregations":{"aggregations":[{"sum":50000.0,"count":3,"name":"avg_price"}]}},{"termBytes":{"bytes":[98,108,117,101],"offset":0,"length":4},"bucketOrd":0,"docCount":2, //blue // "aggregations":{"aggregations":[{"sum":40000.0,"count":2,"name":"avg_price"}]}},{"termBytes":{"bytes":[103,114,101,101,110],"offset":0,"length":5},"bucketOrd":0,"docCount":2, //green // "aggregations":{"aggregations":[{"sum":42000.0,"count":2,"name":"avg_price"}]}}],"name":"colors"} System.out.println("Aggregation json string:" + gson.toJson(agg)); } }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test(expected = ElasticsearchException.class) public void shouldThrowElasticsearchExceptionWhenNoDocumentSpecified() { // given/*w ww .ja va 2 s . c o m*/ IndexQuery indexQuery = new IndexQuery(); indexQuery.setId("2333343434"); indexQuery.setIndexName(INDEX_NAME); indexQuery.setType(TYPE_NAME); //when elasticsearchTemplate.index(indexQuery); }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test public void shouldIndexNotDocumentEntity() { // given/* ww w .j a v a2s.c o m*/ BasicEntity entity = new BasicEntity(randomNumeric(1), "aFirstName"); IndexQuery indexQuery = new IndexQuery(); indexQuery.setObject(entity); indexQuery.setIndexName(INDEX_NAME); indexQuery.setType(TYPE_NAME); // when String id = elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class); GetQuery query = new GetQuery(); query.setId(id); AnnotatedBasicEntity indexedEntity = elasticsearchTemplate.queryForObject(query, AnnotatedBasicEntity.class); assertThat(indexedEntity, is(notNullValue())); assertThat(indexedEntity.getId(), equalTo(id)); assertThat(indexedEntity.getFirstName(), equalTo(entity.getFirstName())); }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test public void shouldIndexDocumentForSpecifiedSource() { // given//from w w w .j av a 2 s . co m String documentSource = "{\"id\":\"2333343434\",\"type\":null,\"message\":\"some message\",\"rate\":0,\"available\":false,\"highlightedMessage\":null,\"version\":1385208779482}"; IndexQuery indexQuery = new IndexQuery(); indexQuery.setId("2333343434"); indexQuery.setSource(documentSource); indexQuery.setIndexName(INDEX_NAME); indexQuery.setType(TYPE_NAME); // when elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class); SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", indexQuery.getId())) .withIndices(INDEX_NAME).withTypes(TYPE_NAME).build(); // then Page<SampleEntity> page = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class, new JestSearchResultMapper() { @Override public <T> Page<T> mapResults(SearchResult response, Class<T> clazz, Pageable pageable) { List<SampleEntity> values = new ArrayList<SampleEntity>(); for (SearchResult.Hit<JsonObject, Void> searchHit : response.getHits(JsonObject.class)) { SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(searchHit.source.get(JestResult.ES_METADATA_ID).getAsString()); sampleEntity.setMessage(searchHit.source.get("message").getAsString()); values.add(sampleEntity); } return new PageImpl<T>((List<T>) values); } }); assertThat(page, is(notNullValue())); assertThat(page.getContent().size(), is(1)); assertThat(page.getContent().get(0).getId(), is(indexQuery.getId())); }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test public void shouldIndexMapWithIndexNameAndTypeAtRuntime() { //given// w w w. ja va 2 s .c o m Map<String, Object> person1 = new HashMap<>(); person1.put("userId", "1"); person1.put("email", "smhdiu@gmail.com"); person1.put("title", "Mr"); person1.put("firstName", "Mohsin"); person1.put("lastName", "Husen"); Map<String, Object> person2 = new HashMap<>(); person2.put("userId", "2"); person2.put("email", "akonczak@gmail.com"); person2.put("title", "Mr"); person2.put("firstName", "Artur"); person2.put("lastName", "Konczak"); IndexQuery indexQuery1 = new IndexQuery(); indexQuery1.setId("1"); indexQuery1.setObject(person1); indexQuery1.setIndexName(INDEX_NAME); indexQuery1.setType(TYPE_NAME); IndexQuery indexQuery2 = new IndexQuery(); indexQuery2.setId("2"); indexQuery2.setObject(person2); indexQuery2.setIndexName(INDEX_NAME); indexQuery2.setType(TYPE_NAME); List<IndexQuery> indexQueries = new ArrayList<>(); indexQueries.add(indexQuery1); indexQueries.add(indexQuery2); //when elasticsearchTemplate.bulkIndex(indexQueries); elasticsearchTemplate.refresh(INDEX_NAME); // then SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices(INDEX_NAME).withTypes(TYPE_NAME) .withQuery(matchAllQuery()).build(); Page<Map> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, Map.class, new JestSearchResultMapper() { @Override public <T> Page<T> mapResults(SearchResult response, Class<T> clazz, Pageable pageable) { List<Map> chunk = new ArrayList<>(); for (SearchResult.Hit<JsonObject, Void> searchHit : response.getHits(JsonObject.class)) { if (response.getHits(JsonObject.class).size() <= 0) { return null; } Map<String, Object> person = new HashMap<String, Object>(); person.put("userId", searchHit.source.get("userId").getAsString()); person.put("email", searchHit.source.get("email").getAsString()); person.put("title", searchHit.source.get("title").getAsString()); person.put("firstName", searchHit.source.get("firstName").getAsString()); person.put("lastName", searchHit.source.get("lastName").getAsString()); chunk.add(person); } if (chunk.size() > 0) { return new PageImpl<T>((List<T>) chunk); } return null; } }); assertThat(sampleEntities.getTotalElements(), is(equalTo(2L))); assertThat(sampleEntities.getContent().get(0).get("userId"), is(person1.get("userId"))); assertThat(sampleEntities.getContent().get(1).get("userId"), is(person2.get("userId"))); }