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/10/07 13:49:54 UTC

svn commit: r1868082 - in /jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query: ElasticsearchIndex.java ElasticsearchIndexNode.java ElasticsearchIndexStatistics.java

Author: tommaso
Date: Mon Oct  7 13:49:54 2019
New Revision: 1868082

URL: http://svn.apache.org/viewvc?rev=1868082&view=rev
Log:
OAK-8663 - Implement IndexStatistics in Oak ES

Modified:
    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/ElasticsearchIndexNode.java
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndexStatistics.java

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=1868082&r1=1868081&r2=1868082&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 Mon Oct  7 13:49:54 2019
@@ -80,12 +80,14 @@ public class ElasticsearchIndex extends
 
     @Override
     protected ElasticsearchIndexNode acquireIndexNode(IndexPlan plan) {
-        return (ElasticsearchIndexNode)super.acquireIndexNode(plan);
+        return (ElasticsearchIndexNode) super.acquireIndexNode(plan);
     }
 
     @Override
     protected IndexNode acquireIndexNode(String indexPath) {
-        return ElasticsearchIndexNode.fromIndexPath(root, indexPath);
+        ElasticsearchIndexNode elasticsearchIndexNode = ElasticsearchIndexNode.fromIndexPath(root, indexPath);
+        elasticsearchIndexNode.setFactory(esIndexCoordFactory);
+        return elasticsearchIndexNode;
     }
 
     @Override

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=1868082&r1=1868081&r2=1868082&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 Mon Oct  7 13:49:54 2019
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.elasticsearch.query;
 
+import org.apache.jackrabbit.oak.plugins.index.elasticsearch.ElasticsearchIndexCoordinateFactory;
 import org.apache.jackrabbit.oak.plugins.index.elasticsearch.ElasticsearchIndexDefinition;
 import org.apache.jackrabbit.oak.plugins.index.search.IndexNode;
 import org.apache.jackrabbit.oak.plugins.index.search.IndexStatistics;
@@ -27,6 +28,7 @@ import org.jetbrains.annotations.Nullabl
 public class ElasticsearchIndexNode implements IndexNode {
 
     private final ElasticsearchIndexDefinition indexDefinition;
+    private ElasticsearchIndexCoordinateFactory factory;
 
     static ElasticsearchIndexNode fromIndexPath(@NotNull NodeState root, @NotNull String indexPath) {
         NodeState indexNS = NodeStateUtils.getNode(root, indexPath);
@@ -57,6 +59,10 @@ public class ElasticsearchIndexNode impl
 
     @Override
     public @Nullable IndexStatistics getIndexStatistics() {
-        return new ElasticsearchIndexStatistics();
+        return new ElasticsearchIndexStatistics(factory.getElasticsearchIndexCoordinate(indexDefinition));
+    }
+
+    public void setFactory(ElasticsearchIndexCoordinateFactory factory) {
+        this.factory = factory;
     }
 }

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndexStatistics.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndexStatistics.java?rev=1868082&r1=1868081&r2=1868082&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndexStatistics.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchIndexStatistics.java Mon Oct  7 13:49:54 2019
@@ -16,18 +16,50 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.elasticsearch.query;
 
+import org.apache.jackrabbit.oak.plugins.index.elasticsearch.ElasticsearchIndexCoordinate;
 import org.apache.jackrabbit.oak.plugins.index.search.IndexStatistics;
+import org.elasticsearch.client.RequestOptions;
+import org.elasticsearch.client.core.CountRequest;
+import org.elasticsearch.client.core.CountResponse;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.search.builder.SearchSourceBuilder;
+
+import java.io.IOException;
 
 public class ElasticsearchIndexStatistics implements IndexStatistics {
+    private final ElasticsearchIndexCoordinate elasticsearchIndexCoordinate;
+
+    ElasticsearchIndexStatistics(ElasticsearchIndexCoordinate elasticsearchIndexCoordinate) {
+        this.elasticsearchIndexCoordinate = elasticsearchIndexCoordinate;
+    }
+
     @Override
     public int numDocs() {
-        // TODO: some large value until we implement statistics
-        return 100000;
+        CountRequest countRequest = new CountRequest();
+        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+        searchSourceBuilder.query(QueryBuilders.matchAllQuery());
+        countRequest.source(searchSourceBuilder);
+        try {
+            CountResponse count = elasticsearchIndexCoordinate.getClient().count(countRequest, RequestOptions.DEFAULT);
+            return (int) count.getCount();
+        } catch (IOException e) {
+            // ignore failure
+            return 100000;
+        }
     }
 
     @Override
     public int getDocCountFor(String key) {
-        // TODO: some large-ish value until we implement statistics
-        return 1000;
+        CountRequest countRequest = new CountRequest();
+        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+        searchSourceBuilder.query(QueryBuilders.existsQuery(key));
+        countRequest.source(searchSourceBuilder);
+        try {
+            CountResponse count = elasticsearchIndexCoordinate.getClient().count(countRequest, RequestOptions.DEFAULT);
+            return (int) count.getCount();
+        } catch (IOException e) {
+            // ignore failure
+            return 1000;
+        }
     }
 }