Search in sources :

Example 1 with ElasticsearchQuery

use of com.enonic.xp.repo.impl.elasticsearch.query.ElasticsearchQuery in project xp by enonic.

the class ESQueryTranslator method doTranslate.

private static ElasticsearchQuery doTranslate(final SearchRequest request, final QueryTypeTranslator queryTypeTranslator) {
    final ESSource esSource = ESSourceFactory.create(request.getSearchSource());
    final QueryBuilder queryBuilder = queryTypeTranslator.createQueryBuilder(esSource.getFilters());
    final Query query = request.getQuery();
    final Set<AbstractAggregationBuilder> aggregations = new AggregationQueryBuilderFactory(queryTypeTranslator.getFieldNameResolver()).create(query.getAggregationQueries());
    final Set<SuggestBuilder.SuggestionBuilder> suggestions = new SuggestionQueryBuilderFactory(queryTypeTranslator.getFieldNameResolver()).create(query.getSuggestionQueries());
    final ElasticHighlightQuery highlight = new ElasticHighlightQueryBuilderFactory().create(query.getHighlight());
    final List<SortBuilder> sortBuilders = new SortQueryBuilderFactory(queryTypeTranslator.getFieldNameResolver()).create(query.getOrderBys());
    final QueryBuilder filterBuilder = new FilterBuilderFactory(queryTypeTranslator.getFieldNameResolver()).create(query.getPostFilters());
    return ElasticsearchQuery.create().addIndexNames(esSource.getIndexNames()).addIndexTypes(esSource.getIndexTypes()).query(queryBuilder).from(query.getFrom()).size(query.getSize()).explain(query.isExplain()).setReturnFields(request.getReturnFields()).setAggregations(aggregations).setSuggestions(suggestions).setHighlight(highlight).sortBuilders(sortBuilders).filter(filterBuilder).batchSize(queryTypeTranslator.getBatchSize()).searchMode(query.getSearchMode()).searchOptimizer(queryTypeTranslator.getSearchOptimizer()).searchPreference(request.getSearchPreference()).build();
}
Also used : SortBuilder(org.elasticsearch.search.sort.SortBuilder) ESSource(com.enonic.xp.repo.impl.elasticsearch.query.source.ESSource) NodeVersionQuery(com.enonic.xp.node.NodeVersionQuery) NodeVersionDiffQuery(com.enonic.xp.repo.impl.version.search.NodeVersionDiffQuery) ElasticHighlightQuery(com.enonic.xp.repo.impl.elasticsearch.query.ElasticHighlightQuery) ElasticsearchQuery(com.enonic.xp.repo.impl.elasticsearch.query.ElasticsearchQuery) NodeCommitQuery(com.enonic.xp.node.NodeCommitQuery) Query(com.enonic.xp.query.Query) NodeQuery(com.enonic.xp.node.NodeQuery) NodeBranchQuery(com.enonic.xp.repo.impl.branch.search.NodeBranchQuery) AbstractAggregationBuilder(org.elasticsearch.search.aggregations.AbstractAggregationBuilder) ElasticHighlightQuery(com.enonic.xp.repo.impl.elasticsearch.query.ElasticHighlightQuery) SuggestionQueryBuilderFactory(com.enonic.xp.repo.impl.elasticsearch.suggistion.query.SuggestionQueryBuilderFactory) QueryBuilder(org.elasticsearch.index.query.QueryBuilder) FilterBuilderFactory(com.enonic.xp.repo.impl.elasticsearch.query.translator.factory.FilterBuilderFactory) ElasticHighlightQueryBuilderFactory(com.enonic.xp.repo.impl.elasticsearch.highlight.ElasticHighlightQueryBuilderFactory) SortQueryBuilderFactory(com.enonic.xp.repo.impl.elasticsearch.query.translator.factory.SortQueryBuilderFactory) AggregationQueryBuilderFactory(com.enonic.xp.repo.impl.elasticsearch.aggregation.query.AggregationQueryBuilderFactory)

Example 2 with ElasticsearchQuery

use of com.enonic.xp.repo.impl.elasticsearch.query.ElasticsearchQuery in project xp by enonic.

the class CopyExecutor method execute.

public void execute() {
    final ElasticsearchQuery query = createQuery();
    final SearchRequestBuilder searchRequestBuilder = SearchRequestBuilderFactory.newFactory().query(query).client(this.client).resolvedSize(query.getBatchSize()).scrollTime(DEFAULT_SCROLL_TIME).build().createScrollRequest();
    SearchResponse scrollResp = searchRequestBuilder.execute().actionGet();
    while (true) {
        LOG.debug("Copy: Fetched [" + scrollResp.getHits().hits().length + "] hits, processing");
        if (scrollResp.getHits().getHits().length > 0) {
            doCopy(scrollResp);
        }
        scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(DEFAULT_SCROLL_TIME).execute().actionGet();
        if (scrollResp.getHits().getHits().length == 0) {
            clearScroll(scrollResp);
            break;
        }
    }
}
Also used : ElasticsearchQuery(com.enonic.xp.repo.impl.elasticsearch.query.ElasticsearchQuery) SearchRequestBuilder(org.elasticsearch.action.search.SearchRequestBuilder) SearchResponse(org.elasticsearch.action.search.SearchResponse)

Example 3 with ElasticsearchQuery

use of com.enonic.xp.repo.impl.elasticsearch.query.ElasticsearchQuery in project xp by enonic.

the class SearchExecutor method execute.

public SearchResult execute(final SearchRequest searchRequest) {
    final ElasticsearchQuery query = ESQueryTranslator.translate(searchRequest);
    final SearchMode searchMode = query.getSearchMode();
    final int size = query.getSize();
    final boolean anyAggregations = !query.getAggregations().isEmpty();
    if (searchMode.equals(SearchMode.COUNT)) {
        return CountExecutor.create(this.client).build().execute(query);
    }
    if (size == NodeSearchService.GET_ALL_SIZE_FLAG) {
        if (anyAggregations) {
            LOG.debug("Query with size [" + query.getSize() + "] > threshold [" + SCROLL_THRESHOLD + "] but with aggregations. Scan not possible.");
        } else {
            return ScrollExecutor.create(this.client).build().execute(query);
        }
    }
    return doSearch(query);
}
Also used : ElasticsearchQuery(com.enonic.xp.repo.impl.elasticsearch.query.ElasticsearchQuery) SearchMode(com.enonic.xp.node.SearchMode)

Aggregations

ElasticsearchQuery (com.enonic.xp.repo.impl.elasticsearch.query.ElasticsearchQuery)3 NodeCommitQuery (com.enonic.xp.node.NodeCommitQuery)1 NodeQuery (com.enonic.xp.node.NodeQuery)1 NodeVersionQuery (com.enonic.xp.node.NodeVersionQuery)1 SearchMode (com.enonic.xp.node.SearchMode)1 Query (com.enonic.xp.query.Query)1 NodeBranchQuery (com.enonic.xp.repo.impl.branch.search.NodeBranchQuery)1 AggregationQueryBuilderFactory (com.enonic.xp.repo.impl.elasticsearch.aggregation.query.AggregationQueryBuilderFactory)1 ElasticHighlightQueryBuilderFactory (com.enonic.xp.repo.impl.elasticsearch.highlight.ElasticHighlightQueryBuilderFactory)1 ElasticHighlightQuery (com.enonic.xp.repo.impl.elasticsearch.query.ElasticHighlightQuery)1 ESSource (com.enonic.xp.repo.impl.elasticsearch.query.source.ESSource)1 FilterBuilderFactory (com.enonic.xp.repo.impl.elasticsearch.query.translator.factory.FilterBuilderFactory)1 SortQueryBuilderFactory (com.enonic.xp.repo.impl.elasticsearch.query.translator.factory.SortQueryBuilderFactory)1 SuggestionQueryBuilderFactory (com.enonic.xp.repo.impl.elasticsearch.suggistion.query.SuggestionQueryBuilderFactory)1 NodeVersionDiffQuery (com.enonic.xp.repo.impl.version.search.NodeVersionDiffQuery)1 SearchRequestBuilder (org.elasticsearch.action.search.SearchRequestBuilder)1 SearchResponse (org.elasticsearch.action.search.SearchResponse)1 QueryBuilder (org.elasticsearch.index.query.QueryBuilder)1 AbstractAggregationBuilder (org.elasticsearch.search.aggregations.AbstractAggregationBuilder)1 SortBuilder (org.elasticsearch.search.sort.SortBuilder)1