List of usage examples for org.springframework.data.elasticsearch.core.query IndexQuery IndexQuery
IndexQuery
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); 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. j a va2 s.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 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 w w w.jav a 2 s.c om return res; }
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); }/*from w w w .j a v a 2s .co m*/ return res; }
From source file:com.company.project.data.elasticsearch.service.UserESServiceTest.java
/** * Test of crud method, of class UserESService. *//* ww w . ja v 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.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);//from w w w. j ava2 s .c o 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: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.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test @Ignore("Missing fields implementation in Jest") public void shouldUseScriptedFields() { // given/*from w w w . ja v a 2s.co m*/ String documentId = randomNumeric(5); SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setRate(2); sampleEntity.setMessage("some message"); sampleEntity.setVersion(System.currentTimeMillis()); IndexQuery indexQuery = new IndexQuery(); indexQuery.setId(documentId); indexQuery.setObject(sampleEntity); elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class); Map<String, Object> params = new HashMap<>(); params.put("factor", 2); // when SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) .withScriptField(new ScriptField("scriptedRate", new Script("doc['rate'].value * factor", ScriptService.ScriptType.INLINE, null, params))) .build(); Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); // then assertThat(sampleEntities.getTotalElements(), equalTo(1L)); assertThat(sampleEntities.getContent().get(0).getScriptedRate(), equalTo(4L)); }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test @Ignore("By default, the search request will fail if there is no mapping associated with a field. The ignore_unmapped option allows to ignore fields that have no mapping and not sort by them") public void shouldReturnSortedPageableResultsGivenStringQuery() { // given//from w ww . j a v a 2 s .c o m String documentId = randomNumeric(5); SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setMessage("some message"); sampleEntity.setVersion(System.currentTimeMillis()); IndexQuery indexQuery = new IndexQuery(); indexQuery.setId(documentId); indexQuery.setObject(sampleEntity); elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class); StringQuery stringQuery = new StringQuery(matchAllQuery().toString(), new PageRequest(0, 10), new Sort(new Sort.Order(Sort.Direction.ASC, "messsage"))); // when Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(stringQuery, SampleEntity.class); // then assertThat(sampleEntities.getTotalElements(), is(greaterThanOrEqualTo(1L))); }
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());// ww w .jav a 2s .c o m index.setObject(parent1); 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()); }