You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ma...@apache.org on 2021/01/24 02:26:43 UTC

[atlas] branch branch-2.0 updated: ATLAS-4108: updated free-text search processor to support Elasticsearch

This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 9fcdf0f  ATLAS-4108: updated free-text search processor to support Elasticsearch
9fcdf0f is described below

commit 9fcdf0ff2ac008e911741f2ad2ad665710f77e4c
Author: Jarosław Cellary <ja...@ing.com>
AuthorDate: Thu Jan 21 13:51:53 2021 +0100

    ATLAS-4108: updated free-text search processor to support Elasticsearch
    
    Signed-off-by: Madhan Neethiraj <ma...@apache.org>
    (cherry picked from commit ea4e32d0657cbe5f161aa992578b0983636810ae)
---
 .../atlas/discovery/FreeTextSearchProcessor.java     | 20 +++++++++++++++++++-
 .../atlas/util/AtlasRepositoryConfiguration.java     |  4 ----
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/repository/src/main/java/org/apache/atlas/discovery/FreeTextSearchProcessor.java b/repository/src/main/java/org/apache/atlas/discovery/FreeTextSearchProcessor.java
index 56b514d..92152ff 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/FreeTextSearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/FreeTextSearchProcessor.java
@@ -17,6 +17,8 @@
  */
 package org.apache.atlas.discovery;
 
+import org.apache.atlas.ApplicationProperties;
+import org.apache.atlas.AtlasException;
 import org.apache.atlas.model.discovery.SearchParameters;
 import org.apache.atlas.repository.Constants;
 import org.apache.atlas.repository.graph.GraphHelper;
@@ -41,6 +43,8 @@ public class FreeTextSearchProcessor extends SearchProcessor {
     public  static final String SOLR_QT_PARAMETER           = "qt"; // org.apache.solr.common.params.CommonParams.QT;
     public  static final String SOLR_REQUEST_HANDLER_NAME   = "/freetext";
 
+    private static final boolean IS_SOLR_INDEX_BACKEND = isSolrIndexBackend();
+
     private final AtlasIndexQuery indexQuery;
 
     public FreeTextSearchProcessor(SearchContext context) {
@@ -70,7 +74,9 @@ public class FreeTextSearchProcessor extends SearchProcessor {
     private GraphIndexQueryParameters prepareGraphIndexQueryParameters(SearchContext context, StringBuilder queryString) {
         List<AtlasIndexQueryParameter> parameters = new ArrayList<>();
 
-        parameters.add(context.getGraph().indexQueryParameter(SOLR_QT_PARAMETER, SOLR_REQUEST_HANDLER_NAME));
+        if (IS_SOLR_INDEX_BACKEND) {
+            parameters.add(context.getGraph().indexQueryParameter(SOLR_QT_PARAMETER, SOLR_REQUEST_HANDLER_NAME));
+        }
 
         return new GraphIndexQueryParameters(Constants.VERTEX_INDEX, queryString.toString(), 0, parameters);
     }
@@ -175,4 +181,16 @@ public class FreeTextSearchProcessor extends SearchProcessor {
     public long getResultCount() {
         return indexQuery.vertexTotals();
     }
+
+    private static boolean isSolrIndexBackend() {
+        try {
+            String indexBackEnd = ApplicationProperties.get().getString(ApplicationProperties.INDEX_BACKEND_CONF);
+
+            return ApplicationProperties.INDEX_BACKEND_SOLR.equalsIgnoreCase(indexBackEnd);
+        } catch (AtlasException e) {
+            LOG.error("Failed to get application property {}. Assuming Solr index backend", ApplicationProperties.INDEX_BACKEND_SOLR, e);
+        }
+
+        return true; // default to Solr
+    }
 }
diff --git a/repository/src/main/java/org/apache/atlas/util/AtlasRepositoryConfiguration.java b/repository/src/main/java/org/apache/atlas/util/AtlasRepositoryConfiguration.java
index c37d757..179fa43 100644
--- a/repository/src/main/java/org/apache/atlas/util/AtlasRepositoryConfiguration.java
+++ b/repository/src/main/java/org/apache/atlas/util/AtlasRepositoryConfiguration.java
@@ -253,10 +253,6 @@ public class AtlasRepositoryConfiguration {
             try {
                 isFreeTextSearchEnabled = ApplicationProperties.get().getBoolean(ApplicationProperties.ENABLE_FREETEXT_SEARCH_CONF, true);
 
-                if (isFreeTextSearchEnabled) { // currently free-text is supported only for Solr
-                    isFreeTextSearchEnabled = ApplicationProperties.INDEX_BACKEND_SOLR.equalsIgnoreCase(ApplicationProperties.get().getString(ApplicationProperties.INDEX_BACKEND_CONF));
-                }
-
                 if (isFreeTextSearchEnabled) { // if free-text is enabled, disable full-text - to avoid performance penalty
                     isFullTextSearchEnabled = false;
                 } else {