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

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

Introduction

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

Prototype

IndexQueryBuilder

Source Link

Usage

From source file:com.oneops.search.msg.index.impl.ESIndexer.java

private void index(String id, String type, String index, String message) {
    IndexQueryBuilder indexQueryBuilder = new IndexQueryBuilder().withIndexName(index);
    if (id != null)
        indexQueryBuilder.withId(String.valueOf(id));
    IndexQuery query = indexQueryBuilder.withType(type).withSource(message).build();
    String docId = template.index(query);
    logger.info("Indexed message id  " + docId + " of type " + type + " index:" + index);
}

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);//from   w  w w.  jav a 2 s. c o  m
    //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:com.company.project.data.elasticsearch.service.UserESServiceTest.java

/**
 * Test of crud method, of class UserESService.
 *///from   w  w w.j  ava 2  s.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);//  w w w  .  j  a  v  a2 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
public void shouldIndexSampleEntityWithIndexAndTypeAtRuntime() {
    // given//from   w  w w  .ja  v  a 2 s . c o  m
    String documentId = randomNumeric(5);
    SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message")
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery = new IndexQueryBuilder().withId(documentId).withIndexName(INDEX_NAME)
            .withType(TYPE_NAME).withObject(sampleEntity).build();

    elasticsearchTemplate.index(indexQuery);
    elasticsearchTemplate.refresh(INDEX_NAME);

    SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices(INDEX_NAME).withTypes(TYPE_NAME)
            .withQuery(matchAllQuery()).build();
    // when
    Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
    // then
    assertThat(sampleEntities, is(notNullValue()));
    assertThat(sampleEntities.getTotalElements(), greaterThanOrEqualTo(1L));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldIndexVersionnedEntity() {
    // given//from  ww  w .  j av a  2s  . c o m
    String documentId = randomNumeric(5);
    BasicEntity entity = new BasicEntity(documentId, "test");

    IndexQuery indexQuery = new IndexQueryBuilder().withId(documentId).withIndexName(INDEX_NAME)
            .withType(TYPE_NAME).withVersion(entity.getVersion()).withObject(entity).build();

    elasticsearchTemplate.index(indexQuery);
    elasticsearchTemplate.refresh(INDEX_NAME);

    SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices(INDEX_NAME).withTypes(TYPE_NAME)
            .withQuery(matchAllQuery()).build();
    // when
    Page<BasicEntity> entities = elasticsearchTemplate.queryForPage(searchQuery, BasicEntity.class);
    // then
    assertThat(entities, is(notNullValue()));
    assertThat(entities.getTotalElements(), greaterThanOrEqualTo(1L));
    assertThat(entities.getContent().get(0).getFirstName(), equalTo(entity.getFirstName()));
    assertThat(entities.getContent().get(0).getVersion(), equalTo(entity.getVersion()));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldReturnCountForGivenCriteriaQueryWithGivenMultiIndices() {
    // given//  w ww . ja v  a2s.com
    cleanUpIndices();
    String documentId1 = randomNumeric(5);
    SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId1).message("some message")
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery1 = new IndexQueryBuilder().withId(sampleEntity1.getId()).withIndexName("test-index-1")
            .withObject(sampleEntity1).build();

    String documentId2 = randomNumeric(5);
    SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2).message("some test message")
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery2 = new IndexQueryBuilder().withId(sampleEntity2.getId()).withIndexName("test-index-2")
            .withObject(sampleEntity2).build();

    elasticsearchTemplate.bulkIndex(Arrays.asList(indexQuery1, indexQuery2));
    elasticsearchTemplate.refresh("test-index-1");
    elasticsearchTemplate.refresh("test-index-2");

    CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria());
    criteriaQuery.addIndices("test-index-1", "test-index-2");
    // when
    long count = elasticsearchTemplate.count(criteriaQuery);
    // then
    assertThat(count, is(equalTo(2L)));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldReturnCountForGivenSearchQueryWithGivenMultiIndices() {
    // given/*from   ww  w.j a  va2  s  .c  o m*/
    cleanUpIndices();
    String documentId1 = randomNumeric(5);
    SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId1).message("some message")
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery1 = new IndexQueryBuilder().withId(sampleEntity1.getId()).withIndexName("test-index-1")
            .withObject(sampleEntity1).build();

    String documentId2 = randomNumeric(5);
    SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2).message("some test message")
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery2 = new IndexQueryBuilder().withId(sampleEntity2.getId()).withIndexName("test-index-2")
            .withObject(sampleEntity2).build();

    elasticsearchTemplate.bulkIndex(Arrays.asList(indexQuery1, indexQuery2));
    elasticsearchTemplate.refresh("test-index-1");
    elasticsearchTemplate.refresh("test-index-2");

    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
            .withIndices("test-index-1", "test-index-2").build();
    // when
    long count = elasticsearchTemplate.count(searchQuery);
    // then
    assertThat(count, is(equalTo(2L)));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldReturnCountForGivenCriteriaQueryWithGivenIndexNameForSpecificIndex() {
    // given//  www .ja v  a 2s  .co m
    cleanUpIndices();
    String documentId1 = randomNumeric(5);
    SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId1).message("some message")
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery1 = new IndexQueryBuilder().withId(sampleEntity1.getId()).withIndexName("test-index-1")
            .withObject(sampleEntity1).build();

    String documentId2 = randomNumeric(5);
    SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2).message("some test message")
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery2 = new IndexQueryBuilder().withId(sampleEntity2.getId()).withIndexName("test-index-2")
            .withObject(sampleEntity2).build();

    elasticsearchTemplate.bulkIndex(Arrays.asList(indexQuery1, indexQuery2));
    elasticsearchTemplate.refresh("test-index-1");
    elasticsearchTemplate.refresh("test-index-2");

    CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria());
    criteriaQuery.addIndices("test-index-1");
    // when
    long count = elasticsearchTemplate.count(criteriaQuery);
    // then
    assertThat(count, is(equalTo(1L)));
}

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
public void shouldReturnCountForGivenSearchQueryWithGivenIndexNameForSpecificIndex() {
    // given//from  ww  w  .  ja va 2s. c om
    cleanUpIndices();
    String documentId1 = randomNumeric(5);
    SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId1).message("some message")
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery1 = new IndexQueryBuilder().withId(sampleEntity1.getId()).withIndexName("test-index-1")
            .withObject(sampleEntity1).build();

    String documentId2 = randomNumeric(5);
    SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2).message("some test message")
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery2 = new IndexQueryBuilder().withId(sampleEntity2.getId()).withIndexName("test-index-2")
            .withObject(sampleEntity2).build();

    elasticsearchTemplate.bulkIndex(Arrays.asList(indexQuery1, indexQuery2));
    elasticsearchTemplate.refresh("test-index-1");
    elasticsearchTemplate.refresh("test-index-2");

    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
            .withIndices("test-index-1").build();
    // when
    long count = elasticsearchTemplate.count(searchQuery);
    // then
    assertThat(count, is(equalTo(1L)));
}