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