You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2017/05/10 03:54:31 UTC
[29/43] metamodel git commit: METAMODEL-1128: Fixed
METAMODEL-1128: Fixed
Fixes #136
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/f18ae8b7
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/f18ae8b7
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/f18ae8b7
Branch: refs/heads/5.x
Commit: f18ae8b75f5baf4832a3c1942a9fd82373fa7355
Parents: 11710af
Author: kaspersorensen <i....@gmail.com>
Authored: Fri Nov 11 13:38:28 2016 -0800
Committer: kaspersorensen <i....@gmail.com>
Committed: Fri Nov 11 13:38:28 2016 -0800
----------------------------------------------------------------------
.../rest/ElasticSearchRestDataContext.java | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metamodel/blob/f18ae8b7/elasticsearch/rest/src/main/java/org/apache/metamodel/elasticsearch/rest/ElasticSearchRestDataContext.java
----------------------------------------------------------------------
diff --git a/elasticsearch/rest/src/main/java/org/apache/metamodel/elasticsearch/rest/ElasticSearchRestDataContext.java b/elasticsearch/rest/src/main/java/org/apache/metamodel/elasticsearch/rest/ElasticSearchRestDataContext.java
index b55db13..920217f 100644
--- a/elasticsearch/rest/src/main/java/org/apache/metamodel/elasticsearch/rest/ElasticSearchRestDataContext.java
+++ b/elasticsearch/rest/src/main/java/org/apache/metamodel/elasticsearch/rest/ElasticSearchRestDataContext.java
@@ -95,6 +95,9 @@ public class ElasticSearchRestDataContext extends QueryPostprocessDataContext im
// 1 minute timeout
public static final String TIMEOUT_SCROLL = "1m";
+ // we scroll when more than 400 rows are expected
+ private static final int SCROLL_THRESHOLD = 400;
+
private final JestClient elasticSearchClient;
private final String indexName;
@@ -265,13 +268,18 @@ public class ElasticSearchRestDataContext extends QueryPostprocessDataContext im
if (queryBuilder != null) {
// where clause can be pushed down to an ElasticSearch query
SearchSourceBuilder searchSourceBuilder = createSearchRequest(firstRow, maxRows, queryBuilder);
- SearchResult result = executeSearch(table, searchSourceBuilder, false);
+ SearchResult result = executeSearch(table, searchSourceBuilder, scrollNeeded(maxRows));
return new JestElasticSearchDataSet(elasticSearchClient, result, selectItems);
}
return super.materializeMainSchemaTable(table, selectItems, whereItems, firstRow, maxRows);
}
+ private boolean scrollNeeded(int maxRows) {
+ // if either we don't know about max rows or max rows is set higher than threshold
+ return !limitMaxRowsIsSet(maxRows) || maxRows > SCROLL_THRESHOLD;
+ }
+
private SearchResult executeSearch(Table table, SearchSourceBuilder searchSourceBuilder, boolean scroll) {
Search.Builder builder = new Search.Builder(searchSourceBuilder.toString()).addIndex(getIndexName()).addType(
table.getName());
@@ -292,7 +300,7 @@ public class ElasticSearchRestDataContext extends QueryPostprocessDataContext im
@Override
protected DataSet materializeMainSchemaTable(Table table, Column[] columns, int maxRows) {
- SearchResult searchResult = executeSearch(table, createSearchRequest(1, maxRows, null), limitMaxRowsIsSet(
+ SearchResult searchResult = executeSearch(table, createSearchRequest(1, maxRows, null), scrollNeeded(
maxRows));
return new JestElasticSearchDataSet(elasticSearchClient, searchResult, columns);
@@ -306,6 +314,8 @@ public class ElasticSearchRestDataContext extends QueryPostprocessDataContext im
}
if (limitMaxRowsIsSet(maxRows)) {
searchRequest.size(maxRows);
+ } else {
+ searchRequest.size(Integer.MAX_VALUE);
}
if (queryBuilder != null) {