more options when setting query/filter/facets in raw form using java api
This commit is contained in:
parent
3381d77c14
commit
6693b86982
|
@ -213,6 +213,30 @@ public class SearchRequestBuilder extends BaseRequestBuilder<SearchRequest, Sear
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new search source builder with a raw search query.
|
||||||
|
*/
|
||||||
|
public SearchRequestBuilder setQuery(byte[] queryBinary, int queryBinaryOffset, int queryBinaryLength) {
|
||||||
|
sourceBuilder().query(queryBinary, queryBinaryOffset, queryBinaryLength);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new search source builder with a raw search query.
|
||||||
|
*/
|
||||||
|
public SearchRequestBuilder setQuery(XContentBuilder query) {
|
||||||
|
sourceBuilder().query(query);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new search source builder with a raw search query.
|
||||||
|
*/
|
||||||
|
public SearchRequestBuilder setQuery(Map query) {
|
||||||
|
sourceBuilder().query(query);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a filter on the query executed that only applies to the search query
|
* Sets a filter on the query executed that only applies to the search query
|
||||||
* (and not facets for example).
|
* (and not facets for example).
|
||||||
|
@ -240,6 +264,33 @@ public class SearchRequestBuilder extends BaseRequestBuilder<SearchRequest, Sear
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a filter on the query executed that only applies to the search query
|
||||||
|
* (and not facets for example).
|
||||||
|
*/
|
||||||
|
public SearchRequestBuilder setFilter(byte[] filter, int filterOffset, int filterLength) {
|
||||||
|
sourceBuilder().filter(filter, filterOffset, filterLength);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a filter on the query executed that only applies to the search query
|
||||||
|
* (and not facets for example).
|
||||||
|
*/
|
||||||
|
public SearchRequestBuilder setFilter(XContentBuilder filter) {
|
||||||
|
sourceBuilder().filter(filter);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a filter on the query executed that only applies to the search query
|
||||||
|
* (and not facets for example).
|
||||||
|
*/
|
||||||
|
public SearchRequestBuilder setFilter(Map filter) {
|
||||||
|
sourceBuilder().filter(filter);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the minimum score below which docs will be filtered out.
|
* Sets the minimum score below which docs will be filtered out.
|
||||||
*/
|
*/
|
||||||
|
@ -404,6 +455,30 @@ public class SearchRequestBuilder extends BaseRequestBuilder<SearchRequest, Sear
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a raw (xcontent) binary representation of facets to use.
|
||||||
|
*/
|
||||||
|
public SearchRequestBuilder setFacets(byte[] facets, int facetsOffset, int facetsLength) {
|
||||||
|
sourceBuilder().facets(facets, facetsOffset, facetsLength);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a raw (xcontent) binary representation of facets to use.
|
||||||
|
*/
|
||||||
|
public SearchRequestBuilder setFacets(XContentBuilder facets) {
|
||||||
|
sourceBuilder().facets(facets);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a raw (xcontent) binary representation of facets to use.
|
||||||
|
*/
|
||||||
|
public SearchRequestBuilder setFacets(Map facets) {
|
||||||
|
sourceBuilder().facets(facets);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a field to be highlighted with default fragment size of 100 characters, and
|
* Adds a field to be highlighted with default fragment size of 100 characters, and
|
||||||
* default number of fragments of 5.
|
* default number of fragments of 5.
|
||||||
|
@ -440,7 +515,7 @@ public class SearchRequestBuilder extends BaseRequestBuilder<SearchRequest, Sear
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a field to be highlighted with a provided fragment size (in characters),
|
* Adds a field to be highlighted with a provided fragment size (in characters),
|
||||||
* a provided (maximum) number of fragments and an offset for the highlight.
|
* a provided (maximum) number of fragments and an offset for the highlight.
|
||||||
*
|
*
|
||||||
|
@ -511,7 +586,7 @@ public class SearchRequestBuilder extends BaseRequestBuilder<SearchRequest, Sear
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the source of the request as a json string. Note, settings anything other
|
* Sets the source of the request as a json string. Note, settings anything other
|
||||||
* than the search type will cause this source to be overridden, consifer using
|
* than the search type will cause this source to be overridden, consider using
|
||||||
* {@link #setExtraSource(byte[])}.
|
* {@link #setExtraSource(byte[])}.
|
||||||
*/
|
*/
|
||||||
public SearchRequestBuilder setSource(byte[] source) {
|
public SearchRequestBuilder setSource(byte[] source) {
|
||||||
|
@ -529,7 +604,7 @@ public class SearchRequestBuilder extends BaseRequestBuilder<SearchRequest, Sear
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the source of the request as a json string. Note, settings anything other
|
* Sets the source of the request as a json string. Note, settings anything other
|
||||||
* than the search type will cause this source to be overridden, consifer using
|
* than the search type will cause this source to be overridden, consider using
|
||||||
* {@link #setExtraSource(byte[])}.
|
* {@link #setExtraSource(byte[])}.
|
||||||
*/
|
*/
|
||||||
public SearchRequestBuilder setSource(byte[] source, int offset, int length) {
|
public SearchRequestBuilder setSource(byte[] source, int offset, int length) {
|
||||||
|
@ -547,7 +622,7 @@ public class SearchRequestBuilder extends BaseRequestBuilder<SearchRequest, Sear
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the source of the request as a json string. Note, settings anything other
|
* Sets the source of the request as a json string. Note, settings anything other
|
||||||
* than the search type will cause this source to be overridden, consifer using
|
* than the search type will cause this source to be overridden, consider using
|
||||||
* {@link #setExtraSource(byte[])}.
|
* {@link #setExtraSource(byte[])}.
|
||||||
*/
|
*/
|
||||||
public SearchRequestBuilder setSource(XContentBuilder builder) {
|
public SearchRequestBuilder setSource(XContentBuilder builder) {
|
||||||
|
@ -563,6 +638,21 @@ public class SearchRequestBuilder extends BaseRequestBuilder<SearchRequest, Sear
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the source of the request as a map. Note, setting anything other than the
|
||||||
|
* search type will cause this source to be overridden, consider using
|
||||||
|
* {@link #setExtraSource(java.util.Map)}.
|
||||||
|
*/
|
||||||
|
public SearchRequestBuilder setSource(Map source) {
|
||||||
|
request.source(source);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SearchRequestBuilder setExtraSource(Map source) {
|
||||||
|
request.extraSource(source);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the source builder to be used with this request. Note, any operations done
|
* Sets the source builder to be used with this request. Note, any operations done
|
||||||
* on this require builder before are discarded as this internal builder replaces
|
* on this require builder before are discarded as this internal builder replaces
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
package org.elasticsearch.search.builder;
|
package org.elasticsearch.search.builder;
|
||||||
|
|
||||||
|
import org.elasticsearch.ElasticSearchGenerationException;
|
||||||
import org.elasticsearch.client.Requests;
|
import org.elasticsearch.client.Requests;
|
||||||
import org.elasticsearch.common.Unicode;
|
import org.elasticsearch.common.Unicode;
|
||||||
import org.elasticsearch.common.collect.ImmutableList;
|
import org.elasticsearch.common.collect.ImmutableList;
|
||||||
|
@ -69,10 +70,14 @@ public class SearchSourceBuilder implements ToXContent {
|
||||||
private QueryBuilder queryBuilder;
|
private QueryBuilder queryBuilder;
|
||||||
|
|
||||||
private byte[] queryBinary;
|
private byte[] queryBinary;
|
||||||
|
private int queryBinaryOffset;
|
||||||
|
private int queryBinaryLength;
|
||||||
|
|
||||||
private FilterBuilder filterBuilder;
|
private FilterBuilder filterBuilder;
|
||||||
|
|
||||||
private byte[] filterBinary;
|
private byte[] filterBinary;
|
||||||
|
private int filterBinaryOffset;
|
||||||
|
private int filterBinaryLength;
|
||||||
|
|
||||||
private int from = -1;
|
private int from = -1;
|
||||||
|
|
||||||
|
@ -95,6 +100,8 @@ public class SearchSourceBuilder implements ToXContent {
|
||||||
private List<AbstractFacetBuilder> facets;
|
private List<AbstractFacetBuilder> facets;
|
||||||
|
|
||||||
private byte[] facetsBinary;
|
private byte[] facetsBinary;
|
||||||
|
private int facetBinaryOffset;
|
||||||
|
private int facetBinaryLength;
|
||||||
|
|
||||||
private HighlightBuilder highlightBuilder;
|
private HighlightBuilder highlightBuilder;
|
||||||
|
|
||||||
|
@ -121,7 +128,16 @@ public class SearchSourceBuilder implements ToXContent {
|
||||||
* Constructs a new search source builder with a raw search query.
|
* Constructs a new search source builder with a raw search query.
|
||||||
*/
|
*/
|
||||||
public SearchSourceBuilder query(byte[] queryBinary) {
|
public SearchSourceBuilder query(byte[] queryBinary) {
|
||||||
|
return query(queryBinary, 0, queryBinary.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new search source builder with a raw search query.
|
||||||
|
*/
|
||||||
|
public SearchSourceBuilder query(byte[] queryBinary, int queryBinaryOffset, int queryBinaryLength) {
|
||||||
this.queryBinary = queryBinary;
|
this.queryBinary = queryBinary;
|
||||||
|
this.queryBinaryOffset = queryBinaryOffset;
|
||||||
|
this.queryBinaryLength = queryBinaryLength;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,8 +145,31 @@ public class SearchSourceBuilder implements ToXContent {
|
||||||
* Constructs a new search source builder with a raw search query.
|
* Constructs a new search source builder with a raw search query.
|
||||||
*/
|
*/
|
||||||
public SearchSourceBuilder query(String queryString) {
|
public SearchSourceBuilder query(String queryString) {
|
||||||
this.queryBinary = Unicode.fromStringAsBytes(queryString);
|
return query(Unicode.fromStringAsBytes(queryString));
|
||||||
return this;
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new search source builder with a query from a builder.
|
||||||
|
*/
|
||||||
|
public SearchSourceBuilder query(XContentBuilder query) {
|
||||||
|
try {
|
||||||
|
return query(query.underlyingBytes(), 0, query.underlyingBytesLength());
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ElasticSearchGenerationException("failed to generate query from builder", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new search source builder with a query from a map.
|
||||||
|
*/
|
||||||
|
public SearchSourceBuilder query(Map query) {
|
||||||
|
try {
|
||||||
|
XContentBuilder builder = XContentFactory.contentBuilder(Requests.CONTENT_TYPE);
|
||||||
|
builder.map(query);
|
||||||
|
return query(builder);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ElasticSearchGenerationException("Failed to generate [" + query + "]", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -147,8 +186,7 @@ public class SearchSourceBuilder implements ToXContent {
|
||||||
* (and not facets for example).
|
* (and not facets for example).
|
||||||
*/
|
*/
|
||||||
public SearchSourceBuilder filter(String filterString) {
|
public SearchSourceBuilder filter(String filterString) {
|
||||||
this.filterBinary = Unicode.fromStringAsBytes(filterString);
|
return filter(Unicode.fromStringAsBytes(filterString));
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -156,10 +194,44 @@ public class SearchSourceBuilder implements ToXContent {
|
||||||
* (and not facets for example).
|
* (and not facets for example).
|
||||||
*/
|
*/
|
||||||
public SearchSourceBuilder filter(byte[] filter) {
|
public SearchSourceBuilder filter(byte[] filter) {
|
||||||
this.filterBinary = filter;
|
return filter(filter, 0, filter.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a filter on the query executed that only applies to the search query
|
||||||
|
* (and not facets for example).
|
||||||
|
*/
|
||||||
|
public SearchSourceBuilder filter(byte[] filterBinary, int filterBinaryOffset, int filterBinaryLength) {
|
||||||
|
this.filterBinary = filterBinary;
|
||||||
|
this.filterBinaryOffset = filterBinaryOffset;
|
||||||
|
this.filterBinaryLength = filterBinaryLength;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new search source builder with a query from a builder.
|
||||||
|
*/
|
||||||
|
public SearchSourceBuilder filter(XContentBuilder filter) {
|
||||||
|
try {
|
||||||
|
return filter(filter.underlyingBytes(), 0, filter.underlyingBytesLength());
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ElasticSearchGenerationException("failed to generate filter from builder", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new search source builder with a query from a map.
|
||||||
|
*/
|
||||||
|
public SearchSourceBuilder filter(Map filter) {
|
||||||
|
try {
|
||||||
|
XContentBuilder builder = XContentFactory.contentBuilder(Requests.CONTENT_TYPE);
|
||||||
|
builder.map(filter);
|
||||||
|
return filter(builder);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ElasticSearchGenerationException("Failed to generate [" + filter + "]", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* From index to start the search from. Defaults to <tt>0</tt>.
|
* From index to start the search from. Defaults to <tt>0</tt>.
|
||||||
*/
|
*/
|
||||||
|
@ -256,10 +328,43 @@ public class SearchSourceBuilder implements ToXContent {
|
||||||
* Sets a raw (xcontent / json) facets.
|
* Sets a raw (xcontent / json) facets.
|
||||||
*/
|
*/
|
||||||
public SearchSourceBuilder facets(byte[] facetsBinary) {
|
public SearchSourceBuilder facets(byte[] facetsBinary) {
|
||||||
|
return facets(facetsBinary, 0, facetsBinary.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a raw (xcontent / json) facets.
|
||||||
|
*/
|
||||||
|
public SearchSourceBuilder facets(byte[] facetsBinary, int facetBinaryOffset, int facetBinaryLength) {
|
||||||
this.facetsBinary = facetsBinary;
|
this.facetsBinary = facetsBinary;
|
||||||
|
this.facetBinaryOffset = facetBinaryOffset;
|
||||||
|
this.facetBinaryLength = facetBinaryLength;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a raw (xcontent / json) facets.
|
||||||
|
*/
|
||||||
|
public SearchSourceBuilder facets(XContentBuilder facets) {
|
||||||
|
try {
|
||||||
|
return facets(facets.underlyingBytes(), 0, facets.underlyingBytesLength());
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ElasticSearchGenerationException("failed to generate filter from builder", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a raw (xcontent / json) facets.
|
||||||
|
*/
|
||||||
|
public SearchSourceBuilder facets(Map facets) {
|
||||||
|
try {
|
||||||
|
XContentBuilder builder = XContentFactory.contentBuilder(Requests.CONTENT_TYPE);
|
||||||
|
builder.map(facets);
|
||||||
|
return facets(builder);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ElasticSearchGenerationException("Failed to generate [" + facets + "]", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public HighlightBuilder highlighter() {
|
public HighlightBuilder highlighter() {
|
||||||
if (highlightBuilder == null) {
|
if (highlightBuilder == null) {
|
||||||
highlightBuilder = new HighlightBuilder();
|
highlightBuilder = new HighlightBuilder();
|
||||||
|
@ -421,10 +526,10 @@ public class SearchSourceBuilder implements ToXContent {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (queryBinary != null) {
|
if (queryBinary != null) {
|
||||||
if (XContentFactory.xContentType(queryBinary) == builder.contentType()) {
|
if (XContentFactory.xContentType(queryBinary, queryBinaryOffset, queryBinaryLength) == builder.contentType()) {
|
||||||
builder.rawField("query", queryBinary);
|
builder.rawField("query", queryBinary, queryBinaryOffset, queryBinaryLength);
|
||||||
} else {
|
} else {
|
||||||
builder.field("query_binary", queryBinary);
|
builder.field("query_binary", queryBinary, queryBinaryOffset, queryBinaryLength);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,10 +539,10 @@ public class SearchSourceBuilder implements ToXContent {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filterBinary != null) {
|
if (filterBinary != null) {
|
||||||
if (XContentFactory.xContentType(queryBinary) == builder.contentType()) {
|
if (XContentFactory.xContentType(filterBinary, filterBinaryOffset, filterBinaryLength) == builder.contentType()) {
|
||||||
builder.rawField("filter", filterBinary);
|
builder.rawField("filter", filterBinary, filterBinaryOffset, filterBinaryLength);
|
||||||
} else {
|
} else {
|
||||||
builder.field("filter_binary", queryBinary);
|
builder.field("filter_binary", filterBinary, filterBinaryOffset, filterBinaryLength);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -514,10 +619,10 @@ public class SearchSourceBuilder implements ToXContent {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (facetsBinary != null) {
|
if (facetsBinary != null) {
|
||||||
if (XContentFactory.xContentType(facetsBinary) == builder.contentType()) {
|
if (XContentFactory.xContentType(facetsBinary, facetBinaryOffset, facetBinaryLength) == builder.contentType()) {
|
||||||
builder.rawField("facets", facetsBinary);
|
builder.rawField("facets", facetsBinary, facetBinaryOffset, facetBinaryLength);
|
||||||
} else {
|
} else {
|
||||||
builder.field("facets_binary", facetsBinary);
|
builder.field("facets_binary", facetsBinary, facetBinaryOffset, facetBinaryLength);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue