module elasticsearch.api.actions.search; import elasticsearch.api.parameters; import elasticsearch.transport; import elasticsearch.client; import vibe.http.common; Response search(Client client, ESParams arguments = ESParams()) { string index = arguments.hasField("index") ? arguments["index"] : "_all"; string type = arguments.hasField("type") ? arguments["type"] : ""; auto params = arguments.validateAndExtract( "analyzer", "analyze_wildcard", "default_operator", "df", "explain", "fields", "from", "ignore_indices", "ignore_unavailable", "allow_no_indices", "expand_wildcards", "lenient", "lowercase_expanded_terms", "preference", "q", "routing", "scroll", "search_type", "size", "sort", "source", "_source", "_source_include", "source_exclude", "stats", "suggest_field", "suggest_mode", "suggest_size", "suggest_text", "timeout", "version" ); auto path = esPathify(esListify(index), esListify(type), "_search"); return client.performRequest(RequestMethod.GET, path, params, arguments["body"]); }