Skip to content

Commit db0ab2c

Browse files
committed
feat: support Elasticsearch datasource #108
1 parent 5cb48b9 commit db0ab2c

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

backend/apps/db/db.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -420,15 +420,18 @@ def exec_sql(ds: CoreDatasource | AssistantOutDsSchema, sql: str, origin_column=
420420
except Exception as ex:
421421
raise ParseSQLResultError(str(ex))
422422
elif ds.type == 'es':
423-
if table_name and table_name[0]:
424-
res, columns = get_es_data(conf, sql, table_name[0])
425-
columns = [field[0] for field in columns] if origin_column else [field[0].lower() for
426-
field in
427-
columns]
428-
result_list = [
429-
{str(columns[i]): float(value) if isinstance(value, Decimal) else value for i, value in
430-
enumerate(tuple_item)}
431-
for tuple_item in res
432-
]
433-
return {"fields": columns, "data": result_list,
434-
"sql": bytes.decode(base64.b64encode(bytes(sql, 'utf-8')))}
423+
try:
424+
if table_name and table_name[0]:
425+
res, columns = get_es_data(conf, sql, table_name[0])
426+
columns = [field[0] for field in columns] if origin_column else [field[0].lower() for
427+
field in
428+
columns]
429+
result_list = [
430+
{str(columns[i]): float(value) if isinstance(value, Decimal) else value for i, value in
431+
enumerate(tuple_item)}
432+
for tuple_item in res
433+
]
434+
return {"fields": columns, "data": result_list,
435+
"sql": bytes.decode(base64.b64encode(bytes(sql, 'utf-8')))}
436+
except Exception as ex:
437+
raise ParseSQLResultError(str(ex))

backend/apps/db/es_engine.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def get_es_fields(conf: DatasourceConf, table_name: str):
6363
def get_es_data(conf: DatasourceConf, sql: str, table_name: str):
6464
r = requests.post(f"{conf.host}/_sql/translate", json={"query": sql})
6565
if r.json().get('error'):
66-
raise HTTPException(status_code=500, detail=f': {json.dumps(r.json())}')
66+
raise BaseException(f'{json.dumps(r.json())}')
6767

6868
es_client = get_es_connect(conf)
6969
response = es_client.search(

0 commit comments

Comments
 (0)