diff --git a/backend/src/main/java/io/dataease/provider/datasource/EsProvider.java b/backend/src/main/java/io/dataease/provider/datasource/EsProvider.java index 411b1b13f8..eb055a45b4 100644 --- a/backend/src/main/java/io/dataease/provider/datasource/EsProvider.java +++ b/backend/src/main/java/io/dataease/provider/datasource/EsProvider.java @@ -99,11 +99,18 @@ public class EsProvider extends DatasourceProvider { @Override public List getTableFileds(DatasourceRequest datasourceRequest) throws Exception { - QueryProvider qp = ProviderFactory.getQueryProvider(datasourceRequest.getDatasource().getType()); - datasourceRequest.setQuery(qp.convertTableToSql(datasourceRequest.getTable(), datasourceRequest.getDatasource())); - return fetchResultField(datasourceRequest); + datasourceRequest.setQuery("desc " + datasourceRequest.getTable()); + List tableFields = new ArrayList<>(); + try { + String response = exexQuery(datasourceRequest, datasourceRequest.getQuery(), "?format=json"); + tableFields = fetchResultField4Table(response); + } catch (Exception e) { + DataEaseException.throwException(e); + } + return tableFields; } + private List fetchResult(String response) throws Exception { EsReponse esReponse = new Gson().fromJson(response, EsReponse.class); return fetchResult(esReponse); @@ -166,6 +173,26 @@ public class EsProvider extends DatasourceProvider { return fieldList; } + private List fetchResultField4Table(String response) throws Exception { + List fieldList = new ArrayList<>(); + EsReponse esReponse = new Gson().fromJson(response, EsReponse.class); + if (esReponse.getError() != null) { + throw new Exception(esReponse.getError().getReason()); + } + + for (String[] row : esReponse.getRows()) { + if(!row[1].equalsIgnoreCase("STRUCT")){ + TableField field = new TableField(); + field.setFieldName(row[0]); + field.setRemarks(row[0]); + field.setFieldType(row[2]); + field.setFieldSize(EsQueryProvider.transFieldTypeSize(row[2])); + fieldList.add(field); + } + } + return fieldList; + } + @Override public Map fetchResultAndField(DatasourceRequest datasourceRequest) throws Exception { Map result = new HashMap<>();