mirror of
https://github.com/dataease/dataease.git
synced 2025-02-25 03:52:59 +08:00
fix: Elasticsearch 支持 nested 类型
This commit is contained in:
parent
d6f0c07ad4
commit
7ddaaca36c
@ -99,11 +99,18 @@ public class EsProvider extends DatasourceProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TableField> getTableFileds(DatasourceRequest datasourceRequest) throws Exception {
|
public List<TableField> getTableFileds(DatasourceRequest datasourceRequest) throws Exception {
|
||||||
QueryProvider qp = ProviderFactory.getQueryProvider(datasourceRequest.getDatasource().getType());
|
datasourceRequest.setQuery("desc " + datasourceRequest.getTable());
|
||||||
datasourceRequest.setQuery(qp.convertTableToSql(datasourceRequest.getTable(), datasourceRequest.getDatasource()));
|
List<TableField> tableFields = new ArrayList<>();
|
||||||
return fetchResultField(datasourceRequest);
|
try {
|
||||||
|
String response = exexQuery(datasourceRequest, datasourceRequest.getQuery(), "?format=json");
|
||||||
|
tableFields = fetchResultField4Table(response);
|
||||||
|
} catch (Exception e) {
|
||||||
|
DataEaseException.throwException(e);
|
||||||
|
}
|
||||||
|
return tableFields;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<String[]> fetchResult(String response) throws Exception {
|
private List<String[]> fetchResult(String response) throws Exception {
|
||||||
EsReponse esReponse = new Gson().fromJson(response, EsReponse.class);
|
EsReponse esReponse = new Gson().fromJson(response, EsReponse.class);
|
||||||
return fetchResult(esReponse);
|
return fetchResult(esReponse);
|
||||||
@ -166,6 +173,26 @@ public class EsProvider extends DatasourceProvider {
|
|||||||
return fieldList;
|
return fieldList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<TableField> fetchResultField4Table(String response) throws Exception {
|
||||||
|
List<TableField> 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
|
@Override
|
||||||
public Map<String, List> fetchResultAndField(DatasourceRequest datasourceRequest) throws Exception {
|
public Map<String, List> fetchResultAndField(DatasourceRequest datasourceRequest) throws Exception {
|
||||||
Map<String, List> result = new HashMap<>();
|
Map<String, List> result = new HashMap<>();
|
||||||
|
Loading…
Reference in New Issue
Block a user