in mr/src/main/java/org/elasticsearch/hadoop/rest/SearchRequestBuilder.java [187:271]
private String assemble() {
if (limit > 0) {
if (size > limit) {
size = limit;
}
}
Map<String, String> uriParams = new LinkedHashMap<String, String>();
StringBuilder sb = new StringBuilder();
sb.append(indices);
if (StringUtils.hasLength(types)) {
sb.append("/");
sb.append(types);
}
sb.append("/_search?");
// override infrastructure params
if (version.onOrAfter(EsMajorVersion.V_5_X)) {
// scan type was removed
// default to sorting by indexing/doc order
uriParams.put("sort", "_doc");
}
else {
uriParams.put("search_type", "scan");
}
uriParams.put("scroll", String.valueOf(scroll.toString()));
uriParams.put("size", String.valueOf(size));
if (includeVersion) {
uriParams.put("version", "true");
}
// set shard preference
StringBuilder pref = new StringBuilder();
if (StringUtils.hasText(shard)) {
pref.append("_shards:");
pref.append(shard);
}
if (local || StringUtils.hasText(preference)) {
if (pref.length() > 0) {
if (version.onOrAfter(EsMajorVersion.V_5_X)) {
pref.append("|");
} else {
pref.append(";");
}
}
if (StringUtils.hasText(preference)) {
pref.append(preference);
} else {
pref.append("_local");
}
}
if (pref.length() > 0) {
uriParams.put("preference", HttpEncodingTools.encode(pref.toString()));
}
// Request routing
if (routing != null) {
uriParams.put("routing", HttpEncodingTools.encode(routing));
}
// Always track total hits on versions that support it. 7.0+ will return lower bounded
// hit counts if this is not set, and we want them to be accurate for scroll bookkeeping.
if (version.onOrAfter(EsMajorVersion.V_6_X)) {
uriParams.put("track_total_hits", "true");
}
if (readMetadata) {
uriParams.put("track_scores", "true");
}
// append params
for (Iterator<Entry<String, String>> it = uriParams.entrySet().iterator(); it.hasNext();) {
Entry<String, String> entry = it.next();
sb.append(entry.getKey());
if (StringUtils.hasText(entry.getValue())) {
sb.append("=");
sb.append(entry.getValue());
}
if (it.hasNext()) {
sb.append("&");
}
}
return sb.toString();
}