try {
// TODO: we should avoid reparsing search_request here
// but it's terribly difficult to slice the underlying byte
// buffer to get just the search request.
parser = XContentFactory.xContent(source).createParser(source);
Map<String, Object> asMap = parser.mapOrderedAndClose();
String queryHint = (String) asMap.get("query_hint");
if (queryHint != null) {
setQueryHint(queryHint);
}