public static EsScrollResult unrestrictedScroll(ElasticSearchService ess, EsScrollResult currentResults) { return ess.scroll(currentResults); }
@Override public void close() { if (!closed) { searchService.clearScroll(scrollResult); closed = true; pos = -1; } }
@Override public void run() throws NuxeoException { if (StringUtils.isNotBlank(this.query)) { // ES query ElasticSearchService ess = ToutaticeEsQueryHelper.getElasticSearchService(); NxQueryBuilder queryBuilder = new NxQueryBuilder(super.session).fetchFromElasticsearch().nxql(this.query).limit(this.limit); this.iqr = ess.queryAndAggregate(queryBuilder).getRows(); } else { throw new NuxeoException("No query defined."); } }
@Override public List<DocumentationItem> searchDocumentation(CoreSession session, String distribId, String fulltext, String targetType) { DistributionSnapshot snap = Framework.getService(SnapshotManager.class).getSnapshot(distribId, session); DocumentModel dist = ((RepositoryDistributionSnapshot) snap).getDoc(); String query = QueryHelper.select(DocumentationItem.TYPE_NAME, dist, NXQL.ECM_FULLTEXT, fulltext); if (targetType != null) { query += " AND " + DocumentationItem.PROP_TARGET_TYPE + " = " + NXQL.escapeString(targetType); } ElasticSearchService ess = Framework.getService(ElasticSearchService.class); DocumentModelList docs = ess.query(new NxQueryBuilder(session).nxql(query).limit(MAX_RESULTS)); List<DocumentationItem> result = new ArrayList<>(); for (DocumentModel doc : docs) { DocumentationItem docItem = doc.getAdapter(DocumentationItem.class); if (docItem != null) { result.add(docItem); } } return result; }
EsResult ret = ess.queryAndAggregate(nxQuery); DocumentModelList dmList = ret.getDocuments(); currentAggregates = new HashMap<>(ret.getAggregates().size());
@Override public List<NuxeoArtifact> searchArtifact(CoreSession session, String distribId, String fulltext) { List<NuxeoArtifact> result = new ArrayList<>(); DistributionSnapshot snap = Framework.getService(SnapshotManager.class).getSnapshot(distribId, session); if (!(snap instanceof RepositoryDistributionSnapshot)) { return Collections.emptyList(); } DocumentModel dist = ((RepositoryDistributionSnapshot) snap).getDoc(); StrBuilder q = new StrBuilder("SELECT * FROM Document WHERE "); q.append("ecm:path STARTSWITH '").append(dist.getPathAsString()).append("'"); String query = q.toString(); if (fulltext != null) { query += " AND " + NXQL.ECM_FULLTEXT + " = " + NXQL.escapeString(fulltext); } ElasticSearchService ess = Framework.getService(ElasticSearchService.class); DocumentModelList docs = ess.query(new NxQueryBuilder(session).nxql(query).limit(MAX_RESULTS)); for (DocumentModel doc : docs) { NuxeoArtifact artifact = mapDoc2Artifact(doc); if (artifact != null) { result.add(artifact); } } return result; }
EsResult ret = ess.queryAndAggregate(nxQuery); DocumentModelList dmList = ret.getDocuments(); currentAggregates = new HashMap<>(ret.getAggregates().size());
private SearchHit nextHit() { if (relativePos == scrollResult.getElasticsearchResponse().getHits().getHits().length) { // Retrieve next scroll scrollResult = searchService.scroll(scrollResult); relativePos = 0; } SearchHit hit = scrollResult.getElasticsearchResponse().getHits().getAt(relativePos); relativePos++; pos++; return hit; }
/** * Execute paginated query on ES. * * @param session * @param nxql * @param currentPageIndex * @param pageSize * @return DocumentModelList fetched from Es or from DB */ public static DocumentModelList query(CoreSession session, String nxql, int currentPageIndex, int pageSize, boolean fetchDocFromEs) { // Builder NxQueryBuilder qB = new NxQueryBuilder(session).nxql(nxql); // Fetch documents from Es if (fetchDocFromEs) { qB.fetchFromElasticsearch(); } else { qB.fetchFromDatabase(); } // Pagination if (pageSize > 0 && currentPageIndex >= 0) { qB.offset(currentPageIndex * pageSize); qB.limit(pageSize); } else { qB.limit(DEFAULT_MAX_RESULT_SIZE); } // Query return getElasticSearchService().query(qB); }
@Override public void run() { if (StringUtils.isNotBlank(this.nxql)) { // ES query ElasticSearchService ess = ToutaticeEsQueryHelper.getElasticSearchService(); NxQueryBuilder queryBuilder = new NxQueryBuilder(super.session).nxql(this.nxql); if (this.fetchFromEs) { queryBuilder.fetchFromElasticsearch(); } else { queryBuilder.fetchFromDatabase(); } this.result = ess.scroll(queryBuilder.limit(this.scrollBucketSize), this.keepAlive); } else { throw new NuxeoException("No query defined."); } }