You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by vi...@apache.org on 2021/01/15 14:25:32 UTC
[superset] 01/02: feat(db-engine): Add support for Apache Solr
(#12403)
This is an automated email from the ASF dual-hosted git repository.
villebro pushed a commit to branch 1.0
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 739ab141360a4cbef4702719422a8fe2125bcad6
Author: Ahmed Adel <gi...@aadel.io>
AuthorDate: Fri Jan 15 05:11:56 2021 -0800
feat(db-engine): Add support for Apache Solr (#12403)
* [db engine] Add support for Apache Solr
* Fixing typo
---
docs/installation.rst | 9 ++++++
.../pages/docs/Connecting to Databases/index.mdx | 1 +
.../pages/docs/Connecting to Databases/solr.mdx | 18 ++++++++++++
.../docs/Connecting to Databases/spark-sql.mdx | 2 +-
setup.py | 1 +
superset/db_engine_specs/solr.py | 34 ++++++++++++++++++++++
6 files changed, 64 insertions(+), 1 deletion(-)
diff --git a/docs/installation.rst b/docs/installation.rst
index d48b1a9..095f6be 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -533,6 +533,8 @@ Here's a list of some of the recommended packages.
| Apache Pinot | ``"apache-superset[pinot]"`` | ``pinot+http://CONTROLLER:5436/`` |
| | | ``query?server=http://CONTROLLER:5983/`` |
+------------------+-------------------------------------------------------------------+-------------------------------------------------+
+| Apache Solr | ``pip install sqlalchemy-solr`` | ``solr://`` |
++------------------+---------------------------------------+-----------------------------------------------------------------------------+
| Apache Spark SQL | ``"apache-superset[hive]"`` | ``jdbc+hive://`` |
+------------------+-------------------------------------------------------------------+-------------------------------------------------+
| BigQuery | ``"apache-superset[bigquery]"`` | ``bigquery://`` |
@@ -685,6 +687,13 @@ You should then be able to connect to your BigQuery datasets.
To be able to upload data, e.g. sample data, the python library `pandas_gbq` is required.
+Apache Solr
+------------
+
+The connection string for Apache Solr looks like this ::
+
+ solr://{username}:{password}@{host}:{port}/{server_path}/{collection}[/?use_ssl=true|false]
+
Elasticsearch
-------------
diff --git a/docs/src/pages/docs/Connecting to Databases/index.mdx b/docs/src/pages/docs/Connecting to Databases/index.mdx
index 715e99a..493fc30 100644
--- a/docs/src/pages/docs/Connecting to Databases/index.mdx
+++ b/docs/src/pages/docs/Connecting to Databases/index.mdx
@@ -30,6 +30,7 @@ A list of some of the recommended packages.
|[Apache Impala](/docs/databases/impala)|```pip install impala```|```impala://{hostname}:{port}/{database}```|
|[Apache Kylin](/docs/databases/kylin)|```pip install kylinpy```|```kylin://<username>:<password>@<hostname>:<port>/<project>?<param1>=<value1>&<param2>=<value2>```|
|[Apache Pinot](/docs/databases/pinot)|```pip install pinotdb```|```pinot+http://CONTROLLER:5436/ query?server=http://CONTROLLER:5983/```|
+|[Apache Solr](/docs/databases/solr)|```pip install sqlalchemy-solr```|```solr://{username}:{password}@{hostname}:{port}/{server_path}/{collection}```
|[Apache Spark SQL](/docs/databases/spark)|```pip install pyhive```|```hive://hive@{hostname}:{port}/{database}```
|[Azure MS SQL](/docs/databases/sqlserver)||```mssql+pymssql://UserName@presetSQL:TestPassword@presetSQL.database.windows.net:1433/TestSchema```
|[Big Query](/docs/databases/bigquery)|```pip install pybigquery```|```bigquery://{project_id}```|
diff --git a/docs/src/pages/docs/Connecting to Databases/solr.mdx b/docs/src/pages/docs/Connecting to Databases/solr.mdx
new file mode 100644
index 0000000..b9edbc6
--- /dev/null
+++ b/docs/src/pages/docs/Connecting to Databases/solr.mdx
@@ -0,0 +1,18 @@
+---
+name: Apache Solr
+menu: Connecting to Databases
+route: /docs/databases/solr
+index: 10
+version: 1
+---
+
+## Apache Solr
+
+The [sqlalchemy-solr](https://pypi.org/project/sqlalchemy-solr/) library provides a
+Python / SQLAlchemy interface to Apache Solr.
+
+The connection string for Solr looks like this:
+
+```
+solr://{username}:{password}@{host}:{port}/{server_path}/{collection}[/?use_ssl=true|false]
+```
diff --git a/docs/src/pages/docs/Connecting to Databases/spark-sql.mdx b/docs/src/pages/docs/Connecting to Databases/spark-sql.mdx
index fe35629..92136aa 100644
--- a/docs/src/pages/docs/Connecting to Databases/spark-sql.mdx
+++ b/docs/src/pages/docs/Connecting to Databases/spark-sql.mdx
@@ -2,7 +2,7 @@
name: Apache Spark SQL
menu: Connecting to Databases
route: /docs/databases/spark-sql
-index: 10
+index: 11
version: 1
---
diff --git a/setup.py b/setup.py
index 3c0bbed..998360b 100644
--- a/setup.py
+++ b/setup.py
@@ -123,6 +123,7 @@ setup(
"dremio": ["sqlalchemy-dremio>=1.1.5, <1.2"],
"drill": ["sqlalchemy-drill==0.1.dev"],
"druid": ["pydruid>=0.6.1,<0.7"],
+ "solr": ["sqlalchemy-solr >= 0.2.0"],
"elasticsearch": ["elasticsearch-dbapi>=0.1.0, <0.2.0"],
"exasol": ["sqlalchemy-exasol>=2.1.0, <2.2"],
"excel": ["xlrd>=1.2.0, <1.3"],
diff --git a/superset/db_engine_specs/solr.py b/superset/db_engine_specs/solr.py
new file mode 100644
index 0000000..c9f6264
--- /dev/null
+++ b/superset/db_engine_specs/solr.py
@@ -0,0 +1,34 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from superset.db_engine_specs.base import BaseEngineSpec
+
+
+class SolrEngineSpec(BaseEngineSpec): # pylint: disable=abstract-method
+ """Engine spec for Apache Solr"""
+
+ engine = "solr"
+ engine_name = "Apache Solr"
+
+ time_groupby_inline = False
+ time_secondary_columns = False
+ allows_joins = False
+ allows_subqueries = False
+
+ _time_grain_expressions = {
+ None: "{col}",
+ }