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}",
+    }