diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
index 269c94e..3ebcff7 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
@@ -67,4 +67,10 @@ public interface IndexConstants {
      * queries. Defaults to ['/'].
      */
     String QUERY_PATHS = "queryPaths";
+
+    /**
+     * Hidden property which stores the indexPath which can be used by
+     * IndexEditors
+     */
+    String INDEX_PATH = ":indexPath";
 }
diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
index 29b7af9..b19b38e 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
@@ -25,6 +25,7 @@ import static org.apache.jackrabbit.oak.commons.PathUtils.concat;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.ASYNC_PROPERTY_NAME;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.ASYNC_REINDEX_VALUE;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_PATH;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_ASYNC_PROPERTY_NAME;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_COUNT;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME;
@@ -195,6 +196,7 @@ public class IndexUpdate implements Editor {
                     // probably not an index def
                     continue;
                 }
+                manageIndexPath(definition, name);
                 boolean shouldReindex = shouldReindex(definition,
                         before, name);
                 String indexPath = getIndexPath(getPath(), name);
@@ -227,6 +229,13 @@ public class IndexUpdate implements Editor {
         }
     }
 
+    private void manageIndexPath(NodeBuilder definition, String name) {
+        String path = definition.getString(INDEX_PATH);
+        if (path == null){
+            definition.setProperty(INDEX_PATH, PathUtils.concat(getPath(), INDEX_DEFINITIONS_NAME, name));
+        }
+    }
+
     private void incrementReIndexCount(NodeBuilder definition) {
         long count = 0;
         if(definition.hasProperty(REINDEX_COUNT)){
diff --git oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java
index f8b25a3..0c53f2a 100644
--- oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java
+++ oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java
@@ -24,6 +24,7 @@ import static org.apache.jackrabbit.JcrConstants.NT_BASE;
 import static org.apache.jackrabbit.JcrConstants.NT_FILE;
 import static org.apache.jackrabbit.JcrConstants.NT_UNSTRUCTURED;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_PATH;
 import static org.apache.jackrabbit.oak.plugins.index.IndexUtils.createIndexDefinition;
 import static org.apache.jackrabbit.oak.plugins.index.PathFilter.PROP_EXCLUDED_PATHS;
 import static org.apache.jackrabbit.oak.plugins.index.PathFilter.PROP_INCLUDED_PATHS;
@@ -66,6 +67,7 @@ import org.apache.jackrabbit.oak.spi.query.Filter;
 import org.apache.jackrabbit.oak.spi.query.PropertyValues;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableSet;
@@ -733,6 +735,20 @@ public class PropertyIndexTest {
         assertTrue(Double.POSITIVE_INFINITY == plan.getCost());
     }
 
+    @Test
+    public void indexPath() throws Exception{
+        NodeState root = INITIAL_CONTENT;
+
+        // Add index definition
+        NodeBuilder builder = root.builder();
+        createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "foo",
+                true, false, ImmutableSet.of("foo"), null);
+        NodeState after = builder.getNodeState();
+        NodeState indexed = HOOK.processCommit(root, after, CommitInfo.EMPTY);
+        NodeState idxDefn = NodeStateUtils.getNode(indexed, "/oak:index/foo");
+        assertEquals("/oak:index/foo", idxDefn.getString(INDEX_PATH));
+    }
+
     private int getResultSize(NodeState indexed, String name, String value){
         FilterImpl f = createFilter(indexed, NT_BASE);
 
