Skip to content

Commit

Permalink
SONAR-8092 combine es index name and es type name into IndexTypeId
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Schwarz authored and bartfastiel committed Feb 24, 2017
1 parent beba21a commit 3421203
Show file tree
Hide file tree
Showing 65 changed files with 460 additions and 394 deletions.
Expand Up @@ -48,8 +48,7 @@
import static org.sonar.server.component.index.ComponentIndexDefinition.FIELD_KEY; import static org.sonar.server.component.index.ComponentIndexDefinition.FIELD_KEY;
import static org.sonar.server.component.index.ComponentIndexDefinition.FIELD_NAME; import static org.sonar.server.component.index.ComponentIndexDefinition.FIELD_NAME;
import static org.sonar.server.component.index.ComponentIndexDefinition.FIELD_QUALIFIER; import static org.sonar.server.component.index.ComponentIndexDefinition.FIELD_QUALIFIER;
import static org.sonar.server.component.index.ComponentIndexDefinition.INDEX_COMPONENTS; import static org.sonar.server.component.index.ComponentIndexDefinition.INDEX_TYPE_COMPONENT;
import static org.sonar.server.component.index.ComponentIndexDefinition.TYPE_COMPONENT;


public class ComponentIndex { public class ComponentIndex {


Expand All @@ -76,8 +75,7 @@ List<ComponentsPerQualifier> search(ComponentIndexQuery query, ComponentTextSear
} }


SearchRequestBuilder request = client SearchRequestBuilder request = client
.prepareSearch(INDEX_COMPONENTS) .prepareSearch(INDEX_TYPE_COMPONENT)
.setTypes(TYPE_COMPONENT)
.setQuery(createQuery(query, features)) .setQuery(createQuery(query, features))
.addAggregation(createAggregation(query)) .addAggregation(createAggregation(query))


Expand Down
Expand Up @@ -21,16 +21,15 @@


import org.sonar.api.config.Settings; import org.sonar.api.config.Settings;
import org.sonar.server.es.IndexDefinition; import org.sonar.server.es.IndexDefinition;
import org.sonar.server.es.IndexTypeId;
import org.sonar.server.es.NewIndex; import org.sonar.server.es.NewIndex;


import static org.sonar.server.es.DefaultIndexSettingsElement.SEARCH_GRAMS_ANALYZER; import static org.sonar.server.es.DefaultIndexSettingsElement.SEARCH_GRAMS_ANALYZER;
import static org.sonar.server.es.DefaultIndexSettingsElement.SORTABLE_ANALYZER; import static org.sonar.server.es.DefaultIndexSettingsElement.SORTABLE_ANALYZER;


public class ComponentIndexDefinition implements IndexDefinition { public class ComponentIndexDefinition implements IndexDefinition {


public static final String INDEX_COMPONENTS = "components"; public static final IndexTypeId INDEX_TYPE_COMPONENT = new IndexTypeId("components", "component");

public static final String TYPE_COMPONENT = "component";
public static final String FIELD_PROJECT_UUID = "project_uuid"; public static final String FIELD_PROJECT_UUID = "project_uuid";
public static final String FIELD_KEY = "key"; public static final String FIELD_KEY = "key";
public static final String FIELD_NAME = "name"; public static final String FIELD_NAME = "name";
Expand All @@ -46,11 +45,11 @@ public ComponentIndexDefinition(Settings settings) {


@Override @Override
public void define(IndexDefinitionContext context) { public void define(IndexDefinitionContext context) {
NewIndex index = context.create(INDEX_COMPONENTS); NewIndex index = context.create(INDEX_TYPE_COMPONENT.getIndex());
index.refreshHandledByIndexer(); index.refreshHandledByIndexer();
index.configureShards(settings, DEFAULT_NUMBER_OF_SHARDS); index.configureShards(settings, DEFAULT_NUMBER_OF_SHARDS);


NewIndex.NewIndexType mapping = index.createType(TYPE_COMPONENT) NewIndex.NewIndexType mapping = index.createType(INDEX_TYPE_COMPONENT.getType())
.requireProjectAuthorization(); .requireProjectAuthorization();


mapping.stringFieldBuilder(FIELD_PROJECT_UUID).build(); mapping.stringFieldBuilder(FIELD_PROJECT_UUID).build();
Expand Down
Expand Up @@ -44,12 +44,11 @@


import static org.elasticsearch.index.query.QueryBuilders.boolQuery; import static org.elasticsearch.index.query.QueryBuilders.boolQuery;
import static org.elasticsearch.index.query.QueryBuilders.termQuery; import static org.elasticsearch.index.query.QueryBuilders.termQuery;
import static org.sonar.server.component.index.ComponentIndexDefinition.INDEX_COMPONENTS; import static org.sonar.server.component.index.ComponentIndexDefinition.INDEX_TYPE_COMPONENT;
import static org.sonar.server.component.index.ComponentIndexDefinition.TYPE_COMPONENT;


public class ComponentIndexer implements ProjectIndexer, NeedAuthorizationIndexer, Startable, StartupIndexer { public class ComponentIndexer implements ProjectIndexer, NeedAuthorizationIndexer, Startable, StartupIndexer {


private static final AuthorizationScope AUTHORIZATION_SCOPE = new AuthorizationScope(INDEX_COMPONENTS, project -> true); private static final AuthorizationScope AUTHORIZATION_SCOPE = new AuthorizationScope(INDEX_TYPE_COMPONENT, project -> true);


private final ThreadPoolExecutor executor; private final ThreadPoolExecutor executor;
private final DbClient dbClient; private final DbClient dbClient;
Expand Down Expand Up @@ -97,7 +96,7 @@ public AuthorizationScope getAuthorizationScope() {
* <b>Warning:</b> only use <code>null</code> during startup. * <b>Warning:</b> only use <code>null</code> during startup.
*/ */
private void doIndexByProjectUuid(@Nullable String projectUuid) { private void doIndexByProjectUuid(@Nullable String projectUuid) {
BulkIndexer bulk = new BulkIndexer(esClient, INDEX_COMPONENTS); BulkIndexer bulk = new BulkIndexer(esClient, INDEX_TYPE_COMPONENT.getIndex());


// setLarge must be enabled only during server startup because it disables replicas // setLarge must be enabled only during server startup because it disables replicas
bulk.setLarge(projectUuid == null); bulk.setLarge(projectUuid == null);
Expand All @@ -115,16 +114,16 @@ private void doIndexByProjectUuid(@Nullable String projectUuid) {


@Override @Override
public void deleteProject(String projectUuid) { public void deleteProject(String projectUuid) {
BulkIndexer.delete(esClient, INDEX_COMPONENTS, esClient.prepareSearch(INDEX_COMPONENTS) BulkIndexer.delete(esClient, INDEX_TYPE_COMPONENT.getIndex(), esClient.prepareSearch(INDEX_TYPE_COMPONENT)
.setQuery(boolQuery() .setQuery(boolQuery()
.filter( .filter(
termQuery(ComponentIndexDefinition.FIELD_PROJECT_UUID, projectUuid)))); termQuery(ComponentIndexDefinition.FIELD_PROJECT_UUID, projectUuid))));
} }


public void delete(String projectUuid, Collection<String> disabledComponentUuids) { public void delete(String projectUuid, Collection<String> disabledComponentUuids) {
BulkIndexer bulk = new BulkIndexer(esClient, INDEX_COMPONENTS); BulkIndexer bulk = new BulkIndexer(esClient, INDEX_TYPE_COMPONENT.getIndex());
bulk.start(); bulk.start();
disabledComponentUuids.stream().forEach(uuid -> bulk.addDeletion(INDEX_COMPONENTS, TYPE_COMPONENT, uuid, projectUuid)); disabledComponentUuids.stream().forEach(uuid -> bulk.addDeletion(INDEX_TYPE_COMPONENT, uuid, projectUuid));
bulk.stop(); bulk.stop();
} }


Expand All @@ -138,7 +137,7 @@ void index(ComponentDto... docs) {
} }


private void indexNow(ComponentDto... docs) { private void indexNow(ComponentDto... docs) {
BulkIndexer bulk = new BulkIndexer(esClient, INDEX_COMPONENTS); BulkIndexer bulk = new BulkIndexer(esClient, INDEX_TYPE_COMPONENT.getIndex());
bulk.setLarge(false); bulk.setLarge(false);
bulk.start(); bulk.start();
Arrays.stream(docs) Arrays.stream(docs)
Expand All @@ -149,7 +148,7 @@ private void indexNow(ComponentDto... docs) {
} }


private static IndexRequest newIndexRequest(ComponentDoc doc) { private static IndexRequest newIndexRequest(ComponentDoc doc) {
return new IndexRequest(INDEX_COMPONENTS, TYPE_COMPONENT, doc.getId()) return new IndexRequest(INDEX_TYPE_COMPONENT.getIndex(), INDEX_TYPE_COMPONENT.getType(), doc.getId())
.routing(doc.getRouting()) .routing(doc.getRouting())
.parent(doc.getParent()) .parent(doc.getParent())
.source(doc.getFields()); .source(doc.getFields());
Expand Down
Expand Up @@ -33,17 +33,15 @@ public abstract class BaseIndexer implements Startable {


private final System2 system2; private final System2 system2;
private final ThreadPoolExecutor executor; private final ThreadPoolExecutor executor;
private final String indexName; private final IndexTypeId indexType;
private final String typeName;
protected final EsClient esClient; protected final EsClient esClient;
private final String dateFieldName; private final String dateFieldName;
private volatile long lastUpdatedAt = -1L; private volatile long lastUpdatedAt = -1L;


protected BaseIndexer(System2 system2, EsClient client, long threadKeepAliveSeconds, String indexName, String typeName, protected BaseIndexer(System2 system2, EsClient client, long threadKeepAliveSeconds, IndexTypeId indexType,
String dateFieldName) { String dateFieldName) {
this.system2 = system2; this.system2 = system2;
this.indexName = indexName; this.indexType = indexType;
this.typeName = typeName;
this.dateFieldName = dateFieldName; this.dateFieldName = dateFieldName;
this.esClient = client; this.esClient = client;
this.executor = new ThreadPoolExecutor(0, 1, this.executor = new ThreadPoolExecutor(0, 1,
Expand All @@ -54,7 +52,7 @@ public void index(final IndexerTask task) {
final long requestedAt = system2.now(); final long requestedAt = system2.now();
Future submit = executor.submit(() -> { Future submit = executor.submit(() -> {
if (lastUpdatedAt == -1L) { if (lastUpdatedAt == -1L) {
lastUpdatedAt = esClient.getMaxFieldValue(indexName, typeName, dateFieldName); lastUpdatedAt = esClient.getMaxFieldValue(indexType, dateFieldName);
} }
if (requestedAt > lastUpdatedAt) { if (requestedAt > lastUpdatedAt) {
long l = task.index(lastUpdatedAt); long l = task.index(lastUpdatedAt);
Expand Down
Expand Up @@ -32,6 +32,7 @@
import org.elasticsearch.action.bulk.BulkItemResponse; import org.elasticsearch.action.bulk.BulkItemResponse;
import org.elasticsearch.action.bulk.BulkRequestBuilder; import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequestBuilder;
import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.metadata.IndexMetaData;
Expand Down Expand Up @@ -152,11 +153,11 @@ public void addDeletion(SearchRequestBuilder searchRequest) {
SearchHit[] hits = searchResponse.getHits().getHits(); SearchHit[] hits = searchResponse.getHits().getHits();
for (SearchHit hit : hits) { for (SearchHit hit : hits) {
SearchHitField routing = hit.field("_routing"); SearchHitField routing = hit.field("_routing");
if (routing == null) { DeleteRequestBuilder deleteRequestBuilder = client.prepareDelete(hit.index(), hit.type(), hit.getId());
addDeletion(hit.index(), hit.type(), hit.getId()); if (routing != null) {
} else { deleteRequestBuilder.setRouting(routing.getValue());
addDeletion(hit.index(), hit.type(), hit.getId(), routing.getValue());
} }
add(deleteRequestBuilder.request());
} }


String scrollId = searchResponse.getScrollId(); String scrollId = searchResponse.getScrollId();
Expand All @@ -168,12 +169,12 @@ public void addDeletion(SearchRequestBuilder searchRequest) {
} }
} }


public void addDeletion(String index, String type, String id) { public void addDeletion(IndexTypeId indexType, String id) {
add(client.prepareDelete(index, type, id).request()); add(client.prepareDelete(indexType, id).request());
} }


public void addDeletion(String index, String type, String id, String routing) { public void addDeletion(IndexTypeId indexType, String id, String routing) {
add(client.prepareDelete(index, type, id).setRouting(routing).request()); add(client.prepareDelete(indexType, id).setRouting(routing).request());
} }


/** /**
Expand Down
Expand Up @@ -132,6 +132,12 @@ public SearchRequestBuilder prepareSearch(String... indices) {
return new ProxySearchRequestBuilder(nativeClient()).setIndices(indices); return new ProxySearchRequestBuilder(nativeClient()).setIndices(indices);
} }


public SearchRequestBuilder prepareSearch(IndexTypeId... indexType) {
return new ProxySearchRequestBuilder(nativeClient())
.setIndices(IndexTypeId.getIndices(indexType))
.setTypes(IndexTypeId.getTypes(indexType));
}

public SearchScrollRequestBuilder prepareSearchScroll(String scrollId) { public SearchScrollRequestBuilder prepareSearchScroll(String scrollId) {
return new ProxySearchScrollRequestBuilder(scrollId, nativeClient()); return new ProxySearchScrollRequestBuilder(scrollId, nativeClient());
} }
Expand All @@ -140,8 +146,8 @@ public GetRequestBuilder prepareGet() {
return new ProxyGetRequestBuilder(nativeClient()); return new ProxyGetRequestBuilder(nativeClient());
} }


public GetRequestBuilder prepareGet(String index, String type, String id) { public GetRequestBuilder prepareGet(IndexTypeId indexType, String id) {
return new ProxyGetRequestBuilder(nativeClient()).setIndex(index).setType(type).setId(id); return new ProxyGetRequestBuilder(nativeClient()).setIndex(indexType.getIndex()).setType(indexType.getType()).setId(id);
} }


public MultiGetRequestBuilder prepareMultiGet() { public MultiGetRequestBuilder prepareMultiGet() {
Expand All @@ -160,12 +166,16 @@ public BulkRequestBuilder prepareBulk() {
return new ProxyBulkRequestBuilder(nativeClient()); return new ProxyBulkRequestBuilder(nativeClient());
} }


public DeleteRequestBuilder prepareDelete(IndexTypeId indexType, String id) {
return new ProxyDeleteRequestBuilder(nativeClient(), indexType.getIndex()).setType(indexType.getType()).setId(id);
}

public DeleteRequestBuilder prepareDelete(String index, String type, String id) { public DeleteRequestBuilder prepareDelete(String index, String type, String id) {
return new ProxyDeleteRequestBuilder(nativeClient(), index).setType(type).setId(id); return new ProxyDeleteRequestBuilder(nativeClient(), index).setType(type).setId(id);
} }


public IndexRequestBuilder prepareIndex(String index, String type) { public IndexRequestBuilder prepareIndex(IndexTypeId indexType) {
return new ProxyIndexRequestBuilder(nativeClient()).setIndex(index).setType(type); return new ProxyIndexRequestBuilder(nativeClient()).setIndex(indexType.getIndex()).setType(indexType.getType());
} }


public ForceMergeRequestBuilder prepareForceMerge(String indexName) { public ForceMergeRequestBuilder prepareForceMerge(String indexName) {
Expand All @@ -178,9 +188,8 @@ public ClearIndicesCacheRequestBuilder prepareClearCache(String... indices) {
return new ProxyClearCacheRequestBuilder(nativeClient()).setIndices(indices); return new ProxyClearCacheRequestBuilder(nativeClient()).setIndices(indices);
} }


public long getMaxFieldValue(String indexName, String typeName, String fieldName) { public long getMaxFieldValue(IndexTypeId indexType, String fieldName) {
SearchRequestBuilder request = prepareSearch(indexName) SearchRequestBuilder request = prepareSearch(indexType)
.setTypes(typeName)
.setQuery(QueryBuilders.matchAllQuery()) .setQuery(QueryBuilders.matchAllQuery())
.setSize(0) .setSize(0)
.addAggregation(AggregationBuilders.max("latest").field(fieldName)); .addAggregation(AggregationBuilders.max("latest").field(fieldName));
Expand Down
@@ -0,0 +1,84 @@
/*
* SonarQube
* Copyright (C) 2009-2017 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.es;

import java.util.Arrays;
import java.util.function.Function;
import org.sonar.core.util.stream.Collectors;

import static java.util.Objects.requireNonNull;

public class IndexTypeId {

private final String index;
private final String type;

public IndexTypeId(String index, String type) {
this.index = requireNonNull(index);
this.type = requireNonNull(type);
}

public String getIndex() {
return index;
}

public String getType() {
return type;
}

public static String[] getIndices(IndexTypeId... indexTypes) {
return getDetails(IndexTypeId::getIndex, indexTypes);
}

public static String[] getTypes(IndexTypeId... indexTypes) {
return getDetails(IndexTypeId::getType, indexTypes);
}

private static String[] getDetails(Function<? super IndexTypeId, ? extends String> function, IndexTypeId... indexTypes) {
return Arrays.stream(indexTypes).map(function).collect(Collectors.toSet(indexTypes.length)).toArray(new String[0]);
}

@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
IndexTypeId that = (IndexTypeId) o;
if (!index.equals(that.index)) {
return false;
}
return type.equals(that.type);
}

@Override
public int hashCode() {
int result = index.hashCode();
result = 31 * result + type.hashCode();
return result;
}

@Override
public String toString() {
return "[" + index + "/" + type + "]";
}
}
Expand Up @@ -193,8 +193,7 @@ public IssueIndex(EsClient client, System2 system, UserSession userSession, Auth


public SearchResult<IssueDoc> search(IssueQuery query, SearchOptions options) { public SearchResult<IssueDoc> search(IssueQuery query, SearchOptions options) {
SearchRequestBuilder requestBuilder = getClient() SearchRequestBuilder requestBuilder = getClient()
.prepareSearch(IssueIndexDefinition.INDEX) .prepareSearch(IssueIndexDefinition.INDEX_TYPE_ISSUE);
.setTypes(IssueIndexDefinition.TYPE_ISSUE);


configureSorting(query, requestBuilder); configureSorting(query, requestBuilder);
configurePagination(options, requestBuilder); configurePagination(options, requestBuilder);
Expand Down Expand Up @@ -319,8 +318,8 @@ private static QueryBuilder createViewFilter(Collection<String> viewUuids) {
BoolQueryBuilder viewsFilter = boolQuery(); BoolQueryBuilder viewsFilter = boolQuery();
for (String viewUuid : viewUuids) { for (String viewUuid : viewUuids) {
viewsFilter.should(QueryBuilders.termsLookupQuery(IssueIndexDefinition.FIELD_ISSUE_PROJECT_UUID) viewsFilter.should(QueryBuilders.termsLookupQuery(IssueIndexDefinition.FIELD_ISSUE_PROJECT_UUID)
.lookupIndex(ViewIndexDefinition.INDEX) .lookupIndex(ViewIndexDefinition.INDEX_TYPE_VIEW.getIndex())
.lookupType(ViewIndexDefinition.TYPE_VIEW) .lookupType(ViewIndexDefinition.INDEX_TYPE_VIEW.getType())
.lookupId(viewUuid) .lookupId(viewUuid)
.lookupPath(ViewIndexDefinition.FIELD_PROJECTS)); .lookupPath(ViewIndexDefinition.FIELD_PROJECTS));
} }
Expand Down Expand Up @@ -479,8 +478,7 @@ private Optional<AggregationBuilder> getCreatedAtFacet(IssueQuery query, Map<Str
private Optional<Long> getMinCreatedAt(Map<String, QueryBuilder> filters, QueryBuilder esQuery) { private Optional<Long> getMinCreatedAt(Map<String, QueryBuilder> filters, QueryBuilder esQuery) {
String facetNameAndField = IssueIndexDefinition.FIELD_ISSUE_FUNC_CREATED_AT; String facetNameAndField = IssueIndexDefinition.FIELD_ISSUE_FUNC_CREATED_AT;
SearchRequestBuilder esRequest = getClient() SearchRequestBuilder esRequest = getClient()
.prepareSearch(IssueIndexDefinition.INDEX) .prepareSearch(IssueIndexDefinition.INDEX_TYPE_ISSUE)
.setTypes(IssueIndexDefinition.TYPE_ISSUE)
.setSize(0); .setSize(0);
BoolQueryBuilder esFilter = boolQuery(); BoolQueryBuilder esFilter = boolQuery();
filters.values().stream().filter(Objects::nonNull).forEach(esFilter::must); filters.values().stream().filter(Objects::nonNull).forEach(esFilter::must);
Expand Down Expand Up @@ -591,8 +589,7 @@ private static QueryBuilder createTermsFilter(String field, Collection<?> values


public List<String> listTags(IssueQuery query, @Nullable String textQuery, int maxNumberOfTags) { public List<String> listTags(IssueQuery query, @Nullable String textQuery, int maxNumberOfTags) {
SearchRequestBuilder requestBuilder = getClient() SearchRequestBuilder requestBuilder = getClient()
.prepareSearch(IssueIndexDefinition.INDEX, RuleIndexDefinition.INDEX) .prepareSearch(IssueIndexDefinition.INDEX_TYPE_ISSUE, RuleIndexDefinition.INDEX_TYPE_RULE);
.setTypes(IssueIndexDefinition.TYPE_ISSUE, RuleIndexDefinition.TYPE_RULE);


requestBuilder.setQuery(boolQuery().must(matchAllQuery()).filter(createBoolFilter(query))); requestBuilder.setQuery(boolQuery().must(matchAllQuery()).filter(createBoolFilter(query)));


Expand Down Expand Up @@ -639,10 +636,9 @@ public List<String> listAuthors(IssueQuery query, @Nullable String textQuery, in


private Terms listTermsMatching(String fieldName, IssueQuery query, @Nullable String textQuery, Terms.Order termsOrder, int maxNumberOfTags) { private Terms listTermsMatching(String fieldName, IssueQuery query, @Nullable String textQuery, Terms.Order termsOrder, int maxNumberOfTags) {
SearchRequestBuilder requestBuilder = getClient() SearchRequestBuilder requestBuilder = getClient()
.prepareSearch(IssueIndexDefinition.INDEX) .prepareSearch(IssueIndexDefinition.INDEX_TYPE_ISSUE)
// Avoids returning search hits // Avoids returning search hits
.setSize(0) .setSize(0);
.setTypes(IssueIndexDefinition.TYPE_ISSUE);


requestBuilder.setQuery(boolQuery().must(QueryBuilders.matchAllQuery()).filter(createBoolFilter(query))); requestBuilder.setQuery(boolQuery().must(QueryBuilders.matchAllQuery()).filter(createBoolFilter(query)));


Expand Down Expand Up @@ -690,8 +686,7 @@ public Iterator<IssueDoc> selectIssuesForBatch(ComponentDto component) {
} }


SearchRequestBuilder requestBuilder = getClient() SearchRequestBuilder requestBuilder = getClient()
.prepareSearch(IssueIndexDefinition.INDEX) .prepareSearch(IssueIndexDefinition.INDEX_TYPE_ISSUE)
.setTypes(IssueIndexDefinition.TYPE_ISSUE)
.setSearchType(SearchType.SCAN) .setSearchType(SearchType.SCAN)
.setScroll(TimeValue.timeValueMinutes(EsUtils.SCROLL_TIME_IN_MINUTES)) .setScroll(TimeValue.timeValueMinutes(EsUtils.SCROLL_TIME_IN_MINUTES))
.setSize(10_000) .setSize(10_000)
Expand Down

0 comments on commit 3421203

Please sign in to comment.