You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by to...@apache.org on 2019/09/11 08:12:49 UTC

svn commit: r1866781 - in /jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch: ./ index/ query/ util/

Author: tommaso
Date: Wed Sep 11 08:12:49 2019
New Revision: 1866781

URL: http://svn.apache.org/viewvc?rev=1866781&view=rev
Log:
OAK-8616 - Leverage oak-search utils in oak-search-elastic where possible

Modified:
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnectionFactory.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexCoordinateImpl.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexProviderService.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchDocument.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchDocumentMaker.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexWriter.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndex.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchResultRowIterator.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/util/TermQueryBuilderFactory.java

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnectionFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnectionFactory.java?rev=1866781&r1=1866780&r2=1866781&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnectionFactory.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnectionFactory.java Wed Sep 11 08:12:49 2019
@@ -31,10 +31,10 @@ import java.util.concurrent.locks.Reentr
 
 public class ElasticsearchConnectionFactory implements Closeable {
     private static final Logger LOG = LoggerFactory.getLogger(ElasticsearchConnectionFactory.class);
-    private ConcurrentMap<ElasticsearchCoordinate, RestHighLevelClient> clientMap = Maps.newConcurrentMap();
+    private final ConcurrentMap<ElasticsearchCoordinate, RestHighLevelClient> clientMap = Maps.newConcurrentMap();
 
     private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
-    private AtomicBoolean isClosed = new AtomicBoolean();
+    private final AtomicBoolean isClosed = new AtomicBoolean();
 
     public RestHighLevelClient getConnection(ElasticsearchCoordinate esCoord) {
         lock.readLock().lock();

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexCoordinateImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexCoordinateImpl.java?rev=1866781&r1=1866780&r2=1866781&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexCoordinateImpl.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexCoordinateImpl.java Wed Sep 11 08:12:49 2019
@@ -116,10 +116,10 @@ public class ElasticsearchIndexCoordinat
      * Ref: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html
      */
     private static String getESSafeName(String suggestedIndexName) {
-        String invalidCharsRegex = Pattern.quote(String.join("", INVALID_FILENAME_CHARS
+        String invalidCharsRegex = Pattern.quote(INVALID_FILENAME_CHARS
                 .stream()
                 .map(Object::toString)
-                .collect(Collectors.toList())));
+                .collect(Collectors.joining("")));
         return suggestedIndexName.replaceAll(invalidCharsRegex, "").toLowerCase();
     }
 

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexProviderService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexProviderService.java?rev=1866781&r1=1866780&r2=1866781&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexProviderService.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexProviderService.java Wed Sep 11 08:12:49 2019
@@ -49,7 +49,7 @@ import static org.apache.jackrabbit.oak.
 @Component(metatype = true, label = "Apache Jackrabbit Oak ElasticsearchIndexProvider")
 public class ElasticsearchIndexProviderService {
 
-    private static Logger LOG = LoggerFactory.getLogger(ElasticsearchIndexProviderService.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ElasticsearchIndexProviderService.class);
 
     private static final int PROP_EXTRACTED_TEXT_CACHE_SIZE_DEFAULT = 20;
     @Property(

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchDocument.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchDocument.java?rev=1866781&r1=1866780&r2=1866781&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchDocument.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchDocument.java Wed Sep 11 08:12:49 2019
@@ -34,7 +34,7 @@ import java.util.Map;
 import static com.google.common.collect.Lists.newArrayList;
 
 public class ElasticsearchDocument {
-    private static Logger LOG = LoggerFactory.getLogger(ElasticsearchDocument.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ElasticsearchDocument.class);
 
     // id should only be useful for logging (at least as of now)
     private final String path;

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchDocumentMaker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchDocumentMaker.java?rev=1866781&r1=1866780&r2=1866781&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchDocumentMaker.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchDocumentMaker.java Wed Sep 11 08:12:49 2019
@@ -178,6 +178,8 @@ public class ElasticsearchDocumentMaker
     @Override
     protected void indexSimilarityBinaries(ElasticsearchDocument doc, PropertyDefinition pd, Blob blob) throws IOException {
         // TODO : not implemented
+        // see https://www.elastic.co/blog/text-similarity-search-with-vectors-in-elasticsearch
+        // see https://www.elastic.co/guide/en/elasticsearch/reference/current/dense-vector.html
     }
 
     @Override

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexWriter.java?rev=1866781&r1=1866780&r2=1866781&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexWriter.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexWriter.java Wed Sep 11 08:12:49 2019
@@ -47,7 +47,7 @@ import static org.elasticsearch.common.x
 import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
 
 public class ElasticsearchIndexWriter implements FulltextIndexWriter<ElasticsearchDocument> {
-    private static Logger LOG = LoggerFactory.getLogger(ElasticsearchIndexWriter.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ElasticsearchIndexWriter.class);
 
     private final ElasticsearchIndexCoordinate esIndexCoord;
     private final RestHighLevelClient client;

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndex.java?rev=1866781&r1=1866780&r2=1866781&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndex.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndex.java Wed Sep 11 08:12:49 2019
@@ -35,11 +35,11 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.plugins.index.elasticsearch.ElasticsearchIndexConstants.TYPE_ELASTICSEARCH;
 
 public class ElasticsearchIndex extends FulltextIndex {
-    private static final Predicate<NodeState> ELASTICSEARH_INDEX_DEFINITION_PREDICATE =
+    private static final Predicate<NodeState> ELASTICSEARCH_INDEX_DEFINITION_PREDICATE =
             state -> TYPE_ELASTICSEARCH.equals(state.getString(TYPE_PROPERTY_NAME));
 
     // higher than some threshold below which the query should rather be answered by something else if possible
-    private static double MIN_COST = 100.1;
+    private static final double MIN_COST = 100.1;
 
     private final ElasticsearchIndexCoordinateFactory esIndexCoordFactory;
     private final NodeState root;
@@ -58,13 +58,13 @@ public class ElasticsearchIndex extends
     protected SizeEstimator getSizeEstimator(IndexPlan plan) {
         return () -> {
             // TODO: implement nicely - possible use solr impl's LMSEstimator
-            return 2L * (long)MIN_COST;
+            return 2L * (long) MIN_COST;
         };
     }
 
     @Override
     protected Predicate<NodeState> getIndexDefinitionPredicate() {
-        return ELASTICSEARH_INDEX_DEFINITION_PREDICATE;
+        return ELASTICSEARCH_INDEX_DEFINITION_PREDICATE;
     }
 
     @Override

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchResultRowIterator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchResultRowIterator.java?rev=1866781&r1=1866780&r2=1866781&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchResultRowIterator.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchResultRowIterator.java Wed Sep 11 08:12:49 2019
@@ -481,7 +481,7 @@ public class ElasticsearchResultRowItera
             addNodeTypeConstraints(planResult.indexingRule, qs, filter);
         }
 
-        String path = getPathRestriction(plan);
+        String path = FulltextIndex.getPathRestriction(plan);
         switch (filter.getPathRestriction()) {
             case ALL_CHILDREN:
                 if (defn.evaluatePathRestrictions()) {
@@ -602,17 +602,6 @@ public class ElasticsearchResultRowItera
         }
     }
 
-    // TODO: utilize FulltextIndex#getPathRestriction instead of copying it here
-    private static String getPathRestriction(IndexPlan plan) {
-        Filter f = plan.getFilter();
-        String pathPrefix = plan.getPathPrefix();
-        if (pathPrefix.isEmpty()) {
-            return f.getPath();
-        }
-        String relativePath = PathUtils.relativize(pathPrefix, f.getPath());
-        return "/" + relativePath;
-    }
-
     private static QueryBuilder createNodeNameQuery(Filter.PropertyRestriction pr) {
         String first = pr.first != null ? pr.first.getValue(STRING) : null;
         if (pr.first != null && pr.first.equals(pr.last) && pr.firstIncluding
@@ -664,7 +653,7 @@ public class ElasticsearchResultRowItera
     @Nullable
     private static QueryBuilder createQuery(String propertyName, Filter.PropertyRestriction pr,
                                      PropertyDefinition defn) {
-        int propType = determinePropertyType(defn, pr);
+        int propType = FulltextIndex.determinePropertyType(defn, pr);
 
         if (pr.isNullRestriction()) {
             return newNullPropQuery(defn.name);

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/util/TermQueryBuilderFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/util/TermQueryBuilderFactory.java?rev=1866781&r1=1866780&r2=1866781&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/util/TermQueryBuilderFactory.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/util/TermQueryBuilderFactory.java Wed Sep 11 08:12:49 2019
@@ -37,6 +37,7 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.plugins.index.search.FieldNames.PATH_DEPTH;
 import static org.elasticsearch.index.query.QueryBuilders.*;
 
+@SuppressWarnings("SpellCheckingInspection")
 public class TermQueryBuilderFactory {
     /**
      * Private constructor.
@@ -164,28 +165,4 @@ public class TermQueryBuilderFactory {
     private static String keywordFieldName(String propName) {
         return propName + "." + "keyword";
     }
-
-    //TODO: figure out how to not duplicate these method from FulltextIndex
-    public static int determinePropertyType(PropertyDefinition defn, Filter.PropertyRestriction pr) {
-        int typeFromRestriction = pr.propertyType;
-        if (typeFromRestriction == PropertyType.UNDEFINED) {
-            //If no explicit type defined then determine the type from restriction
-            //value
-            if (pr.first != null && pr.first.getType() != Type.UNDEFINED) {
-                typeFromRestriction = pr.first.getType().tag();
-            } else if (pr.last != null && pr.last.getType() != Type.UNDEFINED) {
-                typeFromRestriction = pr.last.getType().tag();
-            } else if (pr.list != null && !pr.list.isEmpty()) {
-                typeFromRestriction = pr.list.get(0).getType().tag();
-            }
-        }
-        return getPropertyType(defn, pr.propertyName, typeFromRestriction);
-    }
-
-    private static int getPropertyType(PropertyDefinition defn, String name, int defaultVal) {
-        if (defn.isTypeDefined()) {
-            return defn.getType();
-        }
-        return defaultVal;
-    }
-}
+}
\ No newline at end of file