List of usage examples for org.springframework.data.elasticsearch.core.query IndexQuery setId
public void setId(String id)
From source file:com.github.vanroy.springdata.jest.entities.ArticleEntityBuilder.java
public IndexQuery buildIndex() { IndexQuery indexQuery = new IndexQuery(); indexQuery.setId(result.getId()); indexQuery.setObject(result);/*from w w w. j av a2 s. com*/ return indexQuery; }
From source file:com.company.project.data.elasticsearch.service.UserESService.java
public void crud() { //elasticsearchTemplate.deleteIndex("xxx"); //elasticsearchTemplate.createIndex("xxx"); elasticsearchTemplate.deleteIndex(User.class); elasticsearchTemplate.createIndex(User.class); elasticsearchTemplate.putMapping(User.class); elasticsearchTemplate.refresh(User.class, true); IndexQuery userIndex = new IndexQuery(); User user = new User(); user.setId("1"); user.setName("user1"); userIndex.setId("1"); userIndex.setObject(user);/*w ww . jav a 2s . c om*/ //elasticsearchTemplate.index(userIndex); //elasticsearchTemplate.index(new IndexQueryBuilder().withObject(user).build()); IndexQuery indexQuery2 = new IndexQueryBuilder().withId(user.getId()).withIndexName("xuseridx") .withObject(user).build(); elasticsearchTemplate.bulkIndex(Arrays.asList(indexQuery2)); // userIndex = new IndexQuery(); // user = new User(); // user.setId("2"); // user.setName("user2"); // userIndex.setId("2"); // userIndex.setObject(user); // elasticsearchTemplate.index(userIndex); // // userIndex = new IndexQuery(); // user = new User(); // user.setId("3"); // user.setName("user3"); // userIndex.setId("3"); // userIndex.setObject(user); // elasticsearchTemplate.index(userIndex); elasticsearchTemplate.refresh(User.class, true); //QueryBuilder builder = nestedQuery("xuseridx", boolQuery().must(termQuery("xusertype.name", "user2")).must(termQuery("xusertype.name", "user3"))); //QueryBuilder builder = nestedQuery("xuseridx", boolQuery().must(fieldQuery("name", "user2")).must(fieldQuery("name", "user3"))); QueryBuilder builder = nestedQuery("xuseridx", boolQuery().must(termQuery("xusertype.name", "user2")).must(termQuery("xusertype.name", "user3"))); //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)); }
From source file:cz.zcu.kiv.eegdatabase.data.nosql.ElasticSynchronizationInterceptor.java
@Override public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { boolean res = super.onSave(entity, id, state, propertyNames, types); if (entity instanceof Experiment) { Experiment e = (Experiment) entity; this.syncExperimentParams(e); e.getElasticExperiment().setExperimentId("" + id); IndexQuery indexQuery = new IndexQuery(); indexQuery.setObject(e.getElasticExperiment()); indexQuery.setId("" + id); this.elasticsearchTemplate.index(indexQuery); }// w ww.j a v a 2s. com return res; }
From source file:cz.zcu.kiv.eegdatabase.data.nosql.ElasticSynchronizationInterceptor.java
@Override public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) { boolean res = super.onFlushDirty(entity, id, currentState, previousState, propertyNames, types); if (entity instanceof Experiment) { Experiment e = (Experiment) entity; this.syncExperimentParams(e); e.getElasticExperiment().setExperimentId("" + id); IndexQuery indexQuery = new IndexQuery(); indexQuery.setObject(e.getElasticExperiment()); indexQuery.setId("" + id); this.elasticsearchTemplate.index(indexQuery); }/*from ww w. j av a 2s . com*/ return res; }
From source file:cz.zcu.kiv.eegdatabase.data.dao.SimpleExperimentDao.java
@Override public void update(Experiment transientObject) { super.update(transientObject); ExperimentElastic elasticExperiment = transientObject.getElasticExperiment(); IndexQuery indexQuery = new IndexQuery(); elasticExperiment.setExperimentId("" + transientObject.getExperimentId()); elasticExperiment.setUserId(transientObject.getPersonByOwnerId().getPersonId()); elasticExperiment.setGroupId(transientObject.getResearchGroup().getResearchGroupId()); indexQuery.setObject(elasticExperiment); indexQuery.setId("" + transientObject.getExperimentId()); elasticsearchTemplate.index(indexQuery); }
From source file:com.company.project.data.elasticsearch.service.UserESServiceTest.java
/** * Test of crud method, of class UserESService. *///from w ww . j av a2 s .c o 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
public void testNestedQueries() { elasticsearchTemplate.deleteIndex(ChildEntity.class); elasticsearchTemplate.deleteIndex(ParentEntity.class); elasticsearchTemplate.createIndex(ParentEntity.class); elasticsearchTemplate.createIndex(ChildEntity.class); elasticsearchTemplate.putMapping(ParentEntity.class); elasticsearchTemplate.putMapping(ChildEntity.class); // index parents ParentEntity parent1 = new ParentEntity("parent1", "First Parent"); ParentEntity parent2 = new ParentEntity("parent2", "Second Parent"); ParentEntity parent3 = new ParentEntity("parent3", "Third Parent"); ParentEntity parent4 = new ParentEntity("parent4", "Fourth Parent"); ParentEntity parent5 = new ParentEntity("parent5", "Fifth Parent"); IndexQuery index = new IndexQuery(); index.setId(parent1.getId()); index.setObject(parent1);/*from w w w .j av a 2 s . c o m*/ elasticsearchTemplate.index(index); index = new IndexQuery(); index.setId(parent2.getId()); index.setObject(parent2); elasticsearchTemplate.index(index); index = new IndexQuery(); index.setId(parent3.getId()); index.setObject(parent3); elasticsearchTemplate.index(index); index = new IndexQuery(); index.setId(parent4.getId()); index.setObject(parent4); elasticsearchTemplate.index(index); index = new IndexQuery(); index.setId(parent5.getId()); index.setObject(parent5); elasticsearchTemplate.index(index); ChildEntity child1 = new ChildEntity("child1", "parent1", "First"); index = new IndexQuery(); index.setId(child1.getId()); index.setObject(child1); index.setParentId(child1.getParentId()); elasticsearchTemplate.index(index); ChildEntity child2 = new ChildEntity("child2", "parent2", "Second"); index = new IndexQuery(); index.setId(child2.getId()); index.setObject(child2); index.setParentId(child2.getParentId()); elasticsearchTemplate.index(index); ChildEntity child3 = new ChildEntity("child3", "parent3", "Third"); index = new IndexQuery(); index.setId(child3.getId()); index.setObject(child3); index.setParentId(child3.getParentId()); elasticsearchTemplate.index(index); ChildEntity child4 = new ChildEntity("child4", "parent4", "Fourth"); index = new IndexQuery(); index.setId(child4.getId()); index.setObject(child4); index.setParentId(child4.getParentId()); elasticsearchTemplate.index(index); ChildEntity child5 = new ChildEntity("child4", "parent4", "Fifth"); index = new IndexQuery(); index.setId(child5.getId()); index.setObject(child5); index.setParentId(child5.getParentId()); elasticsearchTemplate.index(index); elasticsearchTemplate.refresh(ParentEntity.class, true); elasticsearchTemplate.refresh(ChildEntity.class, true); // which works on children documents and returns parents. find parents of the child QueryBuilder query = hasChildQuery(ParentEntity.CHILD_TYPE, QueryBuilders.termQuery("name", child1.getName().toLowerCase())); List<ParentEntity> parents = elasticsearchTemplate.queryForList(new NativeSearchQuery(query), ParentEntity.class); // expecting only the first parent as result assertEquals(1, parents.size()); assertEquals(parent1.getId(), parents.get(0).getId()); // find parent of the child query = QueryBuilders.hasChildQuery(ParentEntity.CHILD_TYPE, QueryBuilders.termQuery("name", child3.getName().toLowerCase())); parents = elasticsearchTemplate.queryForList(new NativeSearchQuery(query), ParentEntity.class); assertEquals(1, parents.size()); assertEquals(parent3.getId(), parents.get(0).getId()); // find parent of the child with minimum of 2 children and/or max of 4 children query = QueryBuilders .hasChildQuery(ParentEntity.CHILD_TYPE, QueryBuilders.termQuery("name", child1.getName().toLowerCase())) .minChildren(2).maxChildren(4); parents = elasticsearchTemplate.queryForList(new NativeSearchQuery(query), ParentEntity.class); assertEquals(0, parents.size()); // How many hits are asked for in the first child query run is controlled using the factor parameter (defaults to 5). // For example, when asking for 10 parent docs (with from set to 0), then the child query will execute with 50 hits expected. // If not enough parents are found (in our example 10), and there are still more child docs to query, then the child search hits are expanded by multiplying by the incremental_factor (defaults to 2). query = QueryBuilders .topChildrenQuery(ParentEntity.CHILD_TYPE, QueryBuilders.termQuery("name", child1.getName().toLowerCase())) .score("max").factor(5).incrementalFactor(2); parents = elasticsearchTemplate.queryForList(new NativeSearchQuery(query), ParentEntity.class); assertEquals(1, parents.size()); assertEquals(parent1.getId(), parents.get(0).getId()); // which works on parent documents and return children. return child entity query = QueryBuilders.hasParentQuery(ParentEntity.PARENT_TYPE, QueryBuilders.termQuery("name", child3.getName().toLowerCase())); List<ChildEntity> children = elasticsearchTemplate.queryForList(new NativeSearchQuery(query), ChildEntity.class); assertEquals(1, children.size()); assertEquals(child3.getId(), children.get(0).getId()); // return child entity query = QueryBuilders.hasParentQuery(ParentEntity.PARENT_TYPE, QueryBuilders.termQuery("name", child1.getName().toLowerCase())); children = elasticsearchTemplate.queryForList(new NativeSearchQuery(query), ChildEntity.class); assertEquals(1, children.size()); assertEquals(child1.getId(), children.get(0).getId()); // which performs a query and returns the top X matching children. find all parents that have the first child using topChildren Query query = topChildrenQuery(ParentEntity.CHILD_TYPE, QueryBuilders.termQuery("name", child2.getName().toLowerCase())); parents = elasticsearchTemplate.queryForList(new NativeSearchQuery(query), ParentEntity.class); // we're expecting only the first parent as result assertEquals(1, parents.size()); assertEquals(parent2.getId(), parents.get(0).getId()); }
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 w w.j a va 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
private static List<IndexQuery> createSampleEntitiesWithMessage(String message, int numberOfEntities) { List<IndexQuery> indexQueries = new ArrayList<>(); for (int i = 0; i < numberOfEntities; i++) { String documentId = UUID.randomUUID().toString(); SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId);/* www . j av a 2 s . co m*/ sampleEntity.setMessage(message); sampleEntity.setRate(2); sampleEntity.setVersion(System.currentTimeMillis()); IndexQuery indexQuery = new IndexQuery(); indexQuery.setId(documentId); indexQuery.setObject(sampleEntity); indexQueries.add(indexQuery); } return indexQueries; }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test(expected = ElasticsearchException.class) public void shouldThrowElasticsearchExceptionWhenNoDocumentSpecified() { // given//from w ww. j a v a2 s. c o m IndexQuery indexQuery = new IndexQuery(); indexQuery.setId("2333343434"); indexQuery.setIndexName(INDEX_NAME); indexQuery.setType(TYPE_NAME); //when elasticsearchTemplate.index(indexQuery); }