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

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

Introduction

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

Prototype

public void setId(String id) 

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);/*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);
}