Example usage for org.springframework.data.elasticsearch.core.query IndexQuery IndexQuery

List of usage examples for org.springframework.data.elasticsearch.core.query IndexQuery IndexQuery

Introduction

In this page you can find the example usage for org.springframework.data.elasticsearch.core.query IndexQuery IndexQuery.

Prototype

IndexQuery

Source Link

Usage

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());

}