package com.codetroopers.play.elasticsearch.jest; import io.searchbox.core.Search; import io.searchbox.params.SearchType; import org.elasticsearch.index.query.FilterBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.facet.FacetBuilder; import org.elasticsearch.search.sort.SortBuilder; /** * @author cgatay */ public class JestSearchRequestBuilder extends JestRequest<Search> { private SearchSourceBuilder searchSourceBuilder; private String indices; private String types; private SearchType searchType; public JestSearchRequestBuilder() { searchSourceBuilder = new SearchSourceBuilder(); } @Override public Search getAction() { final String query = searchSourceBuilder.toString(); return new Search.Builder(query) .addIndex(indices) .addType(types) .setSearchType(searchType) .build(); } public JestSearchRequestBuilder setIndices(String indices) { this.indices = indices; return this; } public JestSearchRequestBuilder setTypes(String types) { this.types = types; return this; } public JestSearchRequestBuilder setSearchType(SearchType searchType) { this.searchType = searchType; return this; } public JestSearchRequestBuilder setFilter(FilterBuilder filter) { this.searchSourceBuilder.postFilter(filter); return this; } public JestSearchRequestBuilder setQuery(String query) { this.searchSourceBuilder.query(query); return this; } public JestSearchRequestBuilder setQuery(QueryBuilder builder) { this.searchSourceBuilder.query(builder); return this; } public JestSearchRequestBuilder setNoFields() { this.searchSourceBuilder.noFields(); return this; } public JestSearchRequestBuilder addFacet(FacetBuilder facet) { this.searchSourceBuilder.facet(facet); return this; } public JestSearchRequestBuilder addSort(SortBuilder sort) { this.searchSourceBuilder.sort(sort); return this; } public JestSearchRequestBuilder setFrom(int from) { this.searchSourceBuilder.from(from); return this; } public JestSearchRequestBuilder setSize(int size) { this.searchSourceBuilder.size(size); return this; } public JestSearchRequestBuilder setExplain(boolean explain) { this.searchSourceBuilder.explain(explain); return this; } }