private JsonArray queryFuncNameMatch(String exeId, String functionName, int maxDocuments)
			throws ElasticException {
		StringBuilder buffer = new StringBuilder();
		buffer.append("{ \"size\": ").append(maxDocuments);
		buffer.append(", \"_source\": { \"excludes\": [ \"childid\" ] }");
		buffer.append(", \"query\": {");
		buffer.append("    \"bool\": {");
		buffer.append("      \"must\": {");
		buffer.append("        \"term\": {");
		buffer.append("          \"name_func\": \"");
		buffer.append(escape(functionName));
		buffer.append("\"} },");
		buffer.append("      \"filter\": {");
		buffer.append("        \"parent_id\": {");
		buffer.append("          \"type\": \"function\",");
		buffer.append("          \"id\": \"").append(exeId);
		buffer.append("\"} } } } }");
		JsonObject resp = connection.executeStatement(ElasticConnection.GET, "executable/_search",
			buffer.toString());
		JsonObject baseHits = (JsonObject) resp.get("hits");
		JsonElement hitsArray = baseHits.get("hits");
		if (hitsArray instanceof JsonArray a) {
			return a;
		}
		return new JsonArray();
	}
Query for function documents matching a given executable and a given function name
@param exeId is the document id of the executable to match
@param functionName is the name of the function
@param maxDocuments is the maximum number of documents to return
@return a list of JSON function documents
@throws ElasticException for communication problems with the server
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/elastic/ElasticDatabase.java