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

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

Introduction

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

Prototype

public void setType(String type) 

Source Link

Usage

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")));
}