public static byte[] parseQuerySource(RestRequest request) { if (request.hasContent()) { return request.contentAsBytes(); } String queryString = request.param("q"); if (queryString == null) { throw new ElasticSearchIllegalArgumentException( "No query to execute, not in body, and not bounded to 'q' parameter"); } QueryStringJsonQueryBuilder queryBuilder = JsonQueryBuilders.queryString(queryString); queryBuilder.defaultField(request.param("df")); queryBuilder.analyzer(request.param("analyzer")); String defaultOperator = request.param("default_operator"); if (defaultOperator != null) { if ("OR".equals(defaultOperator)) { queryBuilder.defaultOperator(QueryStringJsonQueryBuilder.Operator.OR); } else if ("AND".equals(defaultOperator)) { queryBuilder.defaultOperator(QueryStringJsonQueryBuilder.Operator.AND); } else { throw new ElasticSearchIllegalArgumentException( "Unsupported defaultOperator [" + defaultOperator + "], can either be [OR] or [AND]"); } } return queryBuilder.buildAsBytes(); }