Index: elasticsearch/impl/src/java/org/sakaiproject/search/elasticsearch/ElasticSearchService.java =================================================================== --- elasticsearch/impl/src/java/org/sakaiproject/search/elasticsearch/ElasticSearchService.java (revision 315036) +++ elasticsearch/impl/src/java/org/sakaiproject/search/elasticsearch/ElasticSearchService.java (working copy) @@ -19,6 +19,8 @@ import org.elasticsearch.client.Client; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.OrFilterBuilder; import org.elasticsearch.index.query.TermQueryBuilder; import org.elasticsearch.node.Node; @@ -260,16 +262,24 @@ BoolQueryBuilder query = boolQuery(); - if (searchTerms.contains(":")) { - String[] termWithType = searchTerms.split(":"); - String termType = termWithType[0]; - String termValue = termWithType[1]; - // little fragile but seems like most providers follow this convention, there isn't a nice way to get the type - // without a handle to a reference. - query.must(termQuery(SearchService.FIELD_TYPE, "sakai:" + termType)); - query.must(matchQuery(SearchService.FIELD_CONTENTS, termValue)); + //Special case for new search + if (searchTerms.contains("::")) { + //Probably the new special style + String[] termWithType = searchTerms.split("::"); + if (termWithType.length == 2) { + String termType = termWithType[0]; + String termValue = termWithType[1]; + // little fragile but seems like most providers follow this convention, there isn't a nice way to get the type + // without a handle to a reference. + query.must(termQuery(SearchService.FIELD_TYPE, "sakai:" + termType)); + query.must(matchQuery(SearchService.FIELD_CONTENTS, termValue)); + } + else { + query.must(QueryBuilders.queryString(searchTerms)); + } + } else { - query.must(matchQuery(SearchService.FIELD_CONTENTS, searchTerms)); + query.must(QueryBuilders.queryString(searchTerms)); } if (references.size() > 0){ @@ -278,7 +288,6 @@ SearchRequestBuilder searchRequestBuilder = client.prepareSearch(indexName) .setSearchType(SearchType.QUERY_THEN_FETCH) - .setQuery(query) .setTypes(SAKAI_DOC_TYPE) .addFields(SearchService.FIELD_REFERENCE, SearchService.FIELD_SITEID, SearchService.FIELD_TITLE, SearchService.FIELD_URL, SearchService.FIELD_TYPE, SearchService.FIELD_TOOL) @@ -304,6 +313,9 @@ } } + //After all of the queries are all setup + searchRequestBuilder.setQuery(query); + log.debug("search request: " + searchRequestBuilder.toString()); SearchResponse response = searchRequestBuilder.execute().actionGet();