.getMetamodel(entityMetadata.getPersistenceUnit()); FilteredQueryBuilder queryBuilder = QueryBuilders.filteredQuery(null, filter); SearchRequestBuilder builder = txClient.prepareSearch(entityMetadata.getSchema().toLowerCase()) .setTypes(entityMetadata.getTableName());
@Override public Map<String, Object> search(KunderaMetadata kunderaMetadata, KunderaQuery kunderaQuery, PersistenceDelegator persistenceDelegator, EntityMetadata m, int firstResult, int maxResults) { ESQuery query = new ESQuery<>(kunderaQuery, persistenceDelegator, kunderaMetadata); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata() .getMetamodel(m.getPersistenceUnit()); Expression whereExpression = KunderaQueryUtils.getWhereClause(kunderaQuery.getJpqlExpression()); QueryBuilder filter = whereExpression != null ? query.getEsFilterBuilder() .populateFilterBuilder(((WhereClause) whereExpression).getConditionalExpression(), m) : null; FilteredQueryBuilder queryBuilder = QueryBuilders.filteredQuery(null, filter); SearchResponse response = getSearchResponse(kunderaQuery, queryBuilder, filter, query, m, firstResult, maxResults, kunderaMetadata); return buildResultMap(response, kunderaQuery, m, metaModel); }
@Override public <P extends ParaObject> List<P> findTermInList(String appid, String type, String field, List<?> terms, Pager... pager) { if (StringUtils.isBlank(field) || terms == null) { return Collections.emptyList(); } QueryBuilder qb = QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(), FilterBuilders.termsFilter(field, terms)); return searchQuery(appid, type, qb, pager); }
@Override @SuppressWarnings("unchecked") public <P extends ParaObject> List<P> findTerms(String appid, String type, Map<String, ?> terms, boolean mustMatchAll, Pager... pager) { if (terms == null || terms.isEmpty()) { return Collections.emptyList(); } FilterBuilder fb = getTermsFilter(terms, mustMatchAll); if (fb == null) { return Collections.emptyList(); } else { QueryBuilder qb = QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(), fb); return searchQuery(appid, type, qb, pager); } }
@Override public void unindexAll(String appid, Map<String, ?> terms, boolean matchAll) { if (StringUtils.isBlank(appid) || terms == null || terms.isEmpty()) { return; } DeleteByQueryRequestBuilder dqrb = client().prepareDeleteByQuery(appid); dqrb.setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(), getTermsFilter(terms, matchAll))); if (isAsyncEnabled()) { dqrb.execute(); } else { dqrb.execute().actionGet(); } logger.debug("Search.unindexAll() {}", terms.size()); }
@Override public <P extends ParaObject> List<P> findTagged(String appid, String type, String[] tags, Pager... pager) { if (tags == null || tags.length == 0 || StringUtils.isBlank(appid)) { return Collections.emptyList(); } BoolFilterBuilder tagFilter = FilterBuilders.boolFilter(); //assuming clean & safe tags here for (String tag : tags) { tagFilter.must(FilterBuilders.termFilter(Config._TAGS, tag)); } QueryBuilder qb = QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(), tagFilter); // The filter looks like this: ("tag1" OR "tag2" OR "tag3") AND "type" return searchQuery(appid, type, qb, pager); }
@Override public Iterator<EsQueryResult> getRunningInstancesWithFields(String[] includeFields) throws Exception { QueryBuilder queryBuilder = QueryBuilders.filteredQuery( QueryBuilders.termQuery("state", "running"), FilterBuilders.termFilter("state", "running")); ScrollableResponse<List<EsQueryResult>> response = this.retrieveScrollByQuery(queryBuilder, includeFields, BATCHSIZE, str -> insertMapper.readValue(str, EsQueryResult.class)); EsIterator<EsQueryResult> iterator = new EsIterator<>(response, r -> scrollNext(r.getContinousToken(), str -> insertMapper.readValue(str, EsQueryResult.class))); return iterator; }
@Override public int getNDocs() { assureIndex(); CountResponse response = client.prepareCount(indexName) .setQuery(filteredQuery(matchAllQuery(),termFilter(SearchService.FIELD_INDEXED, true))) .execute() .actionGet(); return (int) response.getCount(); }
public QueryIterator(FilterBuilder filter, int startFrom, int scrollSize, long maxSize, Client client, Function<Iterator<SearchHit>, Iterator<? extends E>> convertFunc, Boolean refresh, TimingAccessor timing, String... indices) { this.client = client; this.allowedRemaining = maxSize; this.convertFunc = convertFunc; this.timing = timing; if (refresh) client.admin().indices().prepareRefresh(indices).execute().actionGet(); this.timing.start("scroll"); scrollResponse = client.prepareSearch(indices) .setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(), filter)) .setFrom(startFrom) .setScroll(new TimeValue(60000)) .setSize(maxSize < scrollSize ? (int) maxSize : scrollSize) .execute().actionGet(); this.timing.stop("scroll"); hits = convertFunc.apply(scrollResponse.getHits().iterator()); }
private SearchRequestBuilder baseQuery(FilterBuilder filter){ return this.client.prepareSearch(this.index) .setTypes("datum") .setSearchType(SearchType.COUNT) .setQuery(QueryBuilders.filteredQuery( QueryBuilders.matchAllQuery(), filter )); }
private void addFiltersToQuery(BoolQueryBuilder boolChildQuery, List<FilterBuilder> filters, AuthorizationFilterBuilder authorizationFilterBuilder) { for (FilterBuilder filterBuilder : filters) { boolChildQuery.must( new HasChildQueryBuilder(ElasticSearchParentChildSearchIndex.PROPERTY_TYPE, QueryBuilders.filteredQuery( QueryBuilders.matchAllQuery(), FilterBuilders.andFilter(authorizationFilterBuilder, filterBuilder) ) ).scoreType("avg") ); } }
@Override public int getPendingDocuments() { try { CountResponse response = client.prepareCount(indexName) .setQuery(filteredQuery(matchAllQuery(), orFilter( missingFilter(SearchService.FIELD_INDEXED), termFilter(SearchService.FIELD_INDEXED, false)))) .execute() .actionGet(); return (int) response.getCount(); } catch (Exception e) { getLog().error("Problem getting pending docs for index builder [" + getName() + "]", e); } return 0; }
private QueryBuilder createSimilarToTextQuery(SimilarToTextQueryParameters queryParameters, String elementType, List<FilterBuilder> filters, AuthorizationFilterBuilder authorizationFilterBuilder) { BoolQueryBuilder boolChildQuery = QueryBuilders.boolQuery(); boolChildQuery.must( new HasChildQueryBuilder(ElasticSearchParentChildSearchIndex.PROPERTY_TYPE, QueryBuilders.filteredQuery( super.createQuery(queryParameters, elementType, filters), authorizationFilterBuilder ) ).scoreType("avg") ); addFiltersToQuery(boolChildQuery, filters, authorizationFilterBuilder); return boolChildQuery; }
@Override public <P extends ParaObject> List<P> findSimilar(String appid, String type, String filterKey, String[] fields, String liketext, Pager... pager) { if (StringUtils.isBlank(liketext)) { return Collections.emptyList(); } QueryBuilder qb; FilterBuilder fb; if (fields == null || fields.length == 0) { qb = QueryBuilders.moreLikeThisQuery().likeText(liketext).minDocFreq(1).minTermFreq(1); } else { qb = QueryBuilders.moreLikeThisQuery(fields).likeText(liketext).minDocFreq(1).minTermFreq(1); } if (!StringUtils.isBlank(filterKey)) { fb = FilterBuilders.notFilter(FilterBuilders.inFilter(Config._ID, filterKey)); qb = QueryBuilders.filteredQuery(qb, fb); } return searchQuery(appid, searchQueryRaw(appid, type, qb, pager)); }
protected SearchResponse retrieveByField(String field, Object value, String[] includeFields) throws Exception { // The query here is using the exact value match. // https://www.elastic.co/guide/en/elasticsearch/guide/1.x/_finding_exact_values.html SearchRequestBuilder builder = esClient.prepareSearch() .setIndices(getIndexName()).setTypes(getDocTypeName()) .setQuery(QueryBuilders .filteredQuery(QueryBuilders.matchAllQuery(), FilterBuilders.termsFilter(field, value))) .setFetchSource(includeFields, null).setVersion(true); return builder.execute().actionGet(); }
protected <E extends EsDocument> ScrollableResponse<List<E>> retrieveScrollByField( String field, Object value, String[] includeFields, int size, ThrowingFunction<String, E> createFunc) throws Exception { Preconditions.checkArgument(size > 0); SearchRequestBuilder builder = esClient.prepareSearch() .setIndices(getIndexName()).setTypes(getDocTypeName()) .setScroll(new TimeValue(SCROLLDEFAULTTIMEOUT)) .setSize(size) .setQuery(QueryBuilders .filteredQuery(QueryBuilders.matchAllQuery(), FilterBuilders.termsFilter(field, value))) .setFetchSource(includeFields, null).setVersion(true); SearchResponse response = builder.execute().actionGet(); return convertToScrollableResponse(response, createFunc); }
protected SearchRequestBuilder getSearchRequestBuilder(List<FilterBuilder> filters, QueryBuilder queryBuilder) { AndFilterBuilder filterBuilder = getFilterBuilder(filters); return getClient() .prepareSearch(getIndicesToQuery()) .setTypes(ElasticSearchSearchIndexBase.ELEMENT_TYPE) .setQuery(QueryBuilders.filteredQuery(queryBuilder, filterBuilder)) .setFrom((int) getParameters().getSkip()) .setSize((int) getParameters().getLimit()); }
protected SearchRequestBuilder getSearchRequestBuilder(List<FilterBuilder> filters, QueryBuilder queryBuilder) { AndFilterBuilder filterBuilder = getFilterBuilder(filters); return getClient() .prepareSearch(getIndicesToQuery()) .setTypes(ElasticSearchSearchIndexBase.ELEMENT_TYPE) .setQuery(QueryBuilders.filteredQuery(queryBuilder, filterBuilder)) .setFrom((int) getParameters().getSkip()) .setSize((int) getParameters().getLimit()); }
protected SearchRequestBuilder getSearchRequestBuilder(List<FilterBuilder> filters, QueryBuilder queryBuilder) { AndFilterBuilder filterBuilder = getFilterBuilder(filters); return getClient() .prepareSearch(getIndicesToQuery()) .setTypes(ElasticSearchSearchIndexBase.ELEMENT_TYPE) .setQuery(QueryBuilders.filteredQuery(queryBuilder, filterBuilder)) .setFrom((int) getParameters().getSkip()) .setSize((int) getParameters().getLimit()); }
@Override public Map<String, Object> search(KunderaMetadata kunderaMetadata, KunderaQuery kunderaQuery, PersistenceDelegator persistenceDelegator, EntityMetadata m, int firstResult, int maxResults) { ESQuery query = new ESQuery<>(kunderaQuery, persistenceDelegator, kunderaMetadata); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata() .getMetamodel(m.getPersistenceUnit()); Expression whereExpression = KunderaQueryUtils.getWhereClause(kunderaQuery.getJpqlExpression()); QueryBuilder filter = whereExpression != null ? query.getEsFilterBuilder() .populateFilterBuilder(((WhereClause) whereExpression).getConditionalExpression(), m) : null; FilteredQueryBuilder queryBuilder = QueryBuilders.filteredQuery(null, filter); SearchResponse response = getSearchResponse(kunderaQuery, queryBuilder, filter, query, m, firstResult, maxResults, kunderaMetadata); return buildResultMap(response, kunderaQuery, m, metaModel); }