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 ng...@apache.org on 2020/04/16 06:59:13 UTC

svn commit: r1876584 - in /jackrabbit/oak/trunk: oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ oak-search-elastic/src/main/java/org/apac...

Author: ngupta
Date: Thu Apr 16 06:59:12 2020
New Revision: 1876584

URL: http://svn.apache.org/viewvc?rev=1876584&view=rev
Log:
OAK-9004 | Multitenant index name strategy with reindex support (Patch contributed by Amrit Verma)

Modified:
    jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticBenchmarkRunner.java
    jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithGlobalIndexSearchTest.java
    jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithoutGlobalIndexSearchTest.java
    jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTIndexedContentAvailability.java
    jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTSeparatedIndexedContentAvailability.java
    jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyTextSearchTest.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnection.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexDefinition.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/ElasticsearchIndexEditorContext.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexEditorProvider.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndexNode.java
    jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexProviderServiceTest.java
    jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchPropertyIndexTest.java

Modified: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticBenchmarkRunner.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticBenchmarkRunner.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticBenchmarkRunner.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticBenchmarkRunner.java Thu Apr 16 06:59:12 2020
@@ -37,7 +37,7 @@ public class ElasticBenchmarkRunner exte
 
         try {
             coordinate = new ElasticsearchConnection(benchmarkOptions.getElasticScheme().value(options),
-                    benchmarkOptions.getElasticHost().value(options), benchmarkOptions.getElasticPort().value(options));
+                    benchmarkOptions.getElasticHost().value(options), benchmarkOptions.getElasticPort().value(options), "Benchmark");
 
             BenchmarkRunner.addToBenchMarkList(
                     Arrays.asList(

Modified: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithGlobalIndexSearchTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithGlobalIndexSearchTest.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithGlobalIndexSearchTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithGlobalIndexSearchTest.java Thu Apr 16 06:59:12 2020
@@ -40,7 +40,7 @@ import java.io.File;
 public class ElasticFullTextWithGlobalIndexSearchTest extends SearchTest {
 
     private ElasticsearchConnection coordinate;
-    private final String ELASTIC_GLOBAL_INDEX = "elasticGlobal";
+    private final String ELASTIC_GLOBAL_INDEX = "elasticGlobal" + System.nanoTime();
 
     public ElasticFullTextWithGlobalIndexSearchTest(File dump, boolean flat, boolean doReport, Boolean storageEnabled, ElasticsearchConnection coordinate) {
         super(dump, flat, doReport, storageEnabled);

Modified: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithoutGlobalIndexSearchTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithoutGlobalIndexSearchTest.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithoutGlobalIndexSearchTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithoutGlobalIndexSearchTest.java Thu Apr 16 06:59:12 2020
@@ -60,7 +60,7 @@ public class ElasticFullTextWithoutGloba
                             .with(indexProvider)
                             .with(new PropertyIndexEditorProvider())
                             .with(new NodeTypeIndexProvider())
-                            .with(new PropertyFullTextTest.FullTextPropertyInitialiser("elasticText", of("text"),
+                            .with(new PropertyFullTextTest.FullTextPropertyInitialiser("elasticText" + System.nanoTime(), of("text"),
                                     ElasticsearchIndexDefinition.TYPE_ELASTICSEARCH).nodeScope().analyzed());
                     return new Jcr(oak);
                 }

Modified: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTIndexedContentAvailability.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTIndexedContentAvailability.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTIndexedContentAvailability.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTIndexedContentAvailability.java Thu Apr 16 06:59:12 2020
@@ -66,7 +66,7 @@ public class ElasticPropertyFTIndexedCon
     private static final Logger LOG = LoggerFactory.getLogger(ElasticPropertyFTIndexedContentAvailability.class);
     private String currentFixtureName;
     private ElasticsearchConnection coordinate;
-    private final String ELASTIC_GLOBAL_INDEX = "elasticGlobal";
+    private final String ELASTIC_GLOBAL_INDEX = "elasticGlobal" + System.nanoTime();
 
     @Override
     public String getCurrentFixtureName() {
@@ -101,7 +101,7 @@ public class ElasticPropertyFTIndexedCon
                             .with(indexProvider)
                             .with((new ElasticGlobalInitializer(ELASTIC_GLOBAL_INDEX, storageEnabled)).async())
                                     // the WikipediaImporter set a property `title`
-                            .with(new FullTextPropertyInitialiser("elasticTitle", of("title"),
+                            .with(new FullTextPropertyInitialiser("elasticTitle" + System.nanoTime(), of("title"),
                                     ElasticsearchIndexDefinition.TYPE_ELASTICSEARCH).async())
                             .withAsyncIndexing("async", 5);
                     return new Jcr(oak);

Modified: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTSeparatedIndexedContentAvailability.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTSeparatedIndexedContentAvailability.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTSeparatedIndexedContentAvailability.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTSeparatedIndexedContentAvailability.java Thu Apr 16 06:59:12 2020
@@ -45,7 +45,7 @@ public class ElasticPropertyFTSeparatedI
 
     private String currentFixtureName;
     private ElasticsearchConnection coordinate;
-    private final String ELASTIC_GLOBAL_INDEX = "elasticGlobal";
+    private final String ELASTIC_GLOBAL_INDEX = "elasticGlobal" + System.nanoTime();
 
     public ElasticPropertyFTSeparatedIndexedContentAvailability(final File dump,
                                                                 final boolean flat,
@@ -79,7 +79,7 @@ public class ElasticPropertyFTSeparatedI
                             .with(indexProvider)
                             .with((new ElasticGlobalInitializer(ELASTIC_GLOBAL_INDEX, storageEnabled)).async("fulltext-async"))
                                     // the WikipediaImporter set a property `title`
-                            .with(new FullTextPropertyInitialiser("elasticTitle", of("title"),
+                            .with(new FullTextPropertyInitialiser("elasticTitle" + System.nanoTime(), of("title"),
                                     ElasticsearchIndexDefinition.TYPE_ELASTICSEARCH).async())
                             .withAsyncIndexing("async", 5)
                             .withAsyncIndexing("fulltext-async", 5);

Modified: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyTextSearchTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyTextSearchTest.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyTextSearchTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyTextSearchTest.java Thu Apr 16 06:59:12 2020
@@ -76,7 +76,7 @@ public class ElasticPropertyTextSearchTe
                             .with(indexProvider)
                             .with(new PropertyIndexEditorProvider())
                             .with(new NodeTypeIndexProvider())
-                            .with(new PropertyFullTextTest.FullTextPropertyInitialiser("elasticTitle", of("title"),
+                            .with(new PropertyFullTextTest.FullTextPropertyInitialiser("elasticTitle" + System.nanoTime(), of("title"),
                                     ElasticsearchIndexDefinition.TYPE_ELASTICSEARCH));
                     return new Jcr(oak);
                 }

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnection.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnection.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnection.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnection.java Thu Apr 16 06:59:12 2020
@@ -45,23 +45,25 @@ public class ElasticsearchConnection imp
     protected static final int DEFAULT_PORT = 9200;
 
     protected static final Supplier<ElasticsearchConnection> defaultConnection = () ->
-            new ElasticsearchConnection(DEFAULT_SCHEME, DEFAULT_HOST, DEFAULT_PORT);
+            new ElasticsearchConnection(DEFAULT_SCHEME, DEFAULT_HOST, DEFAULT_PORT, "elastic");
 
     private String scheme;
     private String host;
     private int port;
+    private final String indexPrefix;
 
     private volatile RestHighLevelClient client;
 
     private AtomicBoolean isClosed = new AtomicBoolean(false);
 
-    public ElasticsearchConnection(String scheme, String host, Integer port) {
-        if (scheme == null || host == null || port == null) {
+    public ElasticsearchConnection(String scheme, String host, Integer port, String indexPrefix) {
+        if (scheme == null || host == null || port == null || indexPrefix == null) {
             throw new IllegalArgumentException();
         }
         this.scheme = scheme;
         this.host = host;
         this.port = port;
+        this.indexPrefix = indexPrefix;
     }
 
     public RestHighLevelClient getClient() {
@@ -92,6 +94,10 @@ public class ElasticsearchConnection imp
         return port;
     }
 
+    public String getIndexPrefix() {
+        return indexPrefix;
+    }
+
     @Override
     public synchronized void close() throws IOException {
         if (client != null) {

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexDefinition.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexDefinition.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexDefinition.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexDefinition.java Thu Apr 16 06:59:12 2020
@@ -62,11 +62,12 @@ public class ElasticsearchIndexDefinitio
     public final long bulkFlushIntervalMs;
     public final int bulkRetries;
     public final long bulkRetriesBackoff;
+    private final String indexPrefix;
 
-    public ElasticsearchIndexDefinition(NodeState root, NodeState defn, String indexPath) {
+    public ElasticsearchIndexDefinition(NodeState root, NodeState defn, String indexPath, String indexPrefix) {
         super(root, getIndexDefinitionState(defn), determineIndexFormatVersion(defn), determineUniqueId(defn), indexPath);
+        this.indexPrefix = indexPrefix != null ? indexPrefix : "";
         this.remoteIndexName = setupIndexName();
-
         this.bulkActions = getOptionalValue(defn, BULK_ACTIONS, BULK_ACTIONS_DEFAULT);
         this.bulkSizeBytes = getOptionalValue(defn, BULK_SIZE_BYTES, BULK_SIZE_BYTES_DEFAULT);
         this.bulkFlushIntervalMs = getOptionalValue(defn, BULK_FLUSH_INTERVAL_MS, BULK_FLUSH_INTERVAL_MS_DEFAULT);
@@ -85,7 +86,7 @@ public class ElasticsearchIndexDefinitio
 
     private String setupIndexName() {
         // TODO: implement advanced remote index name strategy that takes into account multiple tenants and re-index process
-        return getESSafeIndexName(getIndexPath() + "-" + getReindexCount());
+        return getESSafeIndexName(indexPrefix + getIndexPath() + "-" + getReindexCount());
     }
 
     /**
@@ -124,6 +125,13 @@ public class ElasticsearchIndexDefinitio
      * The built object represents the index definition only without the node structure.
      */
     public static class Builder extends IndexDefinition.Builder {
+
+        private final String indexPrefix;
+
+        public Builder(String indexPrefix) {
+            this.indexPrefix = indexPrefix;
+        }
+
         @Override
         public ElasticsearchIndexDefinition build() {
             return (ElasticsearchIndexDefinition) super.build();
@@ -137,7 +145,7 @@ public class ElasticsearchIndexDefinitio
 
         @Override
         protected IndexDefinition createInstance(NodeState indexDefnStateToUse) {
-            return new ElasticsearchIndexDefinition(root, indexDefnStateToUse, indexPath);
+            return new ElasticsearchIndexDefinition(root, indexDefnStateToUse, indexPath, indexPrefix);
         }
     }
 }

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=1876584&r1=1876583&r2=1876584&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 Thu Apr 16 06:59:12 2020
@@ -89,6 +89,14 @@ public class ElasticsearchIndexProviderS
     )
     private static final String PROP_PRE_EXTRACTED_TEXT_ALWAYS_USE = "alwaysUsePreExtractedCache";
 
+    private static final String PROP_INDEX_PREFIX_DEFAULT = "";
+    @Property(
+            value = PROP_INDEX_PREFIX_DEFAULT,
+            label = "Index prefix",
+            description = "Prefix to be added to name of each elastic search index"
+    )
+    static final String PROP_INDEX_PREFIX = "indexPrefix";
+
     @Property(
             value = ElasticsearchConnection.DEFAULT_SCHEME,
             label = "Elasticsearch connection scheme"
@@ -265,7 +273,7 @@ public class ElasticsearchIndexProviderS
             try {
                 Integer port = Integer.parseInt(p.toString());
                 coordinate = new ElasticsearchConnection((String) config.get(PROP_ELASTICSEARCH_SCHEME),
-                        (String) config.get(PROP_ELASTICSEARCH_HOST), port);
+                        (String) config.get(PROP_ELASTICSEARCH_HOST), port, (String) config.get(PROP_INDEX_PREFIX));
             } catch (NumberFormatException nfe) {
                 LOG.warn("{} value ({}) cannot be parsed to a valid number", PROP_ELASTICSEARCH_PORT, p);
             }

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexEditorContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexEditorContext.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexEditorContext.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexEditorContext.java Thu Apr 16 06:59:12 2020
@@ -31,19 +31,22 @@ import java.io.IOException;
 
 class ElasticsearchIndexEditorContext extends FulltextIndexEditorContext<ElasticsearchDocument> {
 
+    private String indexPrefix;
+
     ElasticsearchIndexEditorContext(NodeState root,
                                     NodeBuilder definition, @Nullable IndexDefinition indexDefinition,
                                     IndexUpdateCallback updateCallback,
                                     ElasticsearchIndexWriterFactory indexWriterFactory,
                                     ExtractedTextCache extractedTextCache,
                                     IndexingContext indexingContext,
-                                    boolean asyncIndexing) {
+                                    boolean asyncIndexing, String indexPrefix) {
         super(root, definition, indexDefinition, updateCallback, indexWriterFactory, extractedTextCache, indexingContext, asyncIndexing);
+        this.indexPrefix = indexPrefix;
     }
 
     @Override
     public IndexDefinition.Builder newDefinitionBuilder() {
-        return new ElasticsearchIndexDefinition.Builder();
+        return new ElasticsearchIndexDefinition.Builder(indexPrefix);
     }
 
     @Override

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexEditorProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexEditorProvider.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexEditorProvider.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/index/ElasticsearchIndexEditorProvider.java Thu Apr 16 06:59:12 2020
@@ -55,7 +55,7 @@ public class ElasticsearchIndexEditorPro
 
             String indexPath = indexingContext.getIndexPath();
             ElasticsearchIndexDefinition indexDefinition =
-                    new ElasticsearchIndexDefinition(root, definition.getNodeState(), indexPath);
+                    new ElasticsearchIndexDefinition(root, definition.getNodeState(), indexPath, elasticsearchConnection.getIndexPrefix());
 
             ElasticsearchIndexWriterFactory writerFactory = new ElasticsearchIndexWriterFactory(elasticsearchConnection);
 
@@ -65,7 +65,7 @@ public class ElasticsearchIndexEditorPro
                     writerFactory,
                     extractedTextCache,
                     indexingContext,
-                    true);
+                    true, elasticsearchConnection.getIndexPrefix());
 
             return new ElasticsearchIndexEditor(context);
         }

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndexNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndexNode.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndexNode.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndexNode.java Thu Apr 16 06:59:12 2020
@@ -33,8 +33,8 @@ class ElasticsearchIndexNode implements
     ElasticsearchIndexNode(@NotNull NodeState root, @NotNull String indexPath,
                                      @NotNull ElasticsearchConnection elasticsearchConnection) {
         final NodeState indexNS = NodeStateUtils.getNode(root, indexPath);
-        this.indexDefinition = new ElasticsearchIndexDefinition(root, indexNS, indexPath);
         this.elasticsearchConnection = elasticsearchConnection;
+        this.indexDefinition = new ElasticsearchIndexDefinition(root, indexNS, indexPath, elasticsearchConnection.getIndexPrefix());
     }
 
     @Override

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexProviderServiceTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexProviderServiceTest.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexProviderServiceTest.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexProviderServiceTest.java Thu Apr 16 06:59:12 2020
@@ -35,7 +35,10 @@ import org.junit.rules.TemporaryFolder;
 
 import java.io.File;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 
+import static org.apache.jackrabbit.oak.plugins.index.elasticsearch.ElasticsearchIndexProviderService.PROP_INDEX_PREFIX;
 import static org.junit.Assert.assertNotNull;
 
 public class ElasticsearchIndexProviderServiceTest {
@@ -63,9 +66,10 @@ public class ElasticsearchIndexProviderS
 
     @Test
     public void defaultSetup() throws Exception {
-        MockOsgi.activate(service, context.bundleContext(),
-                Collections.singletonMap("localTextExtractionDir", folder.newFolder("localTextExtractionDir").getAbsolutePath())
-        );
+        Map<String, Object> props = new HashMap<>();
+        props.put("localTextExtractionDir", folder.newFolder("localTextExtractionDir").getAbsolutePath());
+        props.put(PROP_INDEX_PREFIX, "elastic");
+        MockOsgi.activate(service, context.bundleContext(), props);
 
         assertNotNull(context.getService(QueryIndexProvider.class));
         assertNotNull(context.getService(IndexEditorProvider.class));

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchPropertyIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchPropertyIndexTest.java?rev=1876584&r1=1876583&r2=1876584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchPropertyIndexTest.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchPropertyIndexTest.java Thu Apr 16 06:59:12 2020
@@ -77,7 +77,8 @@ public class ElasticsearchPropertyIndexT
         ElasticsearchConnection coordinate = new ElasticsearchConnection(
                 ElasticsearchConnection.DEFAULT_SCHEME,
                 elastic.getContainerIpAddress(),
-                elastic.getMappedPort(ElasticsearchConnection.DEFAULT_PORT)
+                elastic.getMappedPort(ElasticsearchConnection.DEFAULT_PORT),
+                "" + System.nanoTime()
         );
         ElasticsearchIndexEditorProvider editorProvider = new ElasticsearchIndexEditorProvider(coordinate,
                 new ExtractedTextCache(10 * FileUtils.ONE_MB, 100));