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

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

Introduction

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

Prototype

public void setId(String id) 

Source Link

Usage

From source file:com.company.project.data.elasticsearch.service.UserESServiceTest.java

public void testRepositoryQueries() {
    System.out.println("testRepository");

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

    String id = UUID.randomUUID().toString();
    User user = new User();
    user.setId(id);//from w  w  w  .jav a2  s  .  co m
    user.setName("user-" + id);
    user.setRole(1l);
    user.setPath("1.0");
    Map<Integer, Collection<String>> userFilter = new HashMap<>();
    userFilter.put(1, Arrays.asList("filter1", "filter2"));
    userFilter.put(2, Arrays.asList("filter11", "filter12"));
    user.setFilter(userFilter);
    userRepository.save(user);

    boolean exists = userRepository.exists(user.getId());
    assertTrue(exists);

    List<User> users = new ArrayList<>();
    id = UUID.randomUUID().toString();
    user = new User();
    user.setId(id);
    user.setName("user-" + id);
    user.setRole(2l);
    user.setPath("1.1.0");
    userFilter = new HashMap<>();
    userFilter.put(1, Arrays.asList("filter1", "filter3"));
    userFilter.put(2, Arrays.asList("filter11", "filter13"));
    user.setFilter(userFilter);
    users.add(user);
    //userRepository.save(user);
    id = UUID.randomUUID().toString();
    user = new User();
    user.setId(id);
    user.setName("user-" + id);
    user.setRole(3l);
    user.setPath("1.1.1.0");
    userFilter = new HashMap<>();
    userFilter.put(1, Arrays.asList("filter1", "filter4"));
    userFilter.put(2, Arrays.asList("filter11", "filter14"));
    user.setFilter(userFilter);
    users.add(user);
    //userRepository.save(user);
    userRepository.save(users); //bulk save
    exists = userRepository.exists(user.getId());
    assertTrue(exists);

    elasticsearchTemplate.refresh(User.class, true);

    GetQuery getQuery = new GetQuery();
    getQuery.setId(id);
    User userIndexed = elasticsearchTemplate.queryForObject(getQuery, User.class);
    assertEquals("user-" + id, "" + userIndexed.getName());
    assertEquals(id, "" + userIndexed.getId());
    assertEquals("3", "" + userIndexed.getRole());

    String facetName = "testName";
    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
            .withFacet(new TermFacetRequestBuilder(facetName).fields("role").descCount().build()).build();

    // when
    FacetedPage<User> result = elasticsearchTemplate.queryForPage(searchQuery, User.class);
    assertEquals(3, result.getNumberOfElements());
    TermResult facet = (TermResult) result.getFacet(facetName);
    assertEquals(3, facet.getTerms().size());
    for (Term term : facet.getTerms()) {
        assertTrue("1".equals(term.getTerm()) || "2".equals(term.getTerm()) || "3".equals(term.getTerm()));
        System.out.println("Facet term : " + term.getTerm());
        //System.out.println("Facet count : " + term.getCount());
        //result
        //Facet term : 3
        //Facet term : 2
        //Facet term : 1
    }

    // query list all
    searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
            //.withFacet(new TermFacetRequestBuilder(facetName).fields("role").descCount().build())
            .build();
    List<User> userList = elasticsearchTemplate.queryForList(searchQuery, User.class);
    assertEquals(3, userList.size());
    for (User u : userList) {
        System.out.println("User ID: " + u.getId());
        System.out.println("User Name: " + u.getName());
    }

    // query list all with pagination
    searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withPageable(new PageRequest(0, 10))
            //.withIndices("xuseridx")
            //.withTypes("xusertype")
            //.withFacet(new TermFacetRequestBuilder(facetName).fields("role").descCount().build())
            .build();
    Page<User> pagedUsers = elasticsearchTemplate.queryForPage(searchQuery, User.class);
    assertEquals(3, pagedUsers.getTotalElements());
    assertEquals(1, pagedUsers.getTotalPages());
    for (User u : pagedUsers.getContent()) {
        System.out.println("User ID: " + u.getId());
        System.out.println("User Name: " + u.getName());
    }

    // query filter with key "1" contains value "filter3" and key "2" contains value "filter13"
    QueryBuilder builder = nestedQuery("filter",
            boolQuery().must(termQuery("1", "filter3")).must(termQuery("2", "filter13")));
    searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
    userList = elasticsearchTemplate.queryForList(searchQuery, User.class);
    assertEquals(1, userList.size());
    for (User u : userList) {
        System.out.println("User ID: " + u.getId());
        System.out.println("User Name: " + u.getName());
    }

    // query all with filter path prefix "1.1"
    builder = boolQuery().must(prefixQuery("path", "1.1"));
    searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
    userList = elasticsearchTemplate.queryForList(searchQuery, User.class);
    assertEquals(2, userList.size());
    for (User u : userList) {
        System.out.println("User ID: " + u.getId());
        System.out.println("User Name: " + u.getName());
    }

    builder = QueryBuilders.multiMatchQuery("user", // term to search
            "path", "name" // field to search
    );
    searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
    userList = elasticsearchTemplate.queryForList(searchQuery, User.class);
    assertEquals(3, userList.size());
    for (User u : userList) {
        System.out.println("User ID: " + u.getId());
        System.out.println("User Name: " + u.getName());
    }

    // ref: https://github.com/elasticsearch/elasticsearch/blob/master/docs/java-api/query-dsl-queries.asciidoc#boolean-query
    // http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/query-dsl-queries.html
    // Boolean Query
    builder = boolQuery().must(termQuery("content", "test1")) // field name, keyword
            .must(termQuery("content", "test4")) // field name, keyword
            .mustNot(termQuery("content", "test2")) // field name, keyword
            .should(termQuery("content", "test3")); // field name, keyword
    // Boosting Query
    builder = QueryBuilders.boostingQuery().positive(termQuery("name", "kimchy")) // query that will promote documents
            .negative(termQuery("name", "dadoonet")) // query that will demote documents
            .negativeBoost(0.2f); // negative boost
    //IDs Query
    builder = QueryBuilders.idsQuery().ids("1", "2");
    // Constant Score Query
    builder = QueryBuilders.constantScoreQuery(termFilter("name", "kimchy") // you can use a filter
    ).boost(2.0f); // filter score
    builder = QueryBuilders.constantScoreQuery(termQuery("name", "kimchy") // you can use a query
    ).boost(2.0f);
    // Prefix Query
    builder = QueryBuilders.prefixQuery("brand", // field
            "heine" // term
    );
    // QueryString Query
    builder = QueryBuilders.queryString("+kimchy -elasticsearch");
    // Range Query
    builder = QueryBuilders.rangeQuery("price") // field
            .from(5) // from
            .to(10) // to
            .includeLower(true) // include lower value means that from is gt when false or gte when true
            .includeUpper(false); // include upper value means that to is lt when false or lte when true

    builder = QueryBuilders.disMaxQuery() // add your queries
            .add(termQuery("name", "kimchy")) // add your queries
            .add(termQuery("name", "elasticsearch")) // 
            .boost(1.2f) // boost factor
            .tieBreaker(0.7f); // tie breaker
    // Fuzzy Like This (Field) Query (flt and flt_field)
    builder = QueryBuilders.fuzzyLikeThisQuery("name.first", "name.last") // fields
            .likeText("text like this one") // text
            .maxQueryTerms(12); // max num of Terms in generated queries
    //FuzzyQuery
    builder = QueryBuilders.fuzzyQuery("name", // field
            "kimzhy" // term
    );
}

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

@Test
public void shouldReturnNullForInexistentId() {
    // given/*from  w w w .  j a v  a 2s .c o  m*/
    // when
    GetQuery getQuery = new GetQuery();
    getQuery.setId("1");
    SampleEntity sampleEntity1 = elasticsearchTemplate.queryForObject(getQuery, SampleEntity.class);
    // then
    assertNull("entity must be null....", sampleEntity1);
}

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

@Test
public void shouldReturnObjectForGivenId() {
    // given//ww w . ja  va  2s .co m
    String documentId = randomNumeric(5);
    SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message")
            .version(System.currentTimeMillis()).build();
    IndexQuery indexQuery = getIndexQuery(sampleEntity);
    elasticsearchTemplate.index(indexQuery);
    // when
    GetQuery getQuery = new GetQuery();
    getQuery.setId(documentId);
    SampleEntity sampleEntity1 = elasticsearchTemplate.queryForObject(getQuery, SampleEntity.class);
    // then
    assertNotNull("entity can't be null....", sampleEntity1);
    assertEquals(sampleEntity, sampleEntity1);
}

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

@Test
public void shouldDoUpsertIfDocumentDoesNotExist() {
    //given//w  w  w .j a  v a 2s.c om
    String documentId = randomNumeric(5);
    String message = "test message";
    IndexRequest indexRequest = new IndexRequest();
    indexRequest.source("message", message);
    UpdateQuery updateQuery = new UpdateQueryBuilder().withId(documentId).withDoUpsert(true)
            .withClass(SampleEntity.class).withIndexRequest(indexRequest).build();
    //when
    elasticsearchTemplate.update(updateQuery);
    //then
    GetQuery getQuery = new GetQuery();
    getQuery.setId(documentId);
    SampleEntity indexedEntity = elasticsearchTemplate.queryForObject(getQuery, SampleEntity.class);
    assertThat(indexedEntity.getMessage(), is(message));
}

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

@Test
public void shouldIndexNotDocumentEntity() {

    // given/* www .  j  a  va2  s  .  com*/
    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 shouldDoIndexWithoutId() {
    // given/*from  w  w w  .j a v a 2s. c  o  m*/
    // document
    SampleEntity sampleEntity = new SampleEntity();
    sampleEntity.setMessage("some message");
    sampleEntity.setVersion(System.currentTimeMillis());

    IndexQuery indexQuery = new IndexQuery();
    indexQuery.setObject(sampleEntity);
    // when
    String documentId = elasticsearchTemplate.index(indexQuery);
    // then
    assertThat(sampleEntity.getId(), is(equalTo(documentId)));

    GetQuery getQuery = new GetQuery();
    getQuery.setId(documentId);
    SampleEntity result = elasticsearchTemplate.queryForObject(getQuery, SampleEntity.class);
    assertThat(result.getId(), is(equalTo(documentId)));
}

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

@Test
public void shouldDoPartialUpdateForExistingDocument() {
    //given/*from  w  w w.  ja va2  s  . co m*/
    String documentId = randomNumeric(5);
    String messageBeforeUpdate = "some test message";
    String messageAfterUpdate = "test message";

    SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message(messageBeforeUpdate)
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery = getIndexQuery(sampleEntity);

    elasticsearchTemplate.index(indexQuery);
    elasticsearchTemplate.refresh(SampleEntity.class);

    IndexRequest indexRequest = new IndexRequest();
    indexRequest.source("message", messageAfterUpdate);
    UpdateQuery updateQuery = new UpdateQueryBuilder().withId(documentId).withClass(SampleEntity.class)
            .withIndexRequest(indexRequest).build();
    // when
    elasticsearchTemplate.update(updateQuery);
    //then
    GetQuery getQuery = new GetQuery();
    getQuery.setId(documentId);
    SampleEntity indexedEntity = elasticsearchTemplate.queryForObject(getQuery, SampleEntity.class);
    assertThat(indexedEntity.getMessage(), is(messageAfterUpdate));
}

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

@Test
public void shouldDoBulkUpdate() {
    //given//from  w w  w .  j a  v a2s.  co  m
    String documentId = randomNumeric(5);
    String messageBeforeUpdate = "some test message";
    String messageAfterUpdate = "test message";

    SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message(messageBeforeUpdate)
            .version(System.currentTimeMillis()).build();

    IndexQuery indexQuery = getIndexQuery(sampleEntity);

    elasticsearchTemplate.index(indexQuery);
    elasticsearchTemplate.refresh(SampleEntity.class);

    IndexRequest indexRequest = new IndexRequest();
    indexRequest.source("message", messageAfterUpdate);
    UpdateQuery updateQuery = new UpdateQueryBuilder().withId(documentId).withClass(SampleEntity.class)
            .withIndexRequest(indexRequest).build();

    List<UpdateQuery> queries = new ArrayList<>();
    queries.add(updateQuery);

    // when
    elasticsearchTemplate.bulkUpdate(queries);
    //then
    GetQuery getQuery = new GetQuery();
    getQuery.setId(documentId);
    SampleEntity indexedEntity = elasticsearchTemplate.queryForObject(getQuery, SampleEntity.class);
    assertThat(indexedEntity.getMessage(), is(messageAfterUpdate));
}

From source file:org.springframework.data.elasticsearch.core.ElasticsearchTemplateTests.java

@Test
public void shouldReturnObjectForGivenId() {
    // given//from ww w  .j a v  a  2  s. com
    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);
    // when
    GetQuery getQuery = new GetQuery();
    getQuery.setId(documentId);
    SampleEntity sampleEntity1 = elasticsearchTemplate.queryForObject(getQuery, SampleEntity.class);
    // then
    assertNotNull("not null....", sampleEntity1);
    assertEquals(sampleEntity, sampleEntity1);
}

From source file:org.springframework.data.elasticsearch.core.ElasticsearchTemplateTests.java

@Test
public void shouldDoPartialUpdateForExistingDocument() {
    //given/*from ww w.j av  a 2s . co  m*/
    String documentId = randomNumeric(5);
    String messageBeforeUpdate = "some test message";
    String messageAfterUpdate = "test message";

    SampleEntity sampleEntity = new SampleEntity();
    sampleEntity.setId(documentId);
    sampleEntity.setMessage(messageBeforeUpdate);
    sampleEntity.setVersion(System.currentTimeMillis());

    IndexQuery indexQuery = new IndexQuery();
    indexQuery.setId(documentId);
    indexQuery.setObject(sampleEntity);

    elasticsearchTemplate.index(indexQuery);
    elasticsearchTemplate.refresh(SampleEntity.class, true);

    IndexRequest indexRequest = new IndexRequest();
    indexRequest.source("message", messageAfterUpdate);
    UpdateQuery updateQuery = new UpdateQueryBuilder().withId(documentId).withClass(SampleEntity.class)
            .withIndexRequest(indexRequest).build();
    // when
    elasticsearchTemplate.update(updateQuery);
    //then
    GetQuery getQuery = new GetQuery();
    getQuery.setId(documentId);
    SampleEntity indexedEntity = elasticsearchTemplate.queryForObject(getQuery, SampleEntity.class);
    assertThat(indexedEntity.getMessage(), is(messageAfterUpdate));
}