From 7ddaaca36c66648145cd32943d3c638abd01aab1 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 28 Feb 2022 16:25:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Elasticsearch=20=E6=94=AF=E6=8C=81=20nes?= =?UTF-8?q?ted=20=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/datasource/EsProvider.java | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) 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<>();