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;
+ }
}
}