public List<String> searchRecentRunningWorkflows(int lastModifiedHoursAgoFrom, int lastModifiedHoursAgoTo) { DateTime dateTime = new DateTime(); QueryBuilder q = QueryBuilders.boolQuery() .must(QueryBuilders.rangeQuery("updateTime") .gt(dateTime.minusHours(lastModifiedHoursAgoFrom))) .must(QueryBuilders.rangeQuery("updateTime") .lt(dateTime.minusHours(lastModifiedHoursAgoTo))) .must(QueryBuilders.termQuery("status", "RUNNING")); SearchResult<String> workflowIds; try { workflowIds = searchObjectIds(indexName, q, 0, 5000, Collections.singletonList("updateTime:ASC"), WORKFLOW_DOC_TYPE); } catch (IOException e) { logger.error("Unable to communicate with ES to find recent running workflows", e); return Collections.emptyList(); } return workflowIds.getResults(); }
private static QueryBuilder toValueQuery(MetricCriterion criterion) { String fieldName = FIELD_MEASURES_VALUE; switch (criterion.getOperator()) { case GT: return rangeQuery(fieldName).gt(criterion.getValue()); case GTE: return rangeQuery(fieldName).gte(criterion.getValue()); case LT: return rangeQuery(fieldName).lt(criterion.getValue()); case LTE: return rangeQuery(fieldName).lte(criterion.getValue()); case EQ: return termQuery(fieldName, criterion.getValue()); default: throw new IllegalStateException("Metric criteria non supported: " + criterion.getOperator().name()); } }
switch (range.getLow().getBound()) { case ABOVE: rangeQueryBuilder.must(new RangeQueryBuilder(columnName).gt(getValue(type, range.getLow().getValue()))); break; case EXACTLY:
@Override public List<String> searchRecentRunningWorkflows(int lastModifiedHoursAgoFrom, int lastModifiedHoursAgoTo) { DateTime dateTime = new DateTime(); QueryBuilder q = QueryBuilders.boolQuery() .must(QueryBuilders.rangeQuery("updateTime") .gt(dateTime.minusHours(lastModifiedHoursAgoFrom))) .must(QueryBuilders.rangeQuery("updateTime") .lt(dateTime.minusHours(lastModifiedHoursAgoTo))) .must(QueryBuilders.termQuery("status", "RUNNING")); SearchRequestBuilder s = elasticSearchClient.prepareSearch(indexName) .setTypes("workflow") .setQuery(q) .setSize(5000) .addSort("updateTime", SortOrder.ASC); SearchResponse response = s.execute().actionGet(); return StreamSupport.stream(response.getHits().spliterator(), false) .map(hit -> hit.getId()) .collect(Collectors.toCollection(LinkedList::new)); }
break; case GT: x = QueryBuilders.rangeQuery(name).gt(value); break; case GTE:
filterBuilder = new RangeQueryBuilder(name).gt(value);
/** * 添加库存过滤查询 * * @param boolQueryBuilder bool 查询 */ public void addStockFilter(BoolQueryBuilder boolQueryBuilder) { if (stockFilter != -1) { boolQueryBuilder.must(QueryBuilders.rangeQuery("stock").gt(0)); } }
@Override public QueryBuilder buildQuery(String queryFieldName, SQLConditionOperator operator, Object[] rightParamValues) { QueryBuilder rangeQuery = null; if (SQLConditionOperator.GreaterThan == operator) { rangeQuery = QueryBuilders.rangeQuery(queryFieldName).gt(rightParamValues[0]); } else if (SQLConditionOperator.GreaterThanOrEqual == operator) { rangeQuery = QueryBuilders.rangeQuery(queryFieldName).gte(rightParamValues[0]); } else if (SQLConditionOperator.LessThan == operator) { rangeQuery = QueryBuilders.rangeQuery(queryFieldName).lt(rightParamValues[0]); } else if (SQLConditionOperator.LessThanOrEqual == operator) { rangeQuery = QueryBuilders.rangeQuery(queryFieldName).lte(rightParamValues[0]); } return rangeQuery; } });
@Override public QueryExpression gt(LiteralExpression literal) { Object value = literal.value(); builder = addFormatIfNecessary(literal, rangeQuery(getFieldReference()).gt(value)); return this; }
private static QueryBuilder getCompareFilter(String key, Object value, String predicateString) { switch (predicateString) { case ("eq"): return QueryBuilders.termQuery(key, value); case ("neq"): return QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery(key, value)); case ("gt"): return QueryBuilders.rangeQuery(key).gt(value); case ("gte"): return QueryBuilders.rangeQuery(key).gte(value); case ("lt"): return QueryBuilders.rangeQuery(key).lt(value); case ("lte"): return QueryBuilders.rangeQuery(key).lte(value); case ("inside"): List items = (List) value; Object firstItem = items.get(0); Object secondItem = items.get(1); return QueryBuilders.rangeQuery(key).from(firstItem).to(secondItem); default: throw new IllegalArgumentException("predicate not supported in has step: " + predicateString); } }
/** * 多条件查询 should * @throws Exception */ @Test public void searchMutil3()throws Exception{ SearchRequestBuilder srb=client.prepareSearch("film").setTypes("dongzuo"); QueryBuilder queryBuilder=QueryBuilders.matchPhraseQuery("title", "战"); QueryBuilder queryBuilder2=QueryBuilders.matchPhraseQuery("content", "星球"); QueryBuilder queryBuilder3=QueryBuilders.rangeQuery("publishDate").gt("2018-01-01"); SearchResponse sr=srb.setQuery(QueryBuilders.boolQuery() .must(queryBuilder) .should(queryBuilder2) .should(queryBuilder3)) .execute() .actionGet(); SearchHits hits=sr.getHits(); for(SearchHit hit:hits){ System.out.println(hit.getScore()+":"+hit.getSourceAsString()); } }
@Override public QueryBuilder createQuery() { if (value != null) { RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(field); if (bound == Bound.LT) { rangeQueryBuilder.lt(value); } else if (bound == Bound.LT_EQ) { rangeQueryBuilder.lte(value); } else if (bound == Bound.GT_EQ) { rangeQueryBuilder.gte(value); } else if (bound == Bound.GT) { rangeQueryBuilder.gt(value); } if (orEmpty) { BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); boolQuery.should(rangeQueryBuilder); boolQuery.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(field))); return boolQuery; } return rangeQueryBuilder; } return null; }
@Override public QueryExpression notEquals(LiteralExpression literal) { Object value = literal.value(); if (value instanceof GregorianCalendar) { builder = boolQuery() .should(addFormatIfNecessary(literal, rangeQuery(getFieldReference()).gt(value))) .should(addFormatIfNecessary(literal, rangeQuery(getFieldReference()).lt(value))); } else { builder = boolQuery() .must(existsQuery(getFieldReference())) // NOT LIKE should return false when field is NULL .mustNot(matchQuery(getFieldReference(), value)); } return this; }
private static QueryBuilder toValueQuery(MetricCriterion criterion) { String fieldName = FIELD_MEASURES_VALUE; switch (criterion.getOperator()) { case GT: return rangeQuery(fieldName).gt(criterion.getValue()); case GTE: return rangeQuery(fieldName).gte(criterion.getValue()); case LT: return rangeQuery(fieldName).lt(criterion.getValue()); case LTE: return rangeQuery(fieldName).lte(criterion.getValue()); case EQ: return termQuery(fieldName, criterion.getValue()); default: throw new IllegalStateException("Metric criteria non supported: " + criterion.getOperator().name()); } }
public Search queryGetEventQueryDefinition(EventQueryDefinition query, String action) { BoolQueryBuilder booleanQuery = new BoolQueryBuilder(); // Optional constant for action filter if (action != null) { query.getActionFilters().add(action); } QueryBuilder typeQuery = QueryBuilders.termQuery("type", EventConstants.TARGET_FEATURE); // Timestamp filter RangeQueryBuilder timestampFilter = QueryBuilders.rangeQuery("timestamp") // .gt(query.getFrom().longValue()) // .lt(query.getTo().longValue()) // .includeLower(false) // .includeUpper(false); booleanQuery.must(typeQuery); booleanQuery.must(timestampFilter); // Optional filters addOptionalFilters(booleanQuery, query.getActionFilters(), "action"); addOptionalFilters(booleanQuery, query.getHostFilters(), "hostName"); addOptionalFilters(booleanQuery, query.getNamesFilter(), "name"); addOptionalFilters(booleanQuery, query.getSourceFilters(), "source"); // Warning : default size is set to 10 results, that's why it's // overridden SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().size(100); Search searchQuery = new Search.Builder(searchSourceBuilder.query(booleanQuery.toString()).toString()) // .addIndex(connection.getIndexName()) // .addType(ElasticConstants.TYPE_EVENT) // .build(); return searchQuery; }
break; case GT: rangeQueryBuilder.gt(filter.getValue()); break; case GTE:
comparison = QueryBuilders.rangeQuery(field).to(value); }else if(compareExp.getType() == ComparisonExpressionType.GREATER_THAN){ comparison = QueryBuilders.rangeQuery(field).gt(value); }else if(compareExp.getType() == ComparisonExpressionType.LESS_THAN){ comparison = QueryBuilders.rangeQuery(field).lt(value);
return rangeQuery(field).gt(single(values)); } else if (ComparisonOperator.LT.equals(operator)) { return rangeQuery(field).lt(single(values));
boolQuery.must(QueryBuilders.rangeQuery(leftName).gte(rightValue)); } else if (Operator.GT.equals(operator)) { boolQuery.must(QueryBuilders.rangeQuery(leftName).gt(rightValue)); } else if (Operator.IN.equals(operator)) { boolQuery.must(QueryBuilders.termsQuery(leftName, (List<?>) rightValue));