Răsfoiți Sursa

HUE-8888 [docs] Started revamp of the SDK

Romain 6 ani în urmă
părinte
comite
59d9929d2d

+ 2 - 1
desktop/libs/notebook/src/notebook/connectors/sql_alchemy.py

@@ -75,6 +75,7 @@ if sys.version_info[0] > 2:
 else:
   from urllib import quote_plus as urllib_quote_plus
 
+
 CONNECTION_CACHE = {}
 LOG = logging.getLogger(__name__)
 
@@ -104,7 +105,7 @@ class SqlAlchemyApi(Api):
   def __init__(self, user, interpreter):
     self.user = user
     self.options = interpreter['options']
-    self.backticks = '"' if re.match('^(postgresql://|awsathena)', self.options.get('url', '')) else '`'
+    self.backticks = '"' if re.match('^(postgresql://|awsathena|elasticsearch)', self.options.get('url', '')) else '`'
 
   def _create_engine(self):
     if '${' in self.options['url']: # URL parameters substitution

+ 12 - 0
docs/docs-site/content/administrator/configuration/connectors/_index.md

@@ -573,6 +573,18 @@ Alternative:
       ## The JDBC driver clickhouse-jdbc.jar and its related jars need to be in the CLASSPATH environment variable.
       options='{"url": "jdbc:clickhouse://localhost:8123", "driver": "ru.yandex.clickhouse.ClickHouseDriver", "user": "readonly", "password": ""}'
 
+### Elastic Search
+
+The dialect for https://github.com/elastic/elasticsearch should be added to the Python system or Hue Python virtual environment:
+
+      ./build/env/bin/pip install elasticsearch-dbapi
+
+    [[[es]]]
+      name = Elastic Search
+      interface=sqlalchemy
+      options='{"url": "elasticsearch+http://localhost:9200/"}'
+
+
 ### Apache Pinot DB
 
 The dialect for https://pinot.apache.org should be added to the Python system or Hue Python virtual environment:

+ 3 - 3
docs/docs-site/content/developer/_index.md

@@ -6,12 +6,12 @@ chapter = false
 pre = "<b>3. </b>"
 +++
 
-Hue services are getting more and more generic to let you integrate with other analytics systems. Here is a list of the main APIs:
+Hue services are generic and let you integrate with other analytics systems for [querying](/user/querying/) and [browsing](/user/browsing/). Here is a list of the main APIs:
 
-* Connect or create SQL connectors to any database (Impala, MySQL, Presto...)
+* Connect or create SQL [autocompletes](/developer/parsers/) or connectors to any database (Impala, MySQL, Presto...)
 * Browse additional storage systems (HDFS, S3, ADLS, GS...)
 * List any jobs or queries (YARN, SQL queries, Kubernetes...)
-* Integrate with a Data Catalog (Cloudera Navigator, Apache Atlas...) or a Query Optimization service
+* Integrate with a [Data Catalog](user/browsing/#data-catalog) (Cloudera Navigator, Apache Atlas...) or a Query Optimization service
 
 In addition, whole new apps can also be created in order to provide end to end solutions.
 

+ 27 - 20
docs/docs-site/content/developer/sdk/_index.md

@@ -5,36 +5,43 @@ draft: false
 weight: 3
 ---
 
-# Connectors
+# Autocompletes
+
+Close to 100% of [Hive and Impala grammar](https://github.com/cloudera/hue/tree/master/desktop/core/src/desktop/js/parse/jison) are supported which makes the autocomplete extremly powerful. Other languages defaults to a generic SQL grammar.
 
-They provide SQL integration with any database. Here is a list of the [existing connectors](https://github.com/cloudera/hue/tree/master/desktop/libs/notebook/src/notebook/connectors).
+See the [SQL parser](/developer/parsers/) for more details. Integrating [Apache Calcite](https://calcite.apache.org/docs/reference.html), [ZetaSql](https://github.com/google/zetasql)... would make SQL users even happier with a lot more Databases!
 
-Connectors are pluggable and can new engines can be supported. Feel free to contact the community.
+# Connectors
 
-## SQL Autocomplete
+They provide integration with any SQL database or Job execution engine. Here is a list of the [existing connectors](https://github.com/cloudera/hue/tree/master/desktop/libs/notebook/src/notebook/connectors).
 
-Close to 100% of [Hive and Impala grammar](https://github.com/cloudera/hue/tree/master/desktop/core/src/desktop/js/parse/jison) is supported which makes the autocomplete extremly powerful. Other languages defaults to a generic SQL grammar.
+Connectors are pluggable and new engines can be added. Feel free to contact the [community](https://discourse.gethue.com/c/developer-sdk-api).
 
-See [How to write your own SQL parser](/developer/parsers/). Integrating [Apache Calcite](https://calcite.apache.org/docs/reference.html), [ZetaSql](https://github.com/google/zetasql)... would make SQL users even happier with a lot more Databases!
+## Editor
 
+### SQL
 
-## SQL Connectors
+#### SqlAlchemy
 
 [SqlAlchemy](https://www.sqlalchemy.org) is the prefered way if the HiveServer2 API is not supported by the database. The implementation is in [`sql_alchemy.py`](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/sql_alchemy.py) and is depends on the repective SqlAlchemy dialects.
 
+#### Jdbc
+
 With the JDBC proxy, query editor with any JDBC compatible database. View the [JDBC connector](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/jdbc.py).
 
 **Note** In the long term, SqlAlchemy is prefered as more "Python native".
 
-### Solr SQL
+#### Solr SQL
 
 [Solr connector](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/solr.py).
 
-### Oozie Jobs
+#### Custom
 
-MapReduce, Pig, Java, Shell, Sqoop, DistCp [Oozie connector](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/oozie_batch.py).
+If the built-in HiveServer2 (Hive, Impala, Spark SQL), RDBMS (MySQL, PostgreSQL, Oracle, SQLite), and JDBC interfaces don’t meet your needs, you can implement your own connector to the notebook app: [Notebook Connectors](https://github.com/cloudera/hue/tree/master/desktop/libs/notebook/src/notebook/connectors). Each connector API subclasses the [Base API](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/base.py) and must implement the methods defined within; refer to the [JdbcApi](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/jdbc.py) or [RdbmsApi](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/rdbms.py) for representative examples.
+
+### Jobs
 
-### Spark / Livy
+#### Spark / Livy
 
 Based on the [Livy REST API](https://livy.incubator.apache.org/docs/latest/rest-api.html)
 
@@ -44,13 +51,18 @@ Based on the [Livy REST API](https://livy.incubator.apache.org/docs/latest/rest-
   * Spark SQL
 * [Batch connector](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/spark_batch.py)
 
-## Jobs
+#### Oozie
+
+MapReduce, Pig, Java, Shell, Sqoop, DistCp [Oozie connector](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/oozie_batch.py).
+
+
+## Job Browser
 
 The Job Browser is generic and can list any type of jobs, queries and provide bulk operations like kill, pause, delete... and access to logs and recommendations.
 
 Here is its [API](https://github.com/cloudera/hue/tree/master/apps/jobbrowser/src/jobbrowser/apis).
 
-## Files
+## File Browser
 
 Various storage systems like Hadoop HDFS, AWS S3 and Azure [ADLS](https://issues.cloudera.org/browse/HUE-7248) can be interacted with. The [`fsmanager.py`](https://github.com/cloudera/hue/blob/master/desktop/core/src/desktop/lib/fsmanager.py) is the main router to each API.
 
@@ -58,7 +70,7 @@ Various storage systems like Hadoop HDFS, AWS S3 and Azure [ADLS](https://issues
 
 ## Dashboard
 
-Dashboards are generic and support [Solr and any SQL](http://gethue.com/search-dashboards):
+[Dashboards](/user/querying/#dashboards) are generic and support Apache Solr and SQL:
 
 The API was influenced by Solr but is now generic:
 
@@ -73,11 +85,7 @@ Implementations:
 * [Impala API](https://github.com/cloudera/hue/blob/master/apps/impala/src/impala/dashboard_api.py)
 * [Hive API](https://github.com/cloudera/hue/blob/master/apps/beeswax/src/beeswax/dashboard_api.py)
 
-When HS2, RDBMS, and JDBC Are Not Enough
-
-If the built-in HiveServer2 (Hive, Impala, Spark SQL), RDBMS (MySQL, PostgreSQL, Oracle, SQLite), and JDBC interfaces don’t meet your needs, you can implement your own connector to the notebook app: [Notebook Connectors](https://github.com/cloudera/hue/tree/master/desktop/libs/notebook/src/notebook/connectors). Each connector API subclasses the [Base API](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/base.py) and must implement the methods defined within; refer to the [JdbcApi](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/jdbc.py) or [RdbmsApi](https://github.com/cloudera/hue/blob/master/desktop/libs/notebook/src/notebook/connectors/rdbms.py) for representative examples.
-
-### Solr
+### Apache Solr
 
 [Solr Dashboard API](https://github.com/cloudera/hue/blob/master/apps/search/src/search/dashboard_api.py)
 
@@ -89,7 +97,6 @@ A connector similar to Solr or SQL Alchemy binding would need to be developed [H
 
 Hue can be accessed directly via a Django Python Shell or by its REST API.
 
-
 ## REST
 
 REST APIs are not all public yet but this is work in progress in [HUE-1450](https://issues.cloudera.org/browse/HUE-1450).

+ 100 - 7
docs/docs-site/content/user/browsing/_index.md

@@ -45,7 +45,7 @@ Searching all the available queries or data in the cluster
 
 Listing the possible tags to filter on. This also works for ‘types’.
 
-### Unification and Caching of all SQL metadata
+### Unification of metadata
 
 The list of tables and their columns is displayed in multiple part of the interface. This data is pretty costly to fetch and comes from different sources. In this new version, the information is now cached and reused by all the Hue components. As the sources are diverse, e.g. Apache Hive, Apache Atlas those are stored into a single object, so that it is easier and faster to display without caring about the underlying technical details.
 
@@ -105,9 +105,101 @@ Learn more about it on the [ingesting data from traditional databases](http://ge
 
 ### Indexing
 
-In the past, indexing data into Solr to then explore it with a [Dynamic Dashboard](http://gethue.com/search-dashboards/) has been quite difficult. The task involved writing a Solr schema and a Morphlines file then submitting a job to YARN to do the indexing. Often times getting this correct for non trivial imports could take a few days of work. Now with Hue's new feature you can start your YARN indexing job in minutes.
+In the past, indexing data into Solr to then explore it with a [Dynamic Dashboard](/user/querying/#dashboards) has been quite difficult. The task involved writing a Solr schema and a Morphlines file then submitting a job to YARN to do the indexing. Often times getting this correct for non trivial imports could take a few days of work. Now with Hue's new feature you can start your YARN indexing job in minutes.
 
-[Read more about it here](http://gethue.com/easy-indexing-of-data-into-solr/).
+#### CSV
+
+Any small CSV file can be ingested into a new index in a few clicks.
+
+#### Scalable
+First you’ll need to have a running Solr cluster that Hue is configured with.
+
+Next you’ll need to install these required libraries. To do so place them in a directory somewhere on HDFS and set the path for config_indexer_libs_path under indexer in the Hue ini to match by default, the config_indexer_libs_path value is set to /tmp/smart_indexer_lib. Additionally under indexer in the Hue ini you’ll need to set enable_new_indexer to true.
+
+    [indexer]
+
+    # Flag to turn on the morphline based Solr indexer.
+    enable_new_indexer=false
+
+    # Oozie workspace template for indexing.
+    ## config_indexer_libs_path=/tmp/smart_indexer_lib
+
+We’ll pick a name for our new collection and select our reviews data file from HDFS. Then we’ll click next.
+
+![Solr Indexer](https://cdn.gethue.com/uploads/2016/08/indexer-wizard.png)
+
+Field selection and ETL
+
+On this tab we can see all the fields the indexer has picked up from the file. Note that Hue has also made an educated guess on the field type. Generally, Hue does a good job inferring data type. However, we should do a quick check to confirm that the field types look correct.
+
+![Solr Indexer](https://cdn.gethue.com/uploads/2016/08/indexer-wizard-fields.png)
+
+For our data we’re going to perform 4 operations to make a very searchable Solr Collection.
+
+Convert Date
+
+This operation is implicit. By setting the field type to date we inform Hue that we want to convert this date to a Solr Date. Hue can convert most standard date formats automatically. If we had a unique date format we would have to define it for Hue by explicitly using the convert date operation.
+
+![Solr Indexer](https://cdn.gethue.com/uploads/2016/08/indexer-op-date.png)
+
+Translate star ratings to integer ratings
+
+Under the rating field we’ll change the field type from string to long and click add operation. We’ll then select the translate operation and setup the following translation mapping.
+
+![Solr Indexer](https://cdn.gethue.com/uploads/2016/08/indexer-translate-date.png)
+
+Grok the city from the full address field
+
+We’ll add a grok operation to the full address field, fill in the following regex .* (?<city>\w+),.* and set the number of expected fields to
+
+![Solr Indexer](https://cdn.gethue.com/uploads/2016/08/indexer-op-grok.png)
+
+1. In the new child field we’ll set the name to city. This new field will now contain the value matching the city capture group in the regex.
+
+Use a split operation to separate the latitude/longitude field into two separate floating point fields.
+Here we have an annoyance. Our data file contains the latitude and longitude of the place that’s being reviewed – Awesome! For some reason though they’ve been clumped into one field with a comma between the two numbers. We’ll use a split operation to grab each individually. Set the split value to ‘,’ and the number of output fields to 2. Then change the child fields’ types to doubles and give them logical names. In this case there’s not really much sense in keeping the parent field so let’s uncheck the “keep in index” box.
+
+![Solr Indexer](https://cdn.gethue.com/uploads/2016/08/indexer-op-split.png)
+
+Here we’ll add a geo ip operation and select iso_code as our output. This will give us the country code.
+
+![Solr Indexer](https://cdn.gethue.com/uploads/2016/08/indexer-op-geoip.png)
+
+Before we index, let’s make sure everything looks good with a quick scan of the preview. This can be handy to avoid any silly typos or anything like that.
+
+Now that we’ve defined our ETL Hue can do the rest. Click index and wait for Hue to index our data. At the bottom of this screen we can see a progress bar of the process. Yellow means our data is currently being indexed and green means it’s done. Feel free to close this window. The indexing will continue on your cluster.
+
+Once our data has been indexed into a Solr Collection we have access to all of Hue’s search features and can make a nice analytics dashboard like this one for our data.
+
+![Solr Dashboard](https://cdn.gethue.com/uploads/2016/08/indexer-dash.png)
+
+**Dependencies**
+
+The indexer libs path is where all required libraries for indexing should be. If you’d prefer you can assemble this directory yourself. There are three main components to the libs directory:
+
+1. JAR files required by the [MapReduceIndexerTool](http://www.cloudera.com/documentation/enterprise/5-5-x/topics/search_mapreduceindexertool.html)
+
+All required jar files should have shipped with CDH. Currently the list of required JARs is:
+
+    argparse4j-0.4.3.jar
+    readme.txt
+    httpmime-4.2.5.jar
+    search-mr-1.0.0-cdh5.8.0-job.jar
+    kite-morphlines-core-1.0.0-cdh5.8.0.jar
+    solr-core-4.10.3-cdh5.8.0.jar
+    kite-morphlines-solr-core-1.0.0-cdh5.8.0.jar
+    solr-solrj-4.10.3-cdh5.8.0.jar
+    noggit-0.5.jar
+
+Should this change and you get a missing class error, you can find whatever jar may be missing by grepping all the jars packaged with CDH for the missing class.
+
+2. Maxmind GeoLite2 database
+
+This file is required for the GeoIP lookup command and can be found on [MaxMind’s website](https://dev.maxmind.com/geoip/geoip2/geolite2/).
+
+3. Grok Dictionaries
+
+Any grok commands can be defined in text files within the grok_dictionaries sub directory.
 
 
 ## Files
@@ -262,7 +354,6 @@ prefixed row, simply type the row key followed by a star \*. The prefix
 should be highlighted like any other searchbar keyword. A prefix scan is
 performed exactly like a regular scan, but with a prefixed row.
 
-
     domain.10* +10
 
 
@@ -272,10 +363,8 @@ string between curly braces. HBase Browser autocompletes your filters
 for you so you don't have to look them up every time. You can apply
 filters to rows or scans.
 
-
     domain.1000 {ColumnPrefixFilter('100-') AND ColumnCountGetFilter(3)}
 
-
 This doc only covers a few basic features of the Smart Search. You can
 take advantage of the full querying language by referring to the help
 menu when using the app. These include column prefix, bare columns,
@@ -285,7 +374,9 @@ will suggest next steps to complete your query.
 
 ## Solr Indexes
 
-Solr indexes can be created and are listed in the interface.
+Solr indexes can be created via the [importer](/user/browsing/#data-importer) and are listed in the interface.
+
+![Solr Indexer](https://cdn.gethue.com/uploads/2016/08/indexer-op-grok.png)
 
 ## Jobs
 
@@ -305,6 +396,8 @@ There are three ways to access the Query browser:
 * Open the mini job browser overlay and navigate to the queries tab.
 * Open the job browser and navigate to the queries tab.
 
+![Pretty Query Profile](https://cdn.gethue.com/uploads/2019/03/Screen-Shot-2019-03-07-at-11.40.24-AM.png)
+
 Query capabilities
 
 * Display the list of currently running queries on the user's current Impala coordinator and a certain number of completed queries based on your configuration (25 by default).

+ 42 - 19
docs/docs-site/content/user/querying/_index.md

@@ -71,11 +71,11 @@ If multiple tables appear in the FROM clause, including derived and joined table
 
 The autocompleter suggests keywords based on where the cursor is positioned in the statement. Where possible it will even suggest more than one word at at time, like in the case of IF NOT EXISTS, no one likes to type too much right? In the parts where order matters but the keywords are optional, for instance after FROM tbl, it will list the keyword suggestions in the order they are expected with the first expected one on top. So after FROM tbl the WHERE keyword is listed above GROUP BY etc.
 
-**UDFs**
+**Functions**
 
 The improved autocompleter will now suggest functions, for each function suggestion an additional panel is added in the autocomplete dropdown showing the documentation and the signature of the function. The autocompleter know about the expected types for the arguments and will only suggest the columns or functions that match the argument at the cursor position in the argument list.
 
-![SQL functions reference](https://cdn.gethue.com/uploads/2017/07/hue_4_functions.png)
+<img src="https://cdn.gethue.com/uploads/2017/07/hue_4_functions.png" alt="SQL functions reference" height="400"/>
 
 **Sub-queries, correlated or not**
 
@@ -85,10 +85,18 @@ When editing subqueries it will only make suggestions within the scope of the su
 
 Right click on any fragement of the queries (e.g. a table name) to gets all its metadata information. This is a handy shortcut to get more description or check what types of values are contained in the table or columns.
 
+It’s quite handy to be able to look at column samples while writing a query to see what type of values you can expect. Hue now has the ability to perform some operations on the sample data, you can now view distinct values as well as min and max values. Expect to see more operations in coming releases.
+
+![Sample column popup](https://cdn.gethue.com/uploads/2018/10/sample_context_operations.gif)
+
 **Syntax checker**
 
 A little red underline will display the incorrect syntax so that the query can be fixed before submitting. A right click offers suggestions.
 
+![Syntax checker](https://cdn.gethue.com/uploads/2018/01/syntax_checkerhigh.png)
+
+![Syntax checker](https://cdn.gethue.com/uploads/2018/01/checker_help.png)
+
 **Advanced Settings**
 
 The live autocompletion is fine-tuned for a better experience advanced settings an be accessed via `CTRL +` , (or on Mac `CMD + ,`) or clicking on the '?' icon.
@@ -150,12 +158,6 @@ These visualizations are convenient for plotting chronological data or when subs
 
 ![Charts](https://cdn.gethue.com/uploads/2019/04/editor_charting.png)
 
-### Context popup
-
-It’s quite handy to be able to look at column samples while writing a query to see what type of values you can expect. Hue now has the ability to perform some operations on the sample data, you can now view distinct values as well as min and max values. Expect to see more operations in coming releases.
-
-![Sample column popup](https://cdn.gethue.com/uploads/2018/10/sample_context_operations.gif)
-
 ### Notebook mode
 
 Snippets of different dialects can be added into a single page:
@@ -207,23 +209,47 @@ Turns a list of semi-colon separated queries into an interactive presentation by
 ## Databases & Datawarehouses
 
 ### List
-Use the query editor with [any database or datawarehouse](/administrator/configuration/connectors/). Those databases currently need to be first configured by the administrator.
+
+Use the Editor or Dashboard to query [any database or datawarehouse](/administrator/configuration/connectors/). Those databases currently need to be first configured by the administrator.
 
 ### Autocompletes & Connectors
+
 Also read about building some [better autocompletes](/developer/parsers/) or extending the connectors with SQL Alchemy, JDBC or building your own [connectors](/developer/sdk).
 
 
 ## Dashboards
 
-Dashboards are an interactive way to explore your data quickly and easily. No programming is required and the analysis is done by drag & drops and clicks.
+Dashboards are an interactive way to explore your SQL or Solr data quickly and easily. No programming is required and the analysis is done by drag & drops and clicks.
 
 ![Search Full](https://cdn.gethue.com/uploads/2015/08/search-full-mode.png)
 
 Simply drag & drop widgets that are interconnected together. This is great for exploring new datasets or monitoring without having to type.
 
-The top search bar offers a [full autocomplete](http://gethue.com/intuitively-discovering-and-exploring-a-wine-dataset-with-the-dynamic-dashboards/) on all the values of the index.
+![Analytics dimensions](https://cdn.gethue.com/uploads/2018/08/dashboard_layout_dnd.gif)
+
+Currently supported databases are Apache Solr, Apache Hive and Apache Impala. To add [more databases](/user/querying/#databases-datawarehouses), feel free to check the [SDK](/developer/sdk/).
+
+Tutorials
 
-The “More like This” feature lets you selected fields you would like to use to find similar records. This is a great way to find similar issues, customers, people... with regard to a list of attributes.
+* The top search bar offers a [full autocomplete](http://gethue.com/intuitively-discovering-and-exploring-a-wine-dataset-with-the-dynamic-dashboards/) on all the values of the index
+* Comprehensive demo is available on the [BikeShare data visualization post](http://gethue.com/bay-area-bikeshare-data-analysis-with-search-and-spark-notebook/).
+
+### Analytics facets
+
+Drill down the dimensions of the datasets and apply aggregates functions on top of it:
+
+![Analytics dimensions](https://cdn.gethue.com/uploads/2018/08/dashboard_layout_dimensions.gif)
+
+Some facets can be nested:
+
+![Nested Analytics facets](https://cdn.gethue.com/uploads/2015/08/search-nested-facet-1024x304.png)
+![Nested Analytics Counts](https://cdn.gethue.com/uploads/2015/08/search-hit-widget.png)
+
+
+### Autocomplete
+The top bar support faceted and free word text search, with autocompletion.
+
+![Search Autocomplete](https://cdn.gethue.com/uploads/2018/01/dashboard_autocomplete.png)
 
 ### Marker Map
 Points close to each other are grouped together and will expand when zooming-in. A Yelp-like search filtering experience can also be created by checking the box.
@@ -234,7 +260,7 @@ Points close to each other are grouped together and will expand when zooming-in.
 
 Indexed records can be directly edited in the Grid or HTML widgets by admins.
 
-### link to original documents
+### Link to original documents
 
 Links to the original documents can also be inserted. Add to the record a field named ‘link-meta’ that contains some json describing the URL or address of a table or file that can be open in the HBase Browser, Metastore App or File Browser:
 
@@ -270,14 +296,11 @@ Real time indexing can now shine with the rolling window filter and the automati
 
 ![Rolling time](https://cdn.gethue.com/uploads/2015/08/search-fixed-time.png)
 
-### Nested Analytics facets
-
-![Nested Analytics facets](https://cdn.gethue.com/uploads/2015/08/search-nested-facet-1024x304.png)
-![Nested Analytics Counts](https://cdn.gethue.com/uploads/2015/08/search-hit-widget.png)
-
-A more comprehensive demo is available on the [BikeShare data visualization post](http://gethue.com/bay-area-bikeshare-data-analysis-with-search-and-spark-notebook/).
+### 'More like this'
 
+This feature lets you selected fields you would like to use to find similar records. This is a great way to find similar issues, customers, people... with regard to a list of attributes.
 
+![Rolling time](https://cdn.gethue.com/uploads/2018/01/solr_more_like_this.png)
 
 ## Jobs