Search in sources :

Example 21 with Query

use of org.springframework.data.elasticsearch.core.query.Query in project servicecomb-pack by apache.

the class ElasticsearchTransactionRepository method getSlowGlobalTransactionsTopN.

@Override
public List<GlobalTransaction> getSlowGlobalTransactionsTopN(int n) {
    List<GlobalTransaction> globalTransactions = new ArrayList();
    Query query = new NativeSearchQueryBuilder().withSearchType(SearchType.DFS_QUERY_THEN_FETCH).withQuery(QueryBuilders.matchAllQuery()).withSort(SortBuilders.fieldSort("durationTime").order(SortOrder.DESC)).withPageable(PageRequest.of(0, n)).build();
    SearchHits<GlobalTransactionDocument> result = this.template.search(query, GlobalTransactionDocument.class);
    result.forEach(hit -> {
        globalTransactions.add(hit.getContent());
    });
    return globalTransactions;
}
Also used : Query(org.springframework.data.elasticsearch.core.query.Query) IndexQuery(org.springframework.data.elasticsearch.core.query.IndexQuery) ArrayList(java.util.ArrayList) GlobalTransaction(org.apache.servicecomb.pack.alpha.core.fsm.repository.model.GlobalTransaction) NativeSearchQueryBuilder(org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder)

Example 22 with Query

use of org.springframework.data.elasticsearch.core.query.Query in project servicecomb-pack by apache.

the class ElasticsearchTransactionRepository method getTransactionStatistics.

public Map<String, Long> getTransactionStatistics() {
    Map<String, Long> statistics = new HashMap<>();
    Query query = new NativeSearchQueryBuilder().addAggregation(AggregationBuilders.terms("count_group_by_state").field("state.keyword")).build();
    SearchHits<Map> result = this.template.search(query, Map.class, IndexCoordinates.of(INDEX_NAME));
    if (result.getTotalHits() > 0) {
        final ParsedStringTerms groupState = result.getAggregations().get("count_group_by_state");
        statistics = groupState.getBuckets().stream().collect(Collectors.toMap(MultiBucketsAggregation.Bucket::getKeyAsString, MultiBucketsAggregation.Bucket::getDocCount));
    }
    return statistics;
}
Also used : Query(org.springframework.data.elasticsearch.core.query.Query) IndexQuery(org.springframework.data.elasticsearch.core.query.IndexQuery) HashMap(java.util.HashMap) NativeSearchQueryBuilder(org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder) ParsedStringTerms(org.elasticsearch.search.aggregations.bucket.terms.ParsedStringTerms) HashMap(java.util.HashMap) Map(java.util.Map)

Example 23 with Query

use of org.springframework.data.elasticsearch.core.query.Query in project prolog by woowacourse.

the class StudylogDocumentService method findBySearchKeyword.

@Override
public StudylogDocumentResponse findBySearchKeyword(String keyword, List<Long> tags, List<Long> missions, List<Long> levels, List<String> usernames, LocalDate start, LocalDate end, Pageable pageable) {
    final Query query = StudylogDocumentQueryBuilder.makeQuery(preprocess(keyword), tags, missions, levels, usernames, start, end, pageable);
    // Query 결과를 ES에서 조회한다.
    final SearchHits<StudylogDocument> searchHits = elasticsearchRestTemplate.search(query, StudylogDocument.class, IndexCoordinates.of("studylog-document"));
    // 조회된 SearchHits를 페이징할 수 있는 SearchPage로 변경한다.
    final SearchPage<StudylogDocument> searchPages = SearchHitSupport.searchPageFor(searchHits, query.getPageable());
    final List<Long> studylogIds = searchPages.stream().map(searchPage -> searchPage.getContent().getId()).collect(toList());
    return StudylogDocumentResponse.of(studylogIds, searchPages.getTotalElements(), searchPages.getTotalPages(), searchPages.getNumber());
}
Also used : IndexCoordinates(org.springframework.data.elasticsearch.core.mapping.IndexCoordinates) SearchHits(org.springframework.data.elasticsearch.core.SearchHits) Query(org.springframework.data.elasticsearch.core.query.Query) SearchPage(org.springframework.data.elasticsearch.core.SearchPage) Profile(org.springframework.context.annotation.Profile) StudylogDocumentRepository(wooteco.prolog.studylog.domain.repository.StudylogDocumentRepository) StudylogDocumentResponse(wooteco.prolog.studylog.application.dto.StudylogDocumentResponse) ElasticsearchRestTemplate(org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate) SearchHitSupport(org.springframework.data.elasticsearch.core.SearchHitSupport) StudylogDocumentQueryBuilder(wooteco.prolog.studylog.domain.StudylogDocumentQueryBuilder) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) Service(org.springframework.stereotype.Service) LocalDate(java.time.LocalDate) StudylogDocument(wooteco.prolog.studylog.domain.StudylogDocument) Pageable(org.springframework.data.domain.Pageable) StudylogRepository(wooteco.prolog.studylog.domain.repository.StudylogRepository) Query(org.springframework.data.elasticsearch.core.query.Query) StudylogDocument(wooteco.prolog.studylog.domain.StudylogDocument)

Example 24 with Query

use of org.springframework.data.elasticsearch.core.query.Query in project servicecomb-pack by apache.

the class ElasticsearchTransactionRepository method getGlobalTransactionByGlobalTxId.

@Override
public GlobalTransaction getGlobalTransactionByGlobalTxId(String globalTxId) {
    Query query = new NativeSearchQueryBuilder().withIds(Collections.singletonList(globalTxId)).build();
    SearchHit<GlobalTransactionDocument> result = this.template.searchOne(query, GlobalTransactionDocument.class);
    return result.getContent();
}
Also used : Query(org.springframework.data.elasticsearch.core.query.Query) IndexQuery(org.springframework.data.elasticsearch.core.query.IndexQuery) NativeSearchQueryBuilder(org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder)

Example 25 with Query

use of org.springframework.data.elasticsearch.core.query.Query in project spring-study by backtony.

the class MemberSearchQueryRepository method findByStartWithNickname.

public List<MemberDocument> findByStartWithNickname(String nickname, Pageable pageable) {
    Criteria criteria = Criteria.where("nickname").startsWith(nickname);
    Query query = new CriteriaQuery(criteria).setPageable(pageable);
    SearchHits<MemberDocument> search = operations.search(query, MemberDocument.class);
    return search.stream().map(SearchHit::getContent).collect(Collectors.toList());
}
Also used : Query(org.springframework.data.elasticsearch.core.query.Query) CriteriaQuery(org.springframework.data.elasticsearch.core.query.CriteriaQuery) MemberDocument(com.example.elasticsearch.member.domain.MemberDocument) CriteriaQuery(org.springframework.data.elasticsearch.core.query.CriteriaQuery) Criteria(org.springframework.data.elasticsearch.core.query.Criteria)

Aggregations

Query (org.springframework.data.elasticsearch.core.query.Query)44 Test (org.junit.jupiter.api.Test)22 SpringIntegrationTest (org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest)17 NativeSearchQueryBuilder (org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder)16 IndexCoordinates (org.springframework.data.elasticsearch.core.mapping.IndexCoordinates)15 IndexQuery (org.springframework.data.elasticsearch.core.query.IndexQuery)15 DisplayName (org.junit.jupiter.api.DisplayName)14 ArrayList (java.util.ArrayList)13 List (java.util.List)10 CriteriaQuery (org.springframework.data.elasticsearch.core.query.CriteriaQuery)10 Collectors (java.util.stream.Collectors)9 MoreLikeThisQuery (org.springframework.data.elasticsearch.core.query.MoreLikeThisQuery)9 Nullable (org.springframework.lang.Nullable)9 UpdateQuery (org.springframework.data.elasticsearch.core.query.UpdateQuery)8 QueryBuilders (org.elasticsearch.index.query.QueryBuilders)7 HashMap (java.util.HashMap)6 Map (java.util.Map)6 MultiSearchRequest (org.elasticsearch.action.search.MultiSearchRequest)6 Log (org.apache.commons.logging.Log)5 LogFactory (org.apache.commons.logging.LogFactory)5