diff --git a/core/src/main/java/org/elasticsearch/ElasticsearchException.java b/core/src/main/java/org/elasticsearch/ElasticsearchException.java index 9f9dbf18869..4a35bcbcfb0 100644 --- a/core/src/main/java/org/elasticsearch/ElasticsearchException.java +++ b/core/src/main/java/org/elasticsearch/ElasticsearchException.java @@ -566,7 +566,7 @@ public class ElasticsearchException extends RuntimeException implements ToXConte REFRESH_FAILED_ENGINE_EXCEPTION(org.elasticsearch.index.engine.RefreshFailedEngineException.class, org.elasticsearch.index.engine.RefreshFailedEngineException::new, 90), AGGREGATION_INITIALIZATION_EXCEPTION(org.elasticsearch.search.aggregations.AggregationInitializationException.class, org.elasticsearch.search.aggregations.AggregationInitializationException::new, 91), DELAY_RECOVERY_EXCEPTION(org.elasticsearch.indices.recovery.DelayRecoveryException.class, org.elasticsearch.indices.recovery.DelayRecoveryException::new, 92), - INDEX_WARMER_MISSING_EXCEPTION(org.elasticsearch.search.warmer.IndexWarmerMissingException.class, org.elasticsearch.search.warmer.IndexWarmerMissingException::new, 93), + // 93 used to be for IndexWarmerMissingException NO_NODE_AVAILABLE_EXCEPTION(org.elasticsearch.client.transport.NoNodeAvailableException.class, org.elasticsearch.client.transport.NoNodeAvailableException::new, 94), INVALID_SNAPSHOT_NAME_EXCEPTION(org.elasticsearch.snapshots.InvalidSnapshotNameException.class, org.elasticsearch.snapshots.InvalidSnapshotNameException::new, 96), ILLEGAL_INDEX_SHARD_STATE_EXCEPTION(org.elasticsearch.index.shard.IllegalIndexShardStateException.class, org.elasticsearch.index.shard.IllegalIndexShardStateException::new, 97), diff --git a/core/src/main/java/org/elasticsearch/action/ActionModule.java b/core/src/main/java/org/elasticsearch/action/ActionModule.java index 11cafb326a0..5f1a181fabb 100644 --- a/core/src/main/java/org/elasticsearch/action/ActionModule.java +++ b/core/src/main/java/org/elasticsearch/action/ActionModule.java @@ -127,12 +127,6 @@ import org.elasticsearch.action.admin.indices.upgrade.post.UpgradeAction; import org.elasticsearch.action.admin.indices.upgrade.post.UpgradeSettingsAction; import org.elasticsearch.action.admin.indices.validate.query.TransportValidateQueryAction; import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryAction; -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerAction; -import org.elasticsearch.action.admin.indices.warmer.delete.TransportDeleteWarmerAction; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersAction; -import org.elasticsearch.action.admin.indices.warmer.get.TransportGetWarmersAction; -import org.elasticsearch.action.admin.indices.warmer.put.PutWarmerAction; -import org.elasticsearch.action.admin.indices.warmer.put.TransportPutWarmerAction; import org.elasticsearch.action.bulk.BulkAction; import org.elasticsearch.action.bulk.TransportBulkAction; import org.elasticsearch.action.bulk.TransportShardBulkAction; @@ -304,9 +298,6 @@ public class ActionModule extends AbstractModule { registerAction(UpgradeStatusAction.INSTANCE, TransportUpgradeStatusAction.class); registerAction(UpgradeSettingsAction.INSTANCE, TransportUpgradeSettingsAction.class); registerAction(ClearIndicesCacheAction.INSTANCE, TransportClearIndicesCacheAction.class); - registerAction(PutWarmerAction.INSTANCE, TransportPutWarmerAction.class); - registerAction(DeleteWarmerAction.INSTANCE, TransportDeleteWarmerAction.class); - registerAction(GetWarmersAction.INSTANCE, TransportGetWarmersAction.class); registerAction(GetAliasesAction.INSTANCE, TransportGetAliasesAction.class); registerAction(AliasesExistAction.INSTANCE, TransportAliasesExistAction.class); registerAction(GetSettingsAction.INSTANCE, TransportGetSettingsAction.class); diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/get/GetIndexRequest.java b/core/src/main/java/org/elasticsearch/action/admin/indices/get/GetIndexRequest.java index 4c85cd85f3d..80ce5050f0a 100644 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/get/GetIndexRequest.java +++ b/core/src/main/java/org/elasticsearch/action/admin/indices/get/GetIndexRequest.java @@ -37,8 +37,7 @@ public class GetIndexRequest extends ClusterInfoRequest { public static enum Feature { ALIASES((byte) 0, "_aliases", "_alias"), MAPPINGS((byte) 1, "_mappings", "_mapping"), - SETTINGS((byte) 2, "_settings"), - WARMERS((byte) 3, "_warmers", "_warmer"); + SETTINGS((byte) 2, "_settings"); private static final Feature[] FEATURES = new Feature[Feature.values().length]; @@ -97,7 +96,7 @@ public class GetIndexRequest extends ClusterInfoRequest { } } - private static final Feature[] DEFAULT_FEATURES = new Feature[] { Feature.ALIASES, Feature.MAPPINGS, Feature.SETTINGS, Feature.WARMERS }; + private static final Feature[] DEFAULT_FEATURES = new Feature[] { Feature.ALIASES, Feature.MAPPINGS, Feature.SETTINGS }; private Feature[] features = DEFAULT_FEATURES; private boolean humanReadable = false; diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/get/GetIndexResponse.java b/core/src/main/java/org/elasticsearch/action/admin/indices/get/GetIndexResponse.java index 1f06a25acc3..3a29237faeb 100644 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/get/GetIndexResponse.java +++ b/core/src/main/java/org/elasticsearch/action/admin/indices/get/GetIndexResponse.java @@ -27,7 +27,6 @@ import org.elasticsearch.common.collect.ImmutableOpenMap; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; import java.io.IOException; import java.util.ArrayList; @@ -39,19 +38,15 @@ import java.util.List; */ public class GetIndexResponse extends ActionResponse { - private ImmutableOpenMap> warmers = ImmutableOpenMap.of(); private ImmutableOpenMap> mappings = ImmutableOpenMap.of(); private ImmutableOpenMap> aliases = ImmutableOpenMap.of(); private ImmutableOpenMap settings = ImmutableOpenMap.of(); private String[] indices; - GetIndexResponse(String[] indices, ImmutableOpenMap> warmers, + GetIndexResponse(String[] indices, ImmutableOpenMap> mappings, ImmutableOpenMap> aliases, ImmutableOpenMap settings) { this.indices = indices; - if (warmers != null) { - this.warmers = warmers; - } if (mappings != null) { this.mappings = mappings; } @@ -74,14 +69,6 @@ public class GetIndexResponse extends ActionResponse { return indices(); } - public ImmutableOpenMap> warmers() { - return warmers; - } - - public ImmutableOpenMap> getWarmers() { - return warmers(); - } - public ImmutableOpenMap> mappings() { return mappings; } @@ -110,23 +97,6 @@ public class GetIndexResponse extends ActionResponse { public void readFrom(StreamInput in) throws IOException { super.readFrom(in); this.indices = in.readStringArray(); - int warmersSize = in.readVInt(); - ImmutableOpenMap.Builder> warmersMapBuilder = ImmutableOpenMap.builder(); - for (int i = 0; i < warmersSize; i++) { - String key = in.readString(); - int valueSize = in.readVInt(); - List warmerEntryBuilder = new ArrayList<>(); - for (int j = 0; j < valueSize; j++) { - warmerEntryBuilder.add(new IndexWarmersMetaData.Entry( - in.readString(), - in.readStringArray(), - in.readOptionalBoolean(), - in.readBoolean() ? new IndexWarmersMetaData.SearchSource(in) : null) - ); - } - warmersMapBuilder.put(key, Collections.unmodifiableList(warmerEntryBuilder)); - } - warmers = warmersMapBuilder.build(); int mappingsSize = in.readVInt(); ImmutableOpenMap.Builder> mappingsMapBuilder = ImmutableOpenMap.builder(); for (int i = 0; i < mappingsSize; i++) { @@ -164,21 +134,6 @@ public class GetIndexResponse extends ActionResponse { public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeStringArray(indices); - out.writeVInt(warmers.size()); - for (ObjectObjectCursor> indexEntry : warmers) { - out.writeString(indexEntry.key); - out.writeVInt(indexEntry.value.size()); - for (IndexWarmersMetaData.Entry warmerEntry : indexEntry.value) { - out.writeString(warmerEntry.name()); - out.writeStringArray(warmerEntry.types()); - out.writeOptionalBoolean(warmerEntry.requestCache()); - boolean hasSource = warmerEntry.source() != null; - out.writeBoolean(hasSource); - if (hasSource) { - warmerEntry.source().writeTo(out); - } - } - } out.writeVInt(mappings.size()); for (ObjectObjectCursor> indexEntry : mappings) { out.writeString(indexEntry.key); diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/get/TransportGetIndexAction.java b/core/src/main/java/org/elasticsearch/action/admin/indices/get/TransportGetIndexAction.java index 4edbd5216cd..1b9180ce192 100644 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/get/TransportGetIndexAction.java +++ b/core/src/main/java/org/elasticsearch/action/admin/indices/get/TransportGetIndexAction.java @@ -36,7 +36,6 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.collect.ImmutableOpenMap; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.search.warmer.IndexWarmersMetaData.Entry; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.TransportService; @@ -72,7 +71,6 @@ public class TransportGetIndexAction extends TransportClusterInfoAction listener) { - ImmutableOpenMap> warmersResult = ImmutableOpenMap.of(); ImmutableOpenMap> mappingsResult = ImmutableOpenMap.of(); ImmutableOpenMap> aliasesResult = ImmutableOpenMap.of(); ImmutableOpenMap settings = ImmutableOpenMap.of(); @@ -80,15 +78,8 @@ public class TransportGetIndexAction extends TransportClusterInfoAction { - - public static final DeleteWarmerAction INSTANCE = new DeleteWarmerAction(); - public static final String NAME = "indices:admin/warmers/delete"; - - private DeleteWarmerAction() { - super(NAME); - } - - @Override - public DeleteWarmerResponse newResponse() { - return new DeleteWarmerResponse(); - } - - @Override - public DeleteWarmerRequestBuilder newRequestBuilder(ElasticsearchClient client) { - return new DeleteWarmerRequestBuilder(client, this); - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/DeleteWarmerRequest.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/DeleteWarmerRequest.java deleted file mode 100644 index 39312e5a3d7..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/DeleteWarmerRequest.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.action.admin.indices.warmer.delete; - -import org.elasticsearch.action.ActionRequestValidationException; -import org.elasticsearch.action.IndicesRequest; -import org.elasticsearch.action.support.IndicesOptions; -import org.elasticsearch.action.support.master.AcknowledgedRequest; -import org.elasticsearch.common.Nullable; -import org.elasticsearch.common.Strings; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; -import org.elasticsearch.common.util.CollectionUtils; - -import java.io.IOException; - -import static org.elasticsearch.action.ValidateActions.addValidationError; - -/** - * A request that deletes a index warmer (name, {@link org.elasticsearch.action.search.SearchRequest}) - * tuple from the clusters metadata. - */ -public class DeleteWarmerRequest extends AcknowledgedRequest implements IndicesRequest.Replaceable { - - private String[] names = Strings.EMPTY_ARRAY; - private IndicesOptions indicesOptions = IndicesOptions.fromOptions(false, false, true, false); - private String[] indices = Strings.EMPTY_ARRAY; - - public DeleteWarmerRequest() { - } - - /** - * Constructs a new delete warmer request for the specified name. - * - * @param names the name (or wildcard expression) of the warmer to match, null to delete all. - */ - public DeleteWarmerRequest(String... names) { - names(names); - } - - @Override - public ActionRequestValidationException validate() { - ActionRequestValidationException validationException = null; - if (CollectionUtils.isEmpty(names)) { - validationException = addValidationError("warmer names are missing", validationException); - } else { - validationException = checkForEmptyString(validationException, names); - } - if (CollectionUtils.isEmpty(indices)) { - validationException = addValidationError("indices are missing", validationException); - } else { - validationException = checkForEmptyString(validationException, indices); - } - return validationException; - } - - private ActionRequestValidationException checkForEmptyString(ActionRequestValidationException validationException, String[] strings) { - boolean containsEmptyString = false; - for (String string : strings) { - if (!Strings.hasText(string)) { - containsEmptyString = true; - } - } - if (containsEmptyString) { - validationException = addValidationError("types must not contain empty strings", validationException); - } - return validationException; - } - - /** - * The name to delete. - */ - @Nullable - public String[] names() { - return names; - } - - /** - * The name (or wildcard expression) of the index warmer to delete, or null - * to delete all warmers. - */ - public DeleteWarmerRequest names(@Nullable String... names) { - this.names = names; - return this; - } - - /** - * Sets the indices this put mapping operation will execute on. - */ - @Override - public DeleteWarmerRequest indices(String... indices) { - this.indices = indices; - return this; - } - - /** - * The indices the mappings will be put. - */ - @Override - public String[] indices() { - return indices; - } - - @Override - public IndicesOptions indicesOptions() { - return indicesOptions; - } - - public DeleteWarmerRequest indicesOptions(IndicesOptions indicesOptions) { - this.indicesOptions = indicesOptions; - return this; - } - - @Override - public void readFrom(StreamInput in) throws IOException { - super.readFrom(in); - names = in.readStringArray(); - indices = in.readStringArray(); - indicesOptions = IndicesOptions.readIndicesOptions(in); - readTimeout(in); - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - super.writeTo(out); - out.writeStringArrayNullable(names); - out.writeStringArrayNullable(indices); - indicesOptions.writeIndicesOptions(out); - writeTimeout(out); - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/DeleteWarmerRequestBuilder.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/DeleteWarmerRequestBuilder.java deleted file mode 100644 index fdba95b590f..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/DeleteWarmerRequestBuilder.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.action.admin.indices.warmer.delete; - -import org.elasticsearch.action.support.IndicesOptions; -import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder; -import org.elasticsearch.client.ElasticsearchClient; - -/** - * A builder for the {@link DeleteWarmerRequest} - * - * @see DeleteWarmerRequest for details - */ -public class DeleteWarmerRequestBuilder extends AcknowledgedRequestBuilder { - - public DeleteWarmerRequestBuilder(ElasticsearchClient client, DeleteWarmerAction action) { - super(client, action, new DeleteWarmerRequest()); - } - - public DeleteWarmerRequestBuilder setIndices(String... indices) { - request.indices(indices); - return this; - } - - /** - * The name (or wildcard expression) of the index warmer to delete, or null - * to delete all warmers. - */ - public DeleteWarmerRequestBuilder setNames(String... names) { - request.names(names); - return this; - } - - /** - * Specifies what type of requested indices to ignore and wildcard indices expressions. - *

- * For example indices that don't exist. - */ - public DeleteWarmerRequestBuilder setIndicesOptions(IndicesOptions options) { - request.indicesOptions(options); - return this; - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/DeleteWarmerResponse.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/DeleteWarmerResponse.java deleted file mode 100644 index 6e5235f78b2..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/DeleteWarmerResponse.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.action.admin.indices.warmer.delete; - -import org.elasticsearch.action.support.master.AcknowledgedResponse; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; - -import java.io.IOException; - -/** - * An acknowledged response of delete warmer operation. - */ -public class DeleteWarmerResponse extends AcknowledgedResponse { - - DeleteWarmerResponse() { - super(); - } - - DeleteWarmerResponse(boolean acknowledged) { - super(acknowledged); - } - - @Override - public void readFrom(StreamInput in) throws IOException { - super.readFrom(in); - readAcknowledged(in); - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - super.writeTo(out); - writeAcknowledged(out); - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/TransportDeleteWarmerAction.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/TransportDeleteWarmerAction.java deleted file mode 100644 index 293729af462..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/delete/TransportDeleteWarmerAction.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.action.admin.indices.warmer.delete; - -import org.elasticsearch.action.ActionListener; -import org.elasticsearch.action.support.ActionFilters; -import org.elasticsearch.action.support.master.TransportMasterNodeAction; -import org.elasticsearch.cluster.AckedClusterStateUpdateTask; -import org.elasticsearch.cluster.ClusterService; -import org.elasticsearch.cluster.ClusterState; -import org.elasticsearch.cluster.block.ClusterBlockException; -import org.elasticsearch.cluster.block.ClusterBlockLevel; -import org.elasticsearch.cluster.metadata.IndexMetaData; -import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; -import org.elasticsearch.cluster.metadata.MetaData; -import org.elasticsearch.common.inject.Inject; -import org.elasticsearch.common.regex.Regex; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.index.IndexNotFoundException; -import org.elasticsearch.search.warmer.IndexWarmerMissingException; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; -import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.transport.TransportService; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Internal Actions executed on the master deleting the warmer from the cluster state metadata. - * - * Note: this is an internal API and should not be used / called by any client code. - */ -public class TransportDeleteWarmerAction extends TransportMasterNodeAction { - - @Inject - public TransportDeleteWarmerAction(Settings settings, TransportService transportService, ClusterService clusterService, - ThreadPool threadPool, ActionFilters actionFilters, IndexNameExpressionResolver indexNameExpressionResolver) { - super(settings, DeleteWarmerAction.NAME, transportService, clusterService, threadPool, actionFilters, indexNameExpressionResolver, DeleteWarmerRequest::new); - } - - @Override - protected String executor() { - // we go async right away - return ThreadPool.Names.SAME; - } - - @Override - protected DeleteWarmerResponse newResponse() { - return new DeleteWarmerResponse(); - } - - @Override - protected ClusterBlockException checkBlock(DeleteWarmerRequest request, ClusterState state) { - return state.blocks().indicesBlockedException(ClusterBlockLevel.METADATA_WRITE, indexNameExpressionResolver.concreteIndices(state, request)); - } - - @Override - protected void masterOperation(final DeleteWarmerRequest request, final ClusterState state, final ActionListener listener) { - final String[] concreteIndices = indexNameExpressionResolver.concreteIndices(state, request); - clusterService.submitStateUpdateTask("delete_warmer [" + Arrays.toString(request.names()) + "]", new AckedClusterStateUpdateTask(request, listener) { - - @Override - protected DeleteWarmerResponse newResponse(boolean acknowledged) { - return new DeleteWarmerResponse(acknowledged); - } - - @Override - public void onFailure(String source, Throwable t) { - logger.debug("failed to delete warmer [{}] on indices [{}]", t, Arrays.toString(request.names()), concreteIndices); - super.onFailure(source, t); - } - - @Override - public ClusterState execute(ClusterState currentState) { - MetaData.Builder mdBuilder = MetaData.builder(currentState.metaData()); - - boolean globalFoundAtLeastOne = false; - boolean deleteAll = false; - for (int i=0; i entries = new ArrayList<>(); - for (IndexWarmersMetaData.Entry entry : warmers.entries()) { - boolean keepWarmer = true; - for (String warmer : request.names()) { - if (Regex.simpleMatch(warmer, entry.name()) || warmer.equals(MetaData.ALL)) { - globalFoundAtLeastOne = true; - keepWarmer = false; - // don't add it... - break; - } - } - if (keepWarmer) { - entries.add(entry); - } - } - // a change, update it... - if (entries.size() != warmers.entries().size()) { - warmers = new IndexWarmersMetaData(entries.toArray(new IndexWarmersMetaData.Entry[entries.size()])); - IndexMetaData.Builder indexBuilder = IndexMetaData.builder(indexMetaData).putCustom(IndexWarmersMetaData.TYPE, warmers); - mdBuilder.put(indexBuilder); - } - } - } - - if (globalFoundAtLeastOne == false && deleteAll == false) { - throw new IndexWarmerMissingException(request.names()); - } - - if (logger.isInfoEnabled()) { - for (String index : concreteIndices) { - IndexMetaData indexMetaData = currentState.metaData().index(index); - if (indexMetaData == null) { - throw new IndexNotFoundException(index); - } - IndexWarmersMetaData warmers = indexMetaData.custom(IndexWarmersMetaData.TYPE); - if (warmers != null) { - for (IndexWarmersMetaData.Entry entry : warmers.entries()) { - for (String warmer : request.names()) { - if (Regex.simpleMatch(warmer, entry.name()) || warmer.equals(MetaData.ALL)) { - logger.info("[{}] delete warmer [{}]", index, entry.name()); - } - } - } - } else if(deleteAll){ - logger.debug("no warmers to delete on index [{}]", index); - } - } - } - - return ClusterState.builder(currentState).metaData(mdBuilder).build(); - } - }); - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersAction.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersAction.java deleted file mode 100644 index e2debde72a6..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersAction.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.action.admin.indices.warmer.get; - -import org.elasticsearch.action.Action; -import org.elasticsearch.client.ElasticsearchClient; - -/** - * Action for the admin/warmers/get API. - */ -public class GetWarmersAction extends Action { - - public static final GetWarmersAction INSTANCE = new GetWarmersAction(); - public static final String NAME = "indices:admin/warmers/get"; - - private GetWarmersAction() { - super(NAME); - } - - @Override - public GetWarmersRequestBuilder newRequestBuilder(ElasticsearchClient client) { - return new GetWarmersRequestBuilder(client, this); - } - - @Override - public GetWarmersResponse newResponse() { - return new GetWarmersResponse(); - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersRequest.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersRequest.java deleted file mode 100644 index bebf0d40b6e..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersRequest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.action.admin.indices.warmer.get; - -import org.elasticsearch.action.ActionRequestValidationException; -import org.elasticsearch.action.support.master.info.ClusterInfoRequest; -import org.elasticsearch.common.Strings; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; - -import java.io.IOException; - -/** - * A {@link ClusterInfoRequest} that fetches {@link org.elasticsearch.search.warmer.IndexWarmersMetaData} for - * a list or all existing index warmers in the cluster-state - */ -public class GetWarmersRequest extends ClusterInfoRequest { - - private String[] warmers = Strings.EMPTY_ARRAY; - - public GetWarmersRequest warmers(String[] warmers) { - this.warmers = warmers; - return this; - } - - public String[] warmers() { - return warmers; - } - - @Override - public ActionRequestValidationException validate() { - return null; - } - - @Override - public void readFrom(StreamInput in) throws IOException { - super.readFrom(in); - warmers = in.readStringArray(); - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - super.writeTo(out); - out.writeStringArray(warmers); - } - -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersRequestBuilder.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersRequestBuilder.java deleted file mode 100644 index de67d38603a..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersRequestBuilder.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.action.admin.indices.warmer.get; - -import org.elasticsearch.action.support.master.info.ClusterInfoRequestBuilder; -import org.elasticsearch.client.ElasticsearchClient; -import org.elasticsearch.common.util.ArrayUtils; - -/** - * Builder for {@link GetWarmersRequest} - * - * @see GetWarmersRequest for details - */ -public class GetWarmersRequestBuilder extends ClusterInfoRequestBuilder { - - public GetWarmersRequestBuilder(ElasticsearchClient client, GetWarmersAction action, String... indices) { - super(client, action, new GetWarmersRequest().indices(indices)); - } - - public GetWarmersRequestBuilder setWarmers(String... warmers) { - request.warmers(warmers); - return this; - } - - public GetWarmersRequestBuilder addWarmers(String... warmers) { - request.warmers(ArrayUtils.concat(request.warmers(), warmers)); - return this; - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersResponse.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersResponse.java deleted file mode 100644 index 0559e522925..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/GetWarmersResponse.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.action.admin.indices.warmer.get; - -import com.carrotsearch.hppc.cursors.ObjectObjectCursor; -import org.elasticsearch.action.ActionResponse; -import org.elasticsearch.common.collect.ImmutableOpenMap; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * Holds a warmer-name to a list of {@link IndexWarmersMetaData} mapping for each warmer specified - * in the {@link GetWarmersRequest}. This information is fetched from the current master since the metadata - * is contained inside the cluster-state - */ -public class GetWarmersResponse extends ActionResponse { - - private ImmutableOpenMap> warmers = ImmutableOpenMap.of(); - - GetWarmersResponse(ImmutableOpenMap> warmers) { - this.warmers = warmers; - } - - GetWarmersResponse() { - } - - public ImmutableOpenMap> warmers() { - return warmers; - } - - public ImmutableOpenMap> getWarmers() { - return warmers(); - } - - @Override - public void readFrom(StreamInput in) throws IOException { - super.readFrom(in); - int size = in.readVInt(); - ImmutableOpenMap.Builder> indexMapBuilder = ImmutableOpenMap.builder(); - for (int i = 0; i < size; i++) { - String key = in.readString(); - int valueSize = in.readVInt(); - List warmerEntryBuilder = new ArrayList<>(); - for (int j = 0; j < valueSize; j++) { - String name = in.readString(); - String[] types = in.readStringArray(); - IndexWarmersMetaData.SearchSource source = null; - if (in.readBoolean()) { - source = new IndexWarmersMetaData.SearchSource(in); - } - Boolean queryCache = null; - queryCache = in.readOptionalBoolean(); - warmerEntryBuilder.add(new IndexWarmersMetaData.Entry( - name, - types, - queryCache, - source) - ); - } - indexMapBuilder.put(key, Collections.unmodifiableList(warmerEntryBuilder)); - } - warmers = indexMapBuilder.build(); - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - super.writeTo(out); - out.writeVInt(warmers.size()); - for (ObjectObjectCursor> indexEntry : warmers) { - out.writeString(indexEntry.key); - out.writeVInt(indexEntry.value.size()); - for (IndexWarmersMetaData.Entry warmerEntry : indexEntry.value) { - out.writeString(warmerEntry.name()); - out.writeStringArray(warmerEntry.types()); - boolean hasWarmerSource = warmerEntry != null; - out.writeBoolean(hasWarmerSource); - if (hasWarmerSource) { - warmerEntry.source().writeTo(out); - } - out.writeOptionalBoolean(warmerEntry.requestCache()); - } - } - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/TransportGetWarmersAction.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/TransportGetWarmersAction.java deleted file mode 100644 index a86a6260ca3..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/get/TransportGetWarmersAction.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.action.admin.indices.warmer.get; - -import org.elasticsearch.action.ActionListener; -import org.elasticsearch.action.support.ActionFilters; -import org.elasticsearch.action.support.master.info.TransportClusterInfoAction; -import org.elasticsearch.cluster.ClusterService; -import org.elasticsearch.cluster.ClusterState; -import org.elasticsearch.cluster.block.ClusterBlockException; -import org.elasticsearch.cluster.block.ClusterBlockLevel; -import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; -import org.elasticsearch.common.collect.ImmutableOpenMap; -import org.elasticsearch.common.inject.Inject; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; -import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.transport.TransportService; - -import java.util.List; - -/** - * Internal Actions executed on the master fetching the warmer from the cluster state metadata. - * - * Note: this is an internal API and should not be used / called by any client code. - */ -public class TransportGetWarmersAction extends TransportClusterInfoAction { - - @Inject - public TransportGetWarmersAction(Settings settings, TransportService transportService, ClusterService clusterService, - ThreadPool threadPool, ActionFilters actionFilters, IndexNameExpressionResolver indexNameExpressionResolver) { - super(settings, GetWarmersAction.NAME, transportService, clusterService, threadPool, actionFilters, indexNameExpressionResolver, GetWarmersRequest::new); - } - - @Override - protected String executor() { - // very lightweight operation, no need to fork - return ThreadPool.Names.SAME; - } - - @Override - protected ClusterBlockException checkBlock(GetWarmersRequest request, ClusterState state) { - return state.blocks().indicesBlockedException(ClusterBlockLevel.METADATA_READ, indexNameExpressionResolver.concreteIndices(state, request)); - } - - @Override - protected GetWarmersResponse newResponse() { - return new GetWarmersResponse(); - } - - @Override - protected void doMasterOperation(final GetWarmersRequest request, String[] concreteIndices, final ClusterState state, final ActionListener listener) { - ImmutableOpenMap> result = state.metaData().findWarmers( - concreteIndices, request.types(), request.warmers() - ); - listener.onResponse(new GetWarmersResponse(result)); - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/package-info.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/package-info.java deleted file mode 100644 index 053cc75caa3..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/package-info.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/** - * Index / Search Warmer Administrative Actions - *

- * Index warming allows to run registered search requests to warm up the index before it is available for search. - * With the near real time aspect of search, cold data (segments) will be warmed up before they become available for - * search. This includes things such as the query cache, filesystem cache, and loading field data for fields. - *

- * - * See the reference guide for more detailed information about the Indices / Search Warmer - */ -package org.elasticsearch.action.admin.indices.warmer; diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerAction.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerAction.java deleted file mode 100644 index 3c5c8b7c412..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerAction.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.action.admin.indices.warmer.put; - -import org.elasticsearch.action.Action; -import org.elasticsearch.client.ElasticsearchClient; - -/** - * Action for the admin/warmers/put API. - */ -public class PutWarmerAction extends Action { - - public static final PutWarmerAction INSTANCE = new PutWarmerAction(); - public static final String NAME = "indices:admin/warmers/put"; - - private PutWarmerAction() { - super(NAME); - } - - @Override - public PutWarmerResponse newResponse() { - return new PutWarmerResponse(); - } - - @Override - public PutWarmerRequestBuilder newRequestBuilder(ElasticsearchClient client) { - return new PutWarmerRequestBuilder(client, this); - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerRequest.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerRequest.java deleted file mode 100644 index 77f8f426876..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerRequest.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.action.admin.indices.warmer.put; - -import org.elasticsearch.action.ActionRequestValidationException; -import org.elasticsearch.action.IndicesRequest; -import org.elasticsearch.action.search.SearchRequest; -import org.elasticsearch.action.search.SearchRequestBuilder; -import org.elasticsearch.action.support.IndicesOptions; -import org.elasticsearch.action.support.master.AcknowledgedRequest; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; - -import java.io.IOException; - -import static org.elasticsearch.action.ValidateActions.addValidationError; - -/** - * A request that associates a {@link SearchRequest} with a name in the cluster that is - * in-turn used to warm up indices before they are available for search. - * - * Note: neither the search request nor the name must be null - */ -public class PutWarmerRequest extends AcknowledgedRequest implements IndicesRequest.Replaceable { - - private String name; - - private SearchRequest searchRequest; - - public PutWarmerRequest() { - } - - /** - * Constructs a new warmer. - * - * @param name The name of the warmer. - */ - public PutWarmerRequest(String name) { - this.name = name; - } - - /** - * Sets the name of the warmer. - */ - public PutWarmerRequest name(String name) { - this.name = name; - return this; - } - - public String name() { - return this.name; - } - - /** - * Sets the search request to warm. - */ - public PutWarmerRequest searchRequest(SearchRequest searchRequest) { - this.searchRequest = searchRequest; - return this; - } - - /** - * Sets the search request to warm. - */ - public PutWarmerRequest searchRequest(SearchRequestBuilder searchRequest) { - this.searchRequest = searchRequest.request(); - return this; - } - - public SearchRequest searchRequest() { - return this.searchRequest; - } - - @Override - public ActionRequestValidationException validate() { - ActionRequestValidationException validationException = null; - if (searchRequest == null) { - validationException = addValidationError("search request is missing", validationException); - } else { - validationException = searchRequest.validate(); - } - if (name == null) { - validationException = addValidationError("name is missing", validationException); - } - return validationException; - } - - @Override - public String[] indices() { - if (searchRequest == null) { - throw new IllegalStateException("unable to retrieve indices, search request is null"); - } - return searchRequest.indices(); - } - - @Override - public IndicesRequest indices(String... indices) { - if (searchRequest == null) { - throw new IllegalStateException("unable to set indices, search request is null"); - } - searchRequest.indices(indices); - return this; - } - - @Override - public IndicesOptions indicesOptions() { - if (searchRequest == null) { - throw new IllegalStateException("unable to retrieve indices options, search request is null"); - } - return searchRequest.indicesOptions(); - } - - @Override - public void readFrom(StreamInput in) throws IOException { - super.readFrom(in); - name = in.readString(); - if (in.readBoolean()) { - searchRequest = new SearchRequest(); - searchRequest.readFrom(in); - } - readTimeout(in); - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - super.writeTo(out); - out.writeString(name); - if (searchRequest == null) { - out.writeBoolean(false); - } else { - out.writeBoolean(true); - searchRequest.writeTo(out); - } - writeTimeout(out); - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerRequestBuilder.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerRequestBuilder.java deleted file mode 100644 index 39b7a370584..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerRequestBuilder.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.action.admin.indices.warmer.put; - -import org.elasticsearch.action.search.SearchRequest; -import org.elasticsearch.action.search.SearchRequestBuilder; -import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder; -import org.elasticsearch.client.ElasticsearchClient; - -/** - * Builder for {@link PutWarmerRequest} - * - * @see PutWarmerRequest for details - */ -public class PutWarmerRequestBuilder extends AcknowledgedRequestBuilder { - - /** - * Creates a new {@link PutWarmerRequestBuilder} with a given name. - */ - public PutWarmerRequestBuilder(ElasticsearchClient client, PutWarmerAction action, String name) { - super(client, action, new PutWarmerRequest().name(name)); - } - - /** - * Creates a new {@link PutWarmerRequestBuilder} - * Note: {@link #setName(String)} must be called with a non-null value before this request is executed. - */ - public PutWarmerRequestBuilder(ElasticsearchClient client, PutWarmerAction action) { - super(client, action, new PutWarmerRequest()); - } - - /** - * Sets the name of the warmer. - */ - public PutWarmerRequestBuilder setName(String name) { - request.name(name); - return this; - } - - /** - * Sets the search request to use to warm the index when applicable. - */ - public PutWarmerRequestBuilder setSearchRequest(SearchRequest searchRequest) { - request.searchRequest(searchRequest); - return this; - } - - /** - * Sets the search request to use to warm the index when applicable. - */ - public PutWarmerRequestBuilder setSearchRequest(SearchRequestBuilder searchRequest) { - request.searchRequest(searchRequest); - return this; - } -} diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerResponse.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerResponse.java deleted file mode 100644 index 008b239920c..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerResponse.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.action.admin.indices.warmer.put; - -import org.elasticsearch.action.support.master.AcknowledgedResponse; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; - -import java.io.IOException; - -/** - * An acknowledged response of put warmer operation. - */ -public class PutWarmerResponse extends AcknowledgedResponse { - - PutWarmerResponse() { - super(); - } - - PutWarmerResponse(boolean acknowledged) { - super(acknowledged); - } - - @Override - public void readFrom(StreamInput in) throws IOException { - super.readFrom(in); - readAcknowledged(in); - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - super.writeTo(out); - writeAcknowledged(out); - } -} \ No newline at end of file diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/TransportPutWarmerAction.java b/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/TransportPutWarmerAction.java deleted file mode 100644 index 8dd671b4da0..00000000000 --- a/core/src/main/java/org/elasticsearch/action/admin/indices/warmer/put/TransportPutWarmerAction.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.action.admin.indices.warmer.put; - -import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.action.ActionListener; -import org.elasticsearch.action.search.SearchRequest; -import org.elasticsearch.action.search.SearchResponse; -import org.elasticsearch.action.search.TransportSearchAction; -import org.elasticsearch.action.support.ActionFilters; -import org.elasticsearch.action.support.master.TransportMasterNodeAction; -import org.elasticsearch.cluster.AckedClusterStateUpdateTask; -import org.elasticsearch.cluster.ClusterService; -import org.elasticsearch.cluster.ClusterState; -import org.elasticsearch.cluster.block.ClusterBlockException; -import org.elasticsearch.cluster.block.ClusterBlockLevel; -import org.elasticsearch.cluster.metadata.IndexMetaData; -import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; -import org.elasticsearch.cluster.metadata.MetaData; -import org.elasticsearch.common.inject.Inject; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.index.IndexNotFoundException; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; -import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.transport.TransportService; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Internal Actions executed on the master associating a warmer with a name in the cluster state metadata. - * - * Note: this is an internal API and should not be used / called by any client code. - */ -public class TransportPutWarmerAction extends TransportMasterNodeAction { - - private final TransportSearchAction searchAction; - - @Inject - public TransportPutWarmerAction(Settings settings, TransportService transportService, ClusterService clusterService, ThreadPool threadPool, - TransportSearchAction searchAction, ActionFilters actionFilters, IndexNameExpressionResolver indexNameExpressionResolver) { - super(settings, PutWarmerAction.NAME, transportService, clusterService, threadPool, actionFilters, indexNameExpressionResolver, PutWarmerRequest::new); - this.searchAction = searchAction; - } - - @Override - protected String executor() { - return ThreadPool.Names.SAME; - } - - @Override - protected PutWarmerResponse newResponse() { - return new PutWarmerResponse(); - } - - @Override - protected ClusterBlockException checkBlock(PutWarmerRequest request, ClusterState state) { - String[] concreteIndices = indexNameExpressionResolver.concreteIndices(state, request); - ClusterBlockException status = state.blocks().indicesBlockedException(ClusterBlockLevel.METADATA_WRITE, concreteIndices); - if (status != null) { - return status; - } - // PutWarmer executes a SearchQuery before adding the new warmer to the cluster state, - // so we need to check the same block as TransportSearchTypeAction here - return state.blocks().indicesBlockedException(ClusterBlockLevel.READ, concreteIndices); - } - - @Override - protected void masterOperation(final PutWarmerRequest request, final ClusterState state, final ActionListener listener) { - // first execute the search request, see that its ok... - SearchRequest searchRequest = new SearchRequest(request.searchRequest(), request); - searchAction.execute(searchRequest, new ActionListener() { - @Override - public void onResponse(SearchResponse searchResponse) { - if (searchResponse.getFailedShards() > 0) { - listener.onFailure(new ElasticsearchException("search failed with failed shards: " + Arrays.toString(searchResponse.getShardFailures()))); - return; - } - - clusterService.submitStateUpdateTask("put_warmer [" + request.name() + "]", new AckedClusterStateUpdateTask(request, listener) { - - @Override - protected PutWarmerResponse newResponse(boolean acknowledged) { - return new PutWarmerResponse(acknowledged); - } - - @Override - public void onFailure(String source, Throwable t) { - logger.debug("failed to put warmer [{}] on indices [{}]", t, request.name(), request.searchRequest().indices()); - super.onFailure(source, t); - } - - @Override - public ClusterState execute(ClusterState currentState) { - MetaData metaData = currentState.metaData(); - String[] concreteIndices = indexNameExpressionResolver.concreteIndices(currentState, request.searchRequest().indicesOptions(), request.searchRequest().indices()); - - IndexWarmersMetaData.SearchSource source = null; - if (request.searchRequest().source() != null) { - source = new IndexWarmersMetaData.SearchSource(request.searchRequest().source()); - } - - // now replace it on the metadata - MetaData.Builder mdBuilder = MetaData.builder(currentState.metaData()); - - for (String index : concreteIndices) { - IndexMetaData indexMetaData = metaData.index(index); - if (indexMetaData == null) { - throw new IndexNotFoundException(index); - } - IndexWarmersMetaData warmers = indexMetaData.custom(IndexWarmersMetaData.TYPE); - if (warmers == null) { - logger.info("[{}] putting warmer [{}]", index, request.name()); - warmers = new IndexWarmersMetaData(new IndexWarmersMetaData.Entry(request.name(), request.searchRequest().types(), request.searchRequest().requestCache(), source)); - } else { - boolean found = false; - List entries = new ArrayList<>(warmers.entries().size() + 1); - for (IndexWarmersMetaData.Entry entry : warmers.entries()) { - if (entry.name().equals(request.name())) { - found = true; - entries.add(new IndexWarmersMetaData.Entry(request.name(), request.searchRequest().types(), request.searchRequest().requestCache(), source)); - } else { - entries.add(entry); - } - } - if (!found) { - logger.info("[{}] put warmer [{}]", index, request.name()); - entries.add(new IndexWarmersMetaData.Entry(request.name(), request.searchRequest().types(), request.searchRequest().requestCache(), source)); - } else { - logger.info("[{}] update warmer [{}]", index, request.name()); - } - warmers = new IndexWarmersMetaData(entries.toArray(new IndexWarmersMetaData.Entry[entries.size()])); - } - IndexMetaData.Builder indexBuilder = IndexMetaData.builder(indexMetaData).putCustom(IndexWarmersMetaData.TYPE, warmers); - mdBuilder.put(indexBuilder); - } - - return ClusterState.builder(currentState).metaData(mdBuilder).build(); - } - }); - } - - @Override - public void onFailure(Throwable e) { - listener.onFailure(e); - } - }); - } -} diff --git a/core/src/main/java/org/elasticsearch/client/IndicesAdminClient.java b/core/src/main/java/org/elasticsearch/client/IndicesAdminClient.java index 67205fc0a9a..a475ce15d4e 100644 --- a/core/src/main/java/org/elasticsearch/client/IndicesAdminClient.java +++ b/core/src/main/java/org/elasticsearch/client/IndicesAdminClient.java @@ -113,15 +113,6 @@ import org.elasticsearch.action.admin.indices.upgrade.post.UpgradeResponse; import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest; import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequestBuilder; import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse; -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerRequest; -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerRequestBuilder; -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerResponse; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersRequest; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersRequestBuilder; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersResponse; -import org.elasticsearch.action.admin.indices.warmer.put.PutWarmerRequest; -import org.elasticsearch.action.admin.indices.warmer.put.PutWarmerRequestBuilder; -import org.elasticsearch.action.admin.indices.warmer.put.PutWarmerResponse; import org.elasticsearch.common.Nullable; /** @@ -771,51 +762,6 @@ public interface IndicesAdminClient extends ElasticsearchClient { */ ValidateQueryRequestBuilder prepareValidateQuery(String... indices); - /** - * Puts an index search warmer to be applies when applicable. - */ - ActionFuture putWarmer(PutWarmerRequest request); - - /** - * Puts an index search warmer to be applies when applicable. - */ - void putWarmer(PutWarmerRequest request, ActionListener listener); - - /** - * Puts an index search warmer to be applies when applicable. - */ - PutWarmerRequestBuilder preparePutWarmer(String name); - - /** - * Deletes an index warmer. - */ - ActionFuture deleteWarmer(DeleteWarmerRequest request); - - /** - * Deletes an index warmer. - */ - void deleteWarmer(DeleteWarmerRequest request, ActionListener listener); - - /** - * Deletes an index warmer. - */ - DeleteWarmerRequestBuilder prepareDeleteWarmer(); - - /** - * Returns a map of index warmers for the given get request. - */ - void getWarmers(GetWarmersRequest request, ActionListener listener); - - /** - * Returns a map of index warmers for the given get request. - */ - ActionFuture getWarmers(GetWarmersRequest request); - - /** - * Returns a new builder to fetch index warmer metadata for the given indices. - */ - GetWarmersRequestBuilder prepareGetWarmers(String... indices); - /** * Executed a per index settings get request and returns the settings for the indices specified. * Note: this is a per index request and will not include settings that are set on the cluster diff --git a/core/src/main/java/org/elasticsearch/client/support/AbstractClient.java b/core/src/main/java/org/elasticsearch/client/support/AbstractClient.java index e085c8da075..e5a465442bb 100644 --- a/core/src/main/java/org/elasticsearch/client/support/AbstractClient.java +++ b/core/src/main/java/org/elasticsearch/client/support/AbstractClient.java @@ -232,18 +232,6 @@ import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryAction import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest; import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequestBuilder; import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse; -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerAction; -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerRequest; -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerRequestBuilder; -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerResponse; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersAction; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersRequest; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersRequestBuilder; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersResponse; -import org.elasticsearch.action.admin.indices.warmer.put.PutWarmerAction; -import org.elasticsearch.action.admin.indices.warmer.put.PutWarmerRequest; -import org.elasticsearch.action.admin.indices.warmer.put.PutWarmerRequestBuilder; -import org.elasticsearch.action.admin.indices.warmer.put.PutWarmerResponse; import org.elasticsearch.action.bulk.BulkAction; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkRequestBuilder; @@ -1669,51 +1657,6 @@ public abstract class AbstractClient extends AbstractComponent implements Client return new ValidateQueryRequestBuilder(this, ValidateQueryAction.INSTANCE).setIndices(indices); } - @Override - public ActionFuture putWarmer(PutWarmerRequest request) { - return execute(PutWarmerAction.INSTANCE, request); - } - - @Override - public void putWarmer(PutWarmerRequest request, ActionListener listener) { - execute(PutWarmerAction.INSTANCE, request, listener); - } - - @Override - public PutWarmerRequestBuilder preparePutWarmer(String name) { - return new PutWarmerRequestBuilder(this, PutWarmerAction.INSTANCE, name); - } - - @Override - public ActionFuture deleteWarmer(DeleteWarmerRequest request) { - return execute(DeleteWarmerAction.INSTANCE, request); - } - - @Override - public void deleteWarmer(DeleteWarmerRequest request, ActionListener listener) { - execute(DeleteWarmerAction.INSTANCE, request, listener); - } - - @Override - public DeleteWarmerRequestBuilder prepareDeleteWarmer() { - return new DeleteWarmerRequestBuilder(this, DeleteWarmerAction.INSTANCE); - } - - @Override - public GetWarmersRequestBuilder prepareGetWarmers(String... indices) { - return new GetWarmersRequestBuilder(this, GetWarmersAction.INSTANCE, indices); - } - - @Override - public ActionFuture getWarmers(GetWarmersRequest request) { - return execute(GetWarmersAction.INSTANCE, request); - } - - @Override - public void getWarmers(GetWarmersRequest request, ActionListener listener) { - execute(GetWarmersAction.INSTANCE, request, listener); - } - @Override public GetSettingsRequestBuilder prepareGetSettings(String... indices) { return new GetSettingsRequestBuilder(this, GetSettingsAction.INSTANCE, indices); diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java b/core/src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java index af98d9c2fde..d7b70b8ca8f 100644 --- a/core/src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java +++ b/core/src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java @@ -46,7 +46,6 @@ import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.rest.RestStatus; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; @@ -92,11 +91,6 @@ public class IndexMetaData implements Diffable, FromXContentBuild public static Map customPrototypes = new HashMap<>(); - static { - // register non plugin custom metadata - registerPrototype(IndexWarmersMetaData.TYPE, IndexWarmersMetaData.PROTO); - } - /** * Register a custom index meta data factory. Make sure to call it from a static block. */ @@ -904,6 +898,12 @@ public class IndexMetaData implements Diffable, FromXContentBuild builder.putActiveAllocationIds(Integer.valueOf(shardId), allocationIds); } } + } else if ("warmers".equals(currentFieldName)) { + // TODO: do this in 4.0: + // throw new IllegalArgumentException("Warmers are not supported anymore - are you upgrading from 1.x?"); + // ignore: warmers have been removed in 3.0 and are + // simply ignored when upgrading from 2.x + assert Version.CURRENT.major <= 3; } else { // check if its a custom index metadata Custom proto = lookupPrototype(currentFieldName); diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaData.java b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaData.java index d904a3ca3ea..d96e1f17a0b 100644 --- a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaData.java +++ b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaData.java @@ -55,12 +55,10 @@ import org.elasticsearch.index.store.IndexStoreConfig; import org.elasticsearch.indices.recovery.RecoverySettings; import org.elasticsearch.indices.ttl.IndicesTTLService; import org.elasticsearch.rest.RestStatus; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.EnumSet; @@ -71,7 +69,6 @@ import java.util.Map; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; -import java.util.stream.Collectors; import static java.util.Collections.unmodifiableSet; import static org.elasticsearch.common.settings.Settings.readSettingsFromStream; @@ -365,49 +362,6 @@ public class MetaData implements Iterable, Diffable, Fr return indexMapBuilder.build(); } - public ImmutableOpenMap> findWarmers(String[] concreteIndices, final String[] types, final String[] uncheckedWarmers) { - assert uncheckedWarmers != null; - assert concreteIndices != null; - if (concreteIndices.length == 0) { - return ImmutableOpenMap.of(); - } - // special _all check to behave the same like not specifying anything for the warmers (not for the indices) - final String[] warmers = Strings.isAllOrWildcard(uncheckedWarmers) ? Strings.EMPTY_ARRAY : uncheckedWarmers; - - ImmutableOpenMap.Builder> mapBuilder = ImmutableOpenMap.builder(); - Iterable intersection = HppcMaps.intersection(ObjectHashSet.from(concreteIndices), indices.keys()); - for (String index : intersection) { - IndexMetaData indexMetaData = indices.get(index); - IndexWarmersMetaData indexWarmersMetaData = indexMetaData.custom(IndexWarmersMetaData.TYPE); - if (indexWarmersMetaData == null || indexWarmersMetaData.entries().isEmpty()) { - continue; - } - - // TODO: make this a List so we don't have to copy below - Collection filteredWarmers = - indexWarmersMetaData - .entries() - .stream() - .filter(warmer -> { - if (warmers.length != 0 && types.length != 0) { - return Regex.simpleMatch(warmers, warmer.name()) && Regex.simpleMatch(types, warmer.types()); - } else if (warmers.length != 0) { - return Regex.simpleMatch(warmers, warmer.name()); - } else if (types.length != 0) { - return Regex.simpleMatch(types, warmer.types()); - } else { - return true; - } - }) - .collect(Collectors.toCollection(ArrayList::new)); - - if (!filteredWarmers.isEmpty()) { - mapBuilder.put(index, Collections.unmodifiableList(new ArrayList<>(filteredWarmers))); - } - } - return mapBuilder.build(); - } - /** * Returns all the concrete indices. */ diff --git a/core/src/main/java/org/elasticsearch/common/network/NetworkModule.java b/core/src/main/java/org/elasticsearch/common/network/NetworkModule.java index 12e22a7693b..b3abed6e230 100644 --- a/core/src/main/java/org/elasticsearch/common/network/NetworkModule.java +++ b/core/src/main/java/org/elasticsearch/common/network/NetworkModule.java @@ -88,9 +88,6 @@ import org.elasticsearch.rest.action.admin.indices.template.put.RestPutIndexTemp import org.elasticsearch.rest.action.admin.indices.upgrade.RestUpgradeAction; import org.elasticsearch.rest.action.admin.indices.validate.query.RestValidateQueryAction; import org.elasticsearch.rest.action.admin.indices.validate.template.RestRenderSearchTemplateAction; -import org.elasticsearch.rest.action.admin.indices.warmer.delete.RestDeleteWarmerAction; -import org.elasticsearch.rest.action.admin.indices.warmer.get.RestGetWarmerAction; -import org.elasticsearch.rest.action.admin.indices.warmer.put.RestPutWarmerAction; import org.elasticsearch.rest.action.bulk.RestBulkAction; import org.elasticsearch.rest.action.cat.AbstractCatAction; import org.elasticsearch.rest.action.cat.RestAliasAction; @@ -205,10 +202,6 @@ public class NetworkModule extends AbstractModule { RestDeleteIndexTemplateAction.class, RestHeadIndexTemplateAction.class, - RestPutWarmerAction.class, - RestDeleteWarmerAction.class, - RestGetWarmerAction.class, - RestPutMappingAction.class, RestGetMappingAction.class, RestGetFieldMappingAction.class, diff --git a/core/src/main/java/org/elasticsearch/rest/action/admin/indices/get/RestGetIndicesAction.java b/core/src/main/java/org/elasticsearch/rest/action/admin/indices/get/RestGetIndicesAction.java index 86336ccf971..b7371f7b80e 100644 --- a/core/src/main/java/org/elasticsearch/rest/action/admin/indices/get/RestGetIndicesAction.java +++ b/core/src/main/java/org/elasticsearch/rest/action/admin/indices/get/RestGetIndicesAction.java @@ -40,7 +40,6 @@ import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; import org.elasticsearch.rest.action.support.RestBuilderListener; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; import java.io.IOException; import java.util.List; @@ -100,9 +99,6 @@ public class RestGetIndicesAction extends BaseRestHandler { case SETTINGS: writeSettings(response.settings().get(index), builder, request); break; - case WARMERS: - writeWarmers(response.warmers().get(index), builder, request); - break; default: throw new IllegalStateException("feature [" + feature + "] is not valid"); } @@ -142,15 +138,6 @@ public class RestGetIndicesAction extends BaseRestHandler { builder.endObject(); } - private void writeWarmers(List warmers, XContentBuilder builder, Params params) throws IOException { - builder.startObject(Fields.WARMERS); - if (warmers != null) { - for (IndexWarmersMetaData.Entry warmer : warmers) { - IndexWarmersMetaData.toXContent(warmer, builder, params); - } - } - builder.endObject(); - } }); } diff --git a/core/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/delete/RestDeleteWarmerAction.java b/core/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/delete/RestDeleteWarmerAction.java deleted file mode 100644 index 4fe07564031..00000000000 --- a/core/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/delete/RestDeleteWarmerAction.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.rest.action.admin.indices.warmer.delete; - -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerRequest; -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerResponse; -import org.elasticsearch.action.support.IndicesOptions; -import org.elasticsearch.client.Client; -import org.elasticsearch.common.Strings; -import org.elasticsearch.common.inject.Inject; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.rest.BaseRestHandler; -import org.elasticsearch.rest.RestChannel; -import org.elasticsearch.rest.RestController; -import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.support.AcknowledgedRestListener; - -import static org.elasticsearch.rest.RestRequest.Method.DELETE; - -/** - */ -public class RestDeleteWarmerAction extends BaseRestHandler { - - @Inject - public RestDeleteWarmerAction(Settings settings, RestController controller, Client client) { - super(settings, controller, client); - controller.registerHandler(DELETE, "/{index}/_warmer", this); - controller.registerHandler(DELETE, "/{index}/_warmer/{name}", this); - controller.registerHandler(DELETE, "/{index}/_warmers", this); - controller.registerHandler(DELETE, "/{index}/_warmers/{name}", this); - } - - @Override - public void handleRequest(final RestRequest request, final RestChannel channel, final Client client) { - DeleteWarmerRequest deleteWarmerRequest = new DeleteWarmerRequest(Strings.splitStringByCommaToArray(request.param("name"))) - .indices(Strings.splitStringByCommaToArray(request.param("index"))); - deleteWarmerRequest.timeout(request.paramAsTime("timeout", deleteWarmerRequest.timeout())); - deleteWarmerRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteWarmerRequest.masterNodeTimeout())); - deleteWarmerRequest.indicesOptions(IndicesOptions.fromRequest(request, deleteWarmerRequest.indicesOptions())); - client.admin().indices().deleteWarmer(deleteWarmerRequest, new AcknowledgedRestListener(channel)); - } -} diff --git a/core/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/get/RestGetWarmerAction.java b/core/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/get/RestGetWarmerAction.java deleted file mode 100644 index 26f1186f550..00000000000 --- a/core/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/get/RestGetWarmerAction.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.rest.action.admin.indices.warmer.get; - -import com.carrotsearch.hppc.cursors.ObjectObjectCursor; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersRequest; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersResponse; -import org.elasticsearch.action.support.IndicesOptions; -import org.elasticsearch.client.Client; -import org.elasticsearch.common.Strings; -import org.elasticsearch.common.inject.Inject; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.rest.BaseRestHandler; -import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; -import org.elasticsearch.rest.RestController; -import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.RestResponse; -import org.elasticsearch.rest.action.support.RestBuilderListener; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; - -import java.util.List; - -import static org.elasticsearch.rest.RestRequest.Method.GET; -import static org.elasticsearch.rest.RestStatus.OK; - -/** - * - */ -public class RestGetWarmerAction extends BaseRestHandler { - - @Inject - public RestGetWarmerAction(Settings settings, RestController controller, Client client) { - super(settings, controller, client); - controller.registerHandler(GET, "/_warmer/{name}", this); - controller.registerHandler(GET, "/{index}/_warmer/{name}", this); - controller.registerHandler(GET, "/{index}/_warmers/{name}", this); - controller.registerHandler(GET, "/{index}/{type}/_warmer/{name}", this); - } - - @Override - public void handleRequest(final RestRequest request, final RestChannel channel, final Client client) { - final String[] indices = Strings.splitStringByCommaToArray(request.param("index")); - final String[] types = Strings.splitStringByCommaToArray(request.param("type")); - final String[] names = request.paramAsStringArray("name", Strings.EMPTY_ARRAY); - - GetWarmersRequest getWarmersRequest = new GetWarmersRequest(); - getWarmersRequest.indices(indices).types(types).warmers(names); - getWarmersRequest.local(request.paramAsBoolean("local", getWarmersRequest.local())); - getWarmersRequest.indicesOptions(IndicesOptions.fromRequest(request, getWarmersRequest.indicesOptions())); - client.admin().indices().getWarmers(getWarmersRequest, new RestBuilderListener(channel) { - - @Override - public RestResponse buildResponse(GetWarmersResponse response, XContentBuilder builder) throws Exception { - if (indices.length > 0 && response.warmers().isEmpty()) { - return new BytesRestResponse(OK, builder.startObject().endObject()); - } - - builder.startObject(); - for (ObjectObjectCursor> entry : response.warmers()) { - builder.startObject(entry.key, XContentBuilder.FieldCaseConversion.NONE); - builder.startObject(IndexWarmersMetaData.TYPE, XContentBuilder.FieldCaseConversion.NONE); - for (IndexWarmersMetaData.Entry warmerEntry : entry.value) { - IndexWarmersMetaData.toXContent(warmerEntry, builder, request); - } - builder.endObject(); - builder.endObject(); - } - builder.endObject(); - - return new BytesRestResponse(OK, builder); - } - }); - } -} diff --git a/core/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/put/RestPutWarmerAction.java b/core/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/put/RestPutWarmerAction.java deleted file mode 100644 index b47c2542abf..00000000000 --- a/core/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/put/RestPutWarmerAction.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.rest.action.admin.indices.warmer.put; - -import org.elasticsearch.action.admin.indices.warmer.put.PutWarmerRequest; -import org.elasticsearch.action.search.SearchRequest; -import org.elasticsearch.action.support.IndicesOptions; -import org.elasticsearch.client.Client; -import org.elasticsearch.common.Strings; -import org.elasticsearch.common.bytes.BytesReference; -import org.elasticsearch.common.inject.Inject; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.indices.query.IndicesQueriesRegistry; -import org.elasticsearch.rest.BaseRestHandler; -import org.elasticsearch.rest.RestChannel; -import org.elasticsearch.rest.RestController; -import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.support.AcknowledgedRestListener; -import org.elasticsearch.rest.action.support.RestActions; -import org.elasticsearch.search.builder.SearchSourceBuilder; - -import java.io.IOException; - -import static org.elasticsearch.rest.RestRequest.Method.POST; -import static org.elasticsearch.rest.RestRequest.Method.PUT; - -/** - */ -public class RestPutWarmerAction extends BaseRestHandler { - - private final IndicesQueriesRegistry queryRegistry; - - @Inject - public RestPutWarmerAction(Settings settings, RestController controller, Client client, IndicesQueriesRegistry queryRegistry) { - super(settings, controller, client); - this.queryRegistry = queryRegistry; - controller.registerHandler(PUT, "/_warmer/{name}", this); - controller.registerHandler(PUT, "/{index}/_warmer/{name}", this); - controller.registerHandler(PUT, "/{index}/{type}/_warmer/{name}", this); - - controller.registerHandler(PUT, "/_warmers/{name}", this); - controller.registerHandler(PUT, "/{index}/_warmers/{name}", this); - controller.registerHandler(PUT, "/{index}/{type}/_warmers/{name}", this); - - controller.registerHandler(POST, "/_warmer/{name}", this); - controller.registerHandler(POST, "/{index}/_warmer/{name}", this); - controller.registerHandler(POST, "/{index}/{type}/_warmer/{name}", this); - - controller.registerHandler(POST, "/_warmers/{name}", this); - controller.registerHandler(POST, "/{index}/_warmers/{name}", this); - controller.registerHandler(POST, "/{index}/{type}/_warmers/{name}", this); - } - - @Override - public void handleRequest(final RestRequest request, final RestChannel channel, final Client client) throws IOException { - PutWarmerRequest putWarmerRequest = new PutWarmerRequest(request.param("name")); - - BytesReference sourceBytes = RestActions.getRestContent(request); - SearchSourceBuilder source = RestActions.getRestSearchSource(sourceBytes, queryRegistry, parseFieldMatcher); - SearchRequest searchRequest = new SearchRequest(Strings.splitStringByCommaToArray(request.param("index"))) - .types(Strings.splitStringByCommaToArray(request.param("type"))) - .requestCache(request.paramAsBoolean("request_cache", null)).source(source); - searchRequest.indicesOptions(IndicesOptions.fromRequest(request, searchRequest.indicesOptions())); - putWarmerRequest.searchRequest(searchRequest); - putWarmerRequest.timeout(request.paramAsTime("timeout", putWarmerRequest.timeout())); - putWarmerRequest.masterNodeTimeout(request.paramAsTime("master_timeout", putWarmerRequest.masterNodeTimeout())); - client.admin().indices().putWarmer(putWarmerRequest, new AcknowledgedRestListener<>(channel)); - } -} diff --git a/core/src/main/java/org/elasticsearch/search/SearchService.java b/core/src/main/java/org/elasticsearch/search/SearchService.java index 02efa373ab0..473282a5777 100644 --- a/core/src/main/java/org/elasticsearch/search/SearchService.java +++ b/core/src/main/java/org/elasticsearch/search/SearchService.java @@ -28,7 +28,6 @@ import org.apache.lucene.index.LeafReaderContext; import org.apache.lucene.index.NumericDocValues; import org.apache.lucene.search.TopDocs; import org.elasticsearch.ExceptionsHelper; -import org.elasticsearch.action.search.SearchType; import org.elasticsearch.cache.recycler.PageCacheRecycler; import org.elasticsearch.cluster.ClusterService; import org.elasticsearch.cluster.metadata.IndexMetaData; @@ -94,7 +93,6 @@ import org.elasticsearch.search.internal.InternalScrollSearchRequest; import org.elasticsearch.search.internal.ScrollContext; import org.elasticsearch.search.internal.SearchContext; import org.elasticsearch.search.internal.SearchContext.Lifetime; -import org.elasticsearch.search.internal.ShardSearchLocalRequest; import org.elasticsearch.search.internal.ShardSearchRequest; import org.elasticsearch.search.profile.Profilers; import org.elasticsearch.search.query.QueryPhase; @@ -102,7 +100,6 @@ import org.elasticsearch.search.query.QuerySearchRequest; import org.elasticsearch.search.query.QuerySearchResult; import org.elasticsearch.search.query.QuerySearchResultProvider; import org.elasticsearch.search.query.ScrollQuerySearchResult; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; import org.elasticsearch.threadpool.ThreadPool; import java.io.IOException; @@ -201,7 +198,6 @@ public class SearchService extends AbstractLifecycleComponent imp this.indicesWarmer.addListener(new NormsWarmer(indicesWarmer)); this.indicesWarmer.addListener(new FieldDataWarmer(indicesWarmer)); - this.indicesWarmer.addListener(new SearchWarmer()); defaultSearchTimeout = DEFAULT_SEARCH_TIMEOUT_SETTING.get(settings); clusterSettings.addSettingsUpdateConsumer(DEFAULT_SEARCH_TIMEOUT_SETTING, this::setDefaultSearchTimeout); @@ -1163,76 +1159,6 @@ public class SearchService extends AbstractLifecycleComponent imp } } - class SearchWarmer implements IndicesWarmer.Listener { - - @Override - public TerminationHandle warmNewReaders(IndexShard indexShard, final Engine.Searcher searcher) { - return internalWarm(indexShard, searcher, false); - } - - @Override - public TerminationHandle warmTopReader(IndexShard indexShard, final Engine.Searcher searcher) { - return internalWarm(indexShard, searcher, true); - } - - public TerminationHandle internalWarm(final IndexShard indexShard, final Engine.Searcher searcher, final boolean top) { - IndexWarmersMetaData custom = indexShard.getIndexSettings().getIndexMetaData().custom(IndexWarmersMetaData.TYPE); - if (custom == null) { - return TerminationHandle.NO_WAIT; - } - final Executor executor = indicesWarmer.getExecutor(); - final CountDownLatch latch = new CountDownLatch(custom.entries().size()); - for (final IndexWarmersMetaData.Entry entry : custom.entries()) { - executor.execute(() -> { - SearchContext context = null; - try { - long now = System.nanoTime(); - final IndexService indexService = indicesService.indexServiceSafe(indexShard.shardId().index().name()); - QueryParseContext queryParseContext = new QueryParseContext(indicesService.getIndicesQueryRegistry()); - queryParseContext.parseFieldMatcher(indexService.getIndexSettings().getParseFieldMatcher()); - ShardSearchRequest request = new ShardSearchLocalRequest(indexShard.shardId(), indexShard.getIndexSettings() - .getNumberOfShards(), - SearchType.QUERY_THEN_FETCH, entry.source().build(queryParseContext), entry.types(), entry.requestCache()); - context = createContext(request, searcher); - // if we use sort, we need to do query to sort on - // it and load relevant field data - // if not, we might as well set size=0 (and cache - // if needed) - if (context.sort() == null) { - context.size(0); - } - boolean canCache = indicesQueryCache.canCache(request, context); - // early terminate when we can cache, since we - // can only do proper caching on top level searcher - // also, if we can't cache, and its top, we don't - // need to execute it, since we already did when its - // not top - if (canCache != top) { - return; - } - loadOrExecuteQueryPhase(request, context, queryPhase); - long took = System.nanoTime() - now; - if (indexShard.warmerService().logger().isTraceEnabled()) { - indexShard.warmerService().logger().trace("warmed [{}], took [{}]", entry.name(), TimeValue.timeValueNanos(took)); - } - } catch (Throwable t) { - indexShard.warmerService().logger().warn("warmer [{}] failed", t, entry.name()); - } finally { - try { - if (context != null) { - freeContext(context.id()); - cleanContext(context); - } - } finally { - latch.countDown(); - } - } - }); - } - return () -> latch.await(); - } - } - class Reaper implements Runnable { @Override public void run() { diff --git a/core/src/main/java/org/elasticsearch/search/warmer/IndexWarmerMissingException.java b/core/src/main/java/org/elasticsearch/search/warmer/IndexWarmerMissingException.java deleted file mode 100644 index 1253a24544d..00000000000 --- a/core/src/main/java/org/elasticsearch/search/warmer/IndexWarmerMissingException.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.search.warmer; - -import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; -import org.elasticsearch.rest.RestStatus; - -import java.io.IOException; -import java.util.Arrays; - -/** - * - */ -public class IndexWarmerMissingException extends ElasticsearchException { - - private final String[] names; - - public IndexWarmerMissingException(String... names) { - super("index_warmer " + Arrays.toString(names) + " missing"); - this.names = names; - } - - public String[] names() { - return this.names; - } - - - public IndexWarmerMissingException(StreamInput in) throws IOException{ - super(in); - names = in.readStringArray(); - } - - @Override - public RestStatus status() { - return RestStatus.NOT_FOUND; - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - super.writeTo(out); - out.writeStringArray(names); - } -} diff --git a/core/src/main/java/org/elasticsearch/search/warmer/IndexWarmersMetaData.java b/core/src/main/java/org/elasticsearch/search/warmer/IndexWarmersMetaData.java deleted file mode 100644 index 1ce27f97cff..00000000000 --- a/core/src/main/java/org/elasticsearch/search/warmer/IndexWarmersMetaData.java +++ /dev/null @@ -1,354 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.search.warmer; - -import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.action.support.ToXContentToBytes; -import org.elasticsearch.cluster.AbstractDiffable; -import org.elasticsearch.cluster.metadata.IndexMetaData; -import org.elasticsearch.common.Nullable; -import org.elasticsearch.common.Strings; -import org.elasticsearch.common.bytes.BytesArray; -import org.elasticsearch.common.bytes.BytesReference; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; -import org.elasticsearch.common.io.stream.Writeable; -import org.elasticsearch.common.xcontent.ToXContent; -import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.common.xcontent.XContentFactory; -import org.elasticsearch.common.xcontent.XContentGenerator; -import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.common.xcontent.XContentType; -import org.elasticsearch.index.query.QueryParseContext; -import org.elasticsearch.search.builder.SearchSourceBuilder; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -/** - */ -public class IndexWarmersMetaData extends AbstractDiffable implements IndexMetaData.Custom { - - public static final String TYPE = "warmers"; - - public static final IndexWarmersMetaData PROTO = new IndexWarmersMetaData(); - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - IndexWarmersMetaData that = (IndexWarmersMetaData) o; - - return entries.equals(that.entries); - - } - - @Override - public int hashCode() { - return entries.hashCode(); - } - - public static class Entry { - private final String name; - private final String[] types; - private final SearchSource source; - private final Boolean requestCache; - - public Entry(String name, String[] types, Boolean requestCache, SearchSource source) { - this.name = name; - this.types = types == null ? Strings.EMPTY_ARRAY : types; - this.source = source; - this.requestCache = requestCache; - } - - public String name() { - return this.name; - } - - public String[] types() { - return this.types; - } - - @Nullable - public SearchSource source() { - return this.source; - } - - @Nullable - public Boolean requestCache() { - return this.requestCache; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Entry entry = (Entry) o; - - if (!name.equals(entry.name)) return false; - if (!Arrays.equals(types, entry.types)) return false; - if (!source.equals(entry.source)) return false; - return Objects.equals(requestCache, entry.requestCache); - - } - - @Override - public int hashCode() { - int result = name.hashCode(); - result = 31 * result + Arrays.hashCode(types); - result = 31 * result + source.hashCode(); - result = 31 * result + (requestCache != null ? requestCache.hashCode() : 0); - return result; - } - } - - private final List entries; - - - public IndexWarmersMetaData(Entry... entries) { - this.entries = Arrays.asList(entries); - } - - public List entries() { - return this.entries; - } - - @Override - public String type() { - return TYPE; - } - - @Override - public IndexWarmersMetaData readFrom(StreamInput in) throws IOException { - Entry[] entries = new Entry[in.readVInt()]; - for (int i = 0; i < entries.length; i++) { - String name = in.readString(); - String[] types = in.readStringArray(); - SearchSource source = null; - if (in.readBoolean()) { - source = new SearchSource(in); - } - Boolean queryCache; - queryCache = in.readOptionalBoolean(); - entries[i] = new Entry(name, types, queryCache, source); - } - return new IndexWarmersMetaData(entries); - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - out.writeVInt(entries().size()); - for (Entry entry : entries()) { - out.writeString(entry.name()); - out.writeStringArray(entry.types()); - if (entry.source() == null) { - out.writeBoolean(false); - } else { - out.writeBoolean(true); - entry.source.writeTo(out); - } - out.writeOptionalBoolean(entry.requestCache()); - } - } - - @Override - public IndexWarmersMetaData fromMap(Map map) throws IOException { - // if it starts with the type, remove it - if (map.size() == 1 && map.containsKey(TYPE)) { - map = (Map) map.values().iterator().next(); - } - XContentBuilder builder = XContentFactory.smileBuilder().map(map); - try (XContentParser parser = XContentFactory.xContent(XContentType.SMILE).createParser(builder.bytes())) { - // move to START_OBJECT - parser.nextToken(); - return fromXContent(parser); - } - } - - @Override - public IndexWarmersMetaData fromXContent(XContentParser parser) throws IOException { - // we get here after we are at warmers token - String currentFieldName = null; - XContentParser.Token token; - List entries = new ArrayList<>(); - while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { - if (token == XContentParser.Token.FIELD_NAME) { - currentFieldName = parser.currentName(); - } else if (token == XContentParser.Token.START_OBJECT) { - String name = currentFieldName; - List types = new ArrayList<>(2); - SearchSource source = null; - Boolean queryCache = null; - while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { - if (token == XContentParser.Token.FIELD_NAME) { - currentFieldName = parser.currentName(); - } else if (token == XContentParser.Token.START_ARRAY) { - if ("types".equals(currentFieldName)) { - while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) { - types.add(parser.text()); - } - } - } else if (token == XContentParser.Token.START_OBJECT) { - if ("source".equals(currentFieldName)) { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - try (XContentGenerator generator = XContentType.JSON.xContent().createGenerator(out)) { - generator.copyCurrentStructure(parser); - } - source = new SearchSource(new BytesArray(out.toByteArray())); - } - } else if (token == XContentParser.Token.VALUE_EMBEDDED_OBJECT) { - if ("source".equals(currentFieldName)) { - source = new SearchSource(new BytesArray(parser.binaryValue())); - } - } else if (token.isValue()) { - if ("requestCache".equals(currentFieldName) || "request_cache".equals(currentFieldName)) { - queryCache = parser.booleanValue(); - } - } - } - entries.add(new Entry(name, types.size() == 0 ? Strings.EMPTY_ARRAY : types.toArray(new String[types.size()]), queryCache, source)); - } - } - return new IndexWarmersMetaData(entries.toArray(new Entry[entries.size()])); - } - - @Override - public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params params) throws IOException { - //No need, IndexMetaData already writes it - //builder.startObject(TYPE, XContentBuilder.FieldCaseConversion.NONE); - for (Entry entry : entries()) { - toXContent(entry, builder, params); - } - //No need, IndexMetaData already writes it - //builder.endObject(); - return builder; - } - - public static void toXContent(Entry entry, XContentBuilder builder, ToXContent.Params params) throws IOException { - builder.startObject(entry.name(), XContentBuilder.FieldCaseConversion.NONE); - builder.field("types", entry.types()); - if (entry.requestCache() != null) { - builder.field("requestCache", entry.requestCache()); - } - builder.field("source", entry.source()); - builder.endObject(); - } - - @Override - public IndexMetaData.Custom mergeWith(IndexMetaData.Custom other) { - IndexWarmersMetaData second = (IndexWarmersMetaData) other; - List entries = new ArrayList<>(); - entries.addAll(entries()); - for (Entry secondEntry : second.entries()) { - boolean found = false; - for (Entry firstEntry : entries()) { - if (firstEntry.name().equals(secondEntry.name())) { - found = true; - break; - } - } - if (!found) { - entries.add(secondEntry); - } - } - return new IndexWarmersMetaData(entries.toArray(new Entry[entries.size()])); - } - - public static class SearchSource extends ToXContentToBytes implements Writeable { - private final BytesReference binary; - private SearchSourceBuilder cached; - - public SearchSource(BytesReference bytesArray) { - if (bytesArray == null) { - throw new IllegalArgumentException("bytesArray must not be null"); - } - this.binary = bytesArray; - } - - public SearchSource(StreamInput input) throws IOException { - this(input.readBytesReference()); - } - - public SearchSource(SearchSourceBuilder source) { - try (XContentBuilder builder = XContentBuilder.builder(XContentType.JSON.xContent())) { - source.toXContent(builder, ToXContent.EMPTY_PARAMS); - binary = builder.bytes(); - } catch (IOException ex) { - throw new ElasticsearchException("failed to generate XContent", ex); - } - } - - public SearchSourceBuilder build(QueryParseContext ctx) throws IOException { - if (cached == null) { - try (XContentParser parser = XContentFactory.xContent(binary).createParser(binary)) { - ctx.reset(parser); - cached = SearchSourceBuilder.parseSearchSource(parser, ctx); - } - } - return cached; - } - - - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - if (binary == null) { - cached.toXContent(builder, params); - } else { - try (XContentParser parser = XContentFactory.xContent(binary).createParser(binary)) { - builder.copyCurrentStructure(parser); - } - } - return builder; - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - out.writeBytesReference(binary); - } - - @Override - public SearchSource readFrom(StreamInput in) throws IOException { - return new SearchSource(in); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - SearchSource that = (SearchSource) o; - - return binary.equals(that.binary); - - } - - @Override - public int hashCode() { - return binary.hashCode(); - } - } -} diff --git a/core/src/test/java/org/elasticsearch/ExceptionSerializationTests.java b/core/src/test/java/org/elasticsearch/ExceptionSerializationTests.java index 975de9e8f0e..db7b5df6662 100644 --- a/core/src/test/java/org/elasticsearch/ExceptionSerializationTests.java +++ b/core/src/test/java/org/elasticsearch/ExceptionSerializationTests.java @@ -71,7 +71,6 @@ import org.elasticsearch.search.SearchException; import org.elasticsearch.search.SearchParseException; import org.elasticsearch.search.SearchShardTarget; import org.elasticsearch.search.internal.SearchContext; -import org.elasticsearch.search.warmer.IndexWarmerMissingException; import org.elasticsearch.snapshots.SnapshotException; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.TestSearchContext; @@ -494,12 +493,6 @@ public class ExceptionSerializationTests extends ESTestCase { assertEquals("[_na] msg", ex.getMessage()); } - public void testIndexWarmerMissingException() throws IOException { - IndexWarmerMissingException ex = serialize(new IndexWarmerMissingException("w1", "w2")); - assertEquals("index_warmer [w1, w2] missing", ex.getMessage()); - assertArrayEquals(new String[]{"w1", "w2"}, ex.names()); - } - public void testIndexTemplateMissingException() throws IOException { IndexTemplateMissingException ex = serialize(new IndexTemplateMissingException("name")); assertEquals("index_template [name] missing", ex.getMessage()); @@ -735,7 +728,6 @@ public class ExceptionSerializationTests extends ESTestCase { ids.put(90, org.elasticsearch.index.engine.RefreshFailedEngineException.class); ids.put(91, org.elasticsearch.search.aggregations.AggregationInitializationException.class); ids.put(92, org.elasticsearch.indices.recovery.DelayRecoveryException.class); - ids.put(93, org.elasticsearch.search.warmer.IndexWarmerMissingException.class); ids.put(94, org.elasticsearch.client.transport.NoNodeAvailableException.class); ids.put(95, null); ids.put(96, org.elasticsearch.snapshots.InvalidSnapshotNameException.class); diff --git a/core/src/test/java/org/elasticsearch/action/admin/indices/get/GetIndexIT.java b/core/src/test/java/org/elasticsearch/action/admin/indices/get/GetIndexIT.java index e878a3df45c..74416742d12 100644 --- a/core/src/test/java/org/elasticsearch/action/admin/indices/get/GetIndexIT.java +++ b/core/src/test/java/org/elasticsearch/action/admin/indices/get/GetIndexIT.java @@ -26,7 +26,6 @@ import org.elasticsearch.cluster.metadata.MappingMetaData; import org.elasticsearch.common.collect.ImmutableOpenMap; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexNotFoundException; -import org.elasticsearch.search.warmer.IndexWarmersMetaData.Entry; import org.elasticsearch.test.ESIntegTestCase; import java.util.ArrayList; @@ -52,7 +51,6 @@ public class GetIndexIT extends ESIntegTestCase { assertAcked(prepareCreate("idx").addAlias(new Alias("alias_idx")).addMapping("type1", "{\"type1\":{}}") .setSettings(Settings.builder().put("number_of_shards", 1)).get()); ensureSearchable("idx"); - assertAcked(client().admin().indices().preparePutWarmer("warmer1").setSearchRequest(client().prepareSearch("idx")).get()); createIndex("empty_idx"); ensureSearchable("idx", "empty_idx"); } @@ -66,7 +64,6 @@ public class GetIndexIT extends ESIntegTestCase { assertAliases(response, "idx"); assertMappings(response, "idx"); assertSettings(response, "idx"); - assertWarmers(response, "idx"); } public void testSimpleUnknownIndex() { @@ -87,7 +84,6 @@ public class GetIndexIT extends ESIntegTestCase { assertEmptyAliases(response); assertEmptyOrOnlyDefaultMappings(response, "empty_idx"); assertNonEmptySettings(response, "empty_idx"); - assertEmptyWarmers(response); } public void testSimpleMapping() { @@ -100,7 +96,6 @@ public class GetIndexIT extends ESIntegTestCase { assertMappings(response, "idx"); assertEmptyAliases(response); assertEmptySettings(response); - assertEmptyWarmers(response); } public void testSimpleAlias() { @@ -113,7 +108,6 @@ public class GetIndexIT extends ESIntegTestCase { assertAliases(response, "idx"); assertEmptyMappings(response); assertEmptySettings(response); - assertEmptyWarmers(response); } public void testSimpleSettings() { @@ -126,20 +120,6 @@ public class GetIndexIT extends ESIntegTestCase { assertSettings(response, "idx"); assertEmptyAliases(response); assertEmptyMappings(response); - assertEmptyWarmers(response); - } - - public void testSimpleWarmer() { - GetIndexResponse response = runWithRandomFeatureMethod(client().admin().indices().prepareGetIndex().addIndices("idx"), - Feature.WARMERS); - String[] indices = response.indices(); - assertThat(indices, notNullValue()); - assertThat(indices.length, equalTo(1)); - assertThat(indices[0], equalTo("idx")); - assertWarmers(response, "idx"); - assertEmptyAliases(response); - assertEmptyMappings(response); - assertEmptySettings(response); } public void testSimpleMixedFeatures() { @@ -169,11 +149,6 @@ public class GetIndexIT extends ESIntegTestCase { } else { assertEmptySettings(response); } - if (features.contains(Feature.WARMERS)) { - assertWarmers(response, "idx"); - } else { - assertEmptyWarmers(response); - } } public void testEmptyMixedFeatures() { @@ -199,7 +174,6 @@ public class GetIndexIT extends ESIntegTestCase { } else { assertEmptySettings(response); } - assertEmptyWarmers(response); } public void testGetIndexWithBlocks() { @@ -235,18 +209,6 @@ public class GetIndexIT extends ESIntegTestCase { } } - private void assertWarmers(GetIndexResponse response, String indexName) { - ImmutableOpenMap> warmers = response.warmers(); - assertThat(warmers, notNullValue()); - assertThat(warmers.size(), equalTo(1)); - List indexWarmers = warmers.get(indexName); - assertThat(indexWarmers, notNullValue()); - assertThat(indexWarmers.size(), equalTo(1)); - Entry warmer = indexWarmers.get(0); - assertThat(warmer, notNullValue()); - assertThat(warmer.name(), equalTo("warmer1")); - } - private void assertSettings(GetIndexResponse response, String indexName) { ImmutableOpenMap settings = response.settings(); assertThat(settings, notNullValue()); @@ -305,11 +267,6 @@ public class GetIndexIT extends ESIntegTestCase { assertThat(alias.alias(), equalTo("alias_idx")); } - private void assertEmptyWarmers(GetIndexResponse response) { - assertThat(response.warmers(), notNullValue()); - assertThat(response.warmers().isEmpty(), equalTo(true)); - } - private void assertEmptySettings(GetIndexResponse response) { assertThat(response.settings(), notNullValue()); assertThat(response.settings().isEmpty(), equalTo(true)); diff --git a/core/src/test/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerRequestTests.java b/core/src/test/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerRequestTests.java deleted file mode 100644 index f20564e1712..00000000000 --- a/core/src/test/java/org/elasticsearch/action/admin/indices/warmer/put/PutWarmerRequestTests.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.action.admin.indices.warmer.put; - -import org.elasticsearch.action.ActionRequestValidationException; -import org.elasticsearch.test.ESTestCase; - -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.Matchers.hasSize; - -public class PutWarmerRequestTests extends ESTestCase { - // issue 4196 - public void testThatValidationWithoutSpecifyingSearchRequestFails() { - PutWarmerRequest putWarmerRequest = new PutWarmerRequest("foo"); - ActionRequestValidationException validationException = putWarmerRequest.validate(); - assertThat(validationException.validationErrors(), hasSize(1)); - assertThat(validationException.getMessage(), containsString("search request is missing")); - } -} diff --git a/core/src/test/java/org/elasticsearch/bwcompat/GetIndexBackwardsCompatibilityIT.java b/core/src/test/java/org/elasticsearch/bwcompat/GetIndexBackwardsCompatibilityIT.java index 9a87c888747..9abe6bfbf44 100644 --- a/core/src/test/java/org/elasticsearch/bwcompat/GetIndexBackwardsCompatibilityIT.java +++ b/core/src/test/java/org/elasticsearch/bwcompat/GetIndexBackwardsCompatibilityIT.java @@ -28,7 +28,6 @@ import org.elasticsearch.cluster.metadata.AliasMetaData; import org.elasticsearch.cluster.metadata.MappingMetaData; import org.elasticsearch.common.collect.ImmutableOpenMap; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.search.warmer.IndexWarmersMetaData.Entry; import org.elasticsearch.test.ESBackcompatTestCase; import java.util.List; @@ -88,21 +87,4 @@ public class GetIndexBackwardsCompatibilityIT extends ESBackcompatTestCase { assertThat(settings.get("index.number_of_shards"), equalTo("1")); } - public void testGetWarmers() throws Exception { - createIndex("test"); - ensureSearchable("test"); - assertAcked(client().admin().indices().preparePutWarmer("warmer1").setSearchRequest(client().prepareSearch("test")).get()); - ensureSearchable("test"); - GetIndexResponse getIndexResponse = client().admin().indices().prepareGetIndex().addIndices("test").addFeatures(Feature.WARMERS) - .execute().actionGet(); - ImmutableOpenMap> warmersMap = getIndexResponse.warmers(); - assertThat(warmersMap, notNullValue()); - assertThat(warmersMap.size(), equalTo(1)); - List warmersList = warmersMap.get("test"); - assertThat(warmersList, notNullValue()); - assertThat(warmersList.size(), equalTo(1)); - Entry warmer = warmersList.get(0); - assertThat(warmer, notNullValue()); - assertThat(warmer.name(), equalTo("warmer1")); - } } diff --git a/core/src/test/java/org/elasticsearch/bwcompat/OldIndexBackwardsCompatibilityIT.java b/core/src/test/java/org/elasticsearch/bwcompat/OldIndexBackwardsCompatibilityIT.java index 7011b4092e4..667716937da 100644 --- a/core/src/test/java/org/elasticsearch/bwcompat/OldIndexBackwardsCompatibilityIT.java +++ b/core/src/test/java/org/elasticsearch/bwcompat/OldIndexBackwardsCompatibilityIT.java @@ -32,20 +32,25 @@ import org.elasticsearch.action.admin.indices.upgrade.UpgradeIT; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.cluster.metadata.IndexMetaData; +import org.elasticsearch.cluster.metadata.MetaData; import org.elasticsearch.cluster.routing.allocation.decider.ThrottlingAllocationDecider; import org.elasticsearch.common.io.FileSystemUtils; import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.util.MultiDataPathUpgrader; +import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentHelper; +import org.elasticsearch.common.xcontent.XContentParser; +import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.env.NodeEnvironment; +import org.elasticsearch.gateway.MetaDataStateFormat; import org.elasticsearch.index.engine.EngineConfig; import org.elasticsearch.index.engine.Segment; import org.elasticsearch.index.mapper.string.StringFieldMapperPositionIncrementGapTests; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.shard.MergePolicyConfig; -import org.elasticsearch.indices.recovery.RecoverySettings; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.histogram.Histogram; @@ -423,4 +428,62 @@ public class OldIndexBackwardsCompatibilityIT extends ESIntegTestCase { UpgradeIT.assertUpgraded(client(), indexName); } + private Path getNodeDir(String indexFile) throws IOException { + Path unzipDir = createTempDir(); + Path unzipDataDir = unzipDir.resolve("data"); + + // decompress the index + Path backwardsIndex = getBwcIndicesPath().resolve(indexFile); + try (InputStream stream = Files.newInputStream(backwardsIndex)) { + TestUtil.unzip(stream, unzipDir); + } + + // check it is unique + assertTrue(Files.exists(unzipDataDir)); + Path[] list = FileSystemUtils.files(unzipDataDir); + if (list.length != 1) { + throw new IllegalStateException("Backwards index must contain exactly one cluster"); + } + + // the bwc scripts packs the indices under this path + return list[0].resolve("nodes/0/"); + } + + public void testOldClusterStates() throws Exception { + // dangling indices do not load the global state, only the per-index states + // so we make sure we can read them separately + MetaDataStateFormat globalFormat = new MetaDataStateFormat(XContentType.JSON, "global-") { + + @Override + public void toXContent(XContentBuilder builder, MetaData state) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public MetaData fromXContent(XContentParser parser) throws IOException { + return MetaData.Builder.fromXContent(parser); + } + }; + MetaDataStateFormat indexFormat = new MetaDataStateFormat(XContentType.JSON, "state-") { + + @Override + public void toXContent(XContentBuilder builder, IndexMetaData state) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public IndexMetaData fromXContent(XContentParser parser) throws IOException { + return IndexMetaData.Builder.fromXContent(parser); + } + }; + Collections.shuffle(indexes, random()); + for (String indexFile : indexes) { + String indexName = indexFile.replace(".zip", "").toLowerCase(Locale.ROOT).replace("unsupported-", "index-"); + Path nodeDir = getNodeDir(indexFile); + logger.info("Parsing cluster state files from index [" + indexName + "]"); + assertNotNull(globalFormat.loadLatestState(logger, nodeDir)); // no exception + Path indexDir = nodeDir.resolve("indices").resolve(indexName); + assertNotNull(indexFormat.loadLatestState(logger, indexDir)); // no exception + } + } } diff --git a/core/src/test/java/org/elasticsearch/cluster/ClusterStateDiffIT.java b/core/src/test/java/org/elasticsearch/cluster/ClusterStateDiffIT.java index faa0f15d8f2..8b79b78397b 100644 --- a/core/src/test/java/org/elasticsearch/cluster/ClusterStateDiffIT.java +++ b/core/src/test/java/org/elasticsearch/cluster/ClusterStateDiffIT.java @@ -39,7 +39,6 @@ import org.elasticsearch.cluster.routing.ShardRoutingState; import org.elasticsearch.cluster.routing.TestShardRouting; import org.elasticsearch.cluster.routing.UnassignedInfo; import org.elasticsearch.common.Strings; -import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.collect.ImmutableOpenMap; import org.elasticsearch.common.io.stream.BytesStreamOutput; import org.elasticsearch.common.io.stream.StreamInput; @@ -49,7 +48,6 @@ import org.elasticsearch.discovery.DiscoverySettings; import org.elasticsearch.gateway.GatewayService; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.shard.ShardId; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; import org.elasticsearch.test.ESIntegTestCase; import java.util.Collections; @@ -492,9 +490,6 @@ public class ClusterStateDiffIT extends ESIntegTestCase { builder.settings(settingsBuilder); builder.numberOfShards(randomIntBetween(1, 10)).numberOfReplicas(randomInt(10)); int aliasCount = randomInt(10); - if (randomBoolean()) { - builder.putCustom(IndexWarmersMetaData.TYPE, randomWarmers()); - } for (int i = 0; i < aliasCount; i++) { builder.putAlias(randomAlias()); } @@ -504,7 +499,7 @@ public class ClusterStateDiffIT extends ESIntegTestCase { @Override public IndexMetaData randomChange(IndexMetaData part) { IndexMetaData.Builder builder = IndexMetaData.builder(part); - switch (randomIntBetween(0, 3)) { + switch (randomIntBetween(0, 2)) { case 0: builder.settings(Settings.builder().put(part.getSettings()).put(randomSettings(Settings.EMPTY))); break; @@ -518,9 +513,6 @@ public class ClusterStateDiffIT extends ESIntegTestCase { case 2: builder.settings(Settings.builder().put(part.getSettings()).put(IndexMetaData.SETTING_INDEX_UUID, Strings.randomBase64UUID())); break; - case 3: - builder.putCustom(IndexWarmersMetaData.TYPE, randomWarmers()); - break; default: throw new IllegalArgumentException("Shouldn't be here"); } @@ -529,23 +521,6 @@ public class ClusterStateDiffIT extends ESIntegTestCase { }); } - /** - * Generates a random warmer - */ - private IndexWarmersMetaData randomWarmers() { - if (randomBoolean()) { - return new IndexWarmersMetaData( - new IndexWarmersMetaData.Entry( - randomName("warm"), - new String[]{randomName("type")}, - randomBoolean(), - new IndexWarmersMetaData.SearchSource(new BytesArray(randomAsciiOfLength(1000)))) - ); - } else { - return new IndexWarmersMetaData(); - } - } - /** * Randomly adds, deletes or updates index templates in the metadata */ @@ -576,9 +551,6 @@ public class ClusterStateDiffIT extends ESIntegTestCase { for (int i = 0; i < aliasCount; i++) { builder.putAlias(randomAlias()); } - if (randomBoolean()) { - builder.putCustom(IndexWarmersMetaData.TYPE, randomWarmers()); - } return builder.build(); } diff --git a/core/src/test/java/org/elasticsearch/cluster/ack/AckIT.java b/core/src/test/java/org/elasticsearch/cluster/ack/AckIT.java index 13a5cae6ca3..9f646d0df58 100644 --- a/core/src/test/java/org/elasticsearch/cluster/ack/AckIT.java +++ b/core/src/test/java/org/elasticsearch/cluster/ack/AckIT.java @@ -19,7 +19,6 @@ package org.elasticsearch.cluster.ack; -import com.carrotsearch.hppc.cursors.ObjectObjectCursor; import org.elasticsearch.action.admin.cluster.reroute.ClusterRerouteResponse; import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse; import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse; @@ -27,9 +26,6 @@ import org.elasticsearch.action.admin.indices.close.CloseIndexResponse; import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse; import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsResponse; -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerResponse; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersResponse; -import org.elasticsearch.action.admin.indices.warmer.put.PutWarmerResponse; import org.elasticsearch.client.Client; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.AliasMetaData; @@ -42,12 +38,9 @@ import org.elasticsearch.cluster.routing.ShardRoutingState; import org.elasticsearch.cluster.routing.allocation.command.MoveAllocationCommand; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.discovery.DiscoverySettings; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.test.ESIntegTestCase.ClusterScope; -import java.util.List; import java.util.concurrent.TimeUnit; import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_REPLICAS; @@ -88,83 +81,6 @@ public class AckIT extends ESIntegTestCase { assertThat(updateSettingsResponse.isAcknowledged(), equalTo(false)); } - public void testPutWarmerAcknowledgement() { - createIndex("test"); - // make sure one shard is started so the search during put warmer will not fail - index("test", "type", "1", "f", 1); - - assertAcked(client().admin().indices().preparePutWarmer("custom_warmer") - .setSearchRequest(client().prepareSearch("test").setTypes("test").setQuery(QueryBuilders.matchAllQuery()))); - - for (Client client : clients()) { - GetWarmersResponse getWarmersResponse = client.admin().indices().prepareGetWarmers().setLocal(true).get(); - assertThat(getWarmersResponse.warmers().size(), equalTo(1)); - ObjectObjectCursor> entry = getWarmersResponse.warmers().iterator().next(); - assertThat(entry.key, equalTo("test")); - assertThat(entry.value.size(), equalTo(1)); - assertThat(entry.value.get(0).name(), equalTo("custom_warmer")); - } - } - - public void testPutWarmerNoAcknowledgement() throws InterruptedException { - createIndex("test"); - // make sure one shard is started so the search during put warmer will not fail - index("test", "type", "1", "f", 1); - - PutWarmerResponse putWarmerResponse = client().admin().indices().preparePutWarmer("custom_warmer").setTimeout("0s") - .setSearchRequest(client().prepareSearch("test").setTypes("test").setQuery(QueryBuilders.matchAllQuery())) - .get(); - assertThat(putWarmerResponse.isAcknowledged(), equalTo(false)); - /* Since we don't wait for the ack here we have to wait until the search request has been executed from the master - * otherwise the test infra might have already deleted the index and the search request fails on all shards causing - * the test to fail too. We simply wait until the the warmer has been installed and also clean it up afterwards.*/ - assertTrue(awaitBusy(() -> { - for (Client client : clients()) { - GetWarmersResponse getWarmersResponse = client.admin().indices().prepareGetWarmers().setLocal(true).get(); - if (getWarmersResponse.warmers().size() != 1) { - return false; - } - } - return true; - })); - assertAcked(client().admin().indices().prepareDeleteWarmer().setIndices("test").setNames("custom_warmer")); - } - - public void testDeleteWarmerAcknowledgement() { - createIndex("test"); - index("test", "type", "1", "f", 1); - - assertAcked(client().admin().indices().preparePutWarmer("custom_warmer") - .setSearchRequest(client().prepareSearch("test").setTypes("test").setQuery(QueryBuilders.matchAllQuery()))); - - assertAcked(client().admin().indices().prepareDeleteWarmer().setIndices("test").setNames("custom_warmer")); - - for (Client client : clients()) { - GetWarmersResponse getWarmersResponse = client.admin().indices().prepareGetWarmers().setLocal(true).get(); - assertThat(getWarmersResponse.warmers().size(), equalTo(0)); - } - } - - public void testDeleteWarmerNoAcknowledgement() throws InterruptedException { - createIndex("test"); - index("test", "type", "1", "f", 1); - - assertAcked(client().admin().indices().preparePutWarmer("custom_warmer") - .setSearchRequest(client().prepareSearch("test").setTypes("test").setQuery(QueryBuilders.matchAllQuery()))); - - DeleteWarmerResponse deleteWarmerResponse = client().admin().indices().prepareDeleteWarmer().setIndices("test").setNames("custom_warmer").setTimeout("0s").get(); - assertFalse(deleteWarmerResponse.isAcknowledged()); - assertTrue(awaitBusy(() -> { - for (Client client : clients()) { - GetWarmersResponse getWarmersResponse = client.admin().indices().prepareGetWarmers().setLocal(true).get(); - if (getWarmersResponse.warmers().size() > 0) { - return false; - } - } - return true; - })); - } - public void testClusterRerouteAcknowledgement() throws InterruptedException { assertAcked(prepareCreate("test").setSettings(Settings.builder() .put(indexSettings()) diff --git a/core/src/test/java/org/elasticsearch/indices/IndicesOptionsIntegrationIT.java b/core/src/test/java/org/elasticsearch/indices/IndicesOptionsIntegrationIT.java index 2723f49a77a..aeb4ac55410 100644 --- a/core/src/test/java/org/elasticsearch/indices/IndicesOptionsIntegrationIT.java +++ b/core/src/test/java/org/elasticsearch/indices/IndicesOptionsIntegrationIT.java @@ -36,7 +36,6 @@ import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequestBui import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse; import org.elasticsearch.action.admin.indices.stats.IndicesStatsRequestBuilder; import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequestBuilder; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersRequestBuilder; import org.elasticsearch.action.percolate.MultiPercolateRequestBuilder; import org.elasticsearch.action.percolate.PercolateRequestBuilder; import org.elasticsearch.action.percolate.PercolateSourceBuilder; @@ -49,10 +48,7 @@ import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexNotFoundException; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.suggest.SuggestBuilders; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; import org.elasticsearch.test.ESIntegTestCase; import static org.elasticsearch.action.percolate.PercolateSourceBuilder.docBuilder; @@ -86,7 +82,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases("test1", "test2"), true); verify(getFieldMapping("test1", "test2"), true); verify(getMapping("test1", "test2"), true); - verify(getWarmer("test1", "test2"), true); verify(getSettings("test1", "test2"), true); IndicesOptions options = IndicesOptions.strictExpandOpen(); @@ -107,7 +102,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases("test1", "test2").setIndicesOptions(options), true); verify(getFieldMapping("test1", "test2").setIndicesOptions(options), true); verify(getMapping("test1", "test2").setIndicesOptions(options), true); - verify(getWarmer("test1", "test2").setIndicesOptions(options), true); verify(getSettings("test1", "test2").setIndicesOptions(options), true); options = IndicesOptions.lenientExpandOpen(); @@ -128,7 +122,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases("test1", "test2").setIndicesOptions(options), false); verify(getFieldMapping("test1", "test2").setIndicesOptions(options), false); verify(getMapping("test1", "test2").setIndicesOptions(options), false); - verify(getWarmer("test1", "test2").setIndicesOptions(options), false); verify(getSettings("test1", "test2").setIndicesOptions(options), false); options = IndicesOptions.strictExpandOpen(); @@ -151,7 +144,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases("test1", "test2").setIndicesOptions(options), false); verify(getFieldMapping("test1", "test2").setIndicesOptions(options), false); verify(getMapping("test1", "test2").setIndicesOptions(options), false); - verify(getWarmer("test1", "test2").setIndicesOptions(options), false); verify(getSettings("test1", "test2").setIndicesOptions(options), false); } @@ -182,7 +174,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases("test1").setIndicesOptions(options), true); verify(getFieldMapping("test1").setIndicesOptions(options), true); verify(getMapping("test1").setIndicesOptions(options), true); - verify(getWarmer("test1").setIndicesOptions(options), true); verify(getSettings("test1").setIndicesOptions(options), true); options = IndicesOptions.fromOptions(true, options.allowNoIndices(), options.expandWildcardsOpen(), options.expandWildcardsClosed(), options); @@ -203,7 +194,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases("test1").setIndicesOptions(options), false); verify(getFieldMapping("test1").setIndicesOptions(options), false); verify(getMapping("test1").setIndicesOptions(options), false); - verify(getWarmer("test1").setIndicesOptions(options), false); verify(getSettings("test1").setIndicesOptions(options), false); assertAcked(client().admin().indices().prepareOpen("test1")); @@ -227,7 +217,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases("test1").setIndicesOptions(options), false); verify(getFieldMapping("test1").setIndicesOptions(options), false); verify(getMapping("test1").setIndicesOptions(options), false); - verify(getWarmer("test1").setIndicesOptions(options), false); verify(getSettings("test1").setIndicesOptions(options), false); } @@ -249,7 +238,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases("test1").setIndicesOptions(options), true); verify(getFieldMapping("test1").setIndicesOptions(options), true); verify(getMapping("test1").setIndicesOptions(options), true); - verify(getWarmer("test1").setIndicesOptions(options), true); verify(getSettings("test1").setIndicesOptions(options), true); options = IndicesOptions.fromOptions(true, options.allowNoIndices(), options.expandWildcardsOpen(), options.expandWildcardsClosed(), options); @@ -269,7 +257,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases("test1").setIndicesOptions(options), false); verify(getFieldMapping("test1").setIndicesOptions(options), false); verify(getMapping("test1").setIndicesOptions(options), false); - verify(getWarmer("test1").setIndicesOptions(options), false); verify(getSettings("test1").setIndicesOptions(options), false); assertAcked(prepareCreate("test1")); @@ -292,7 +279,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases("test1").setIndicesOptions(options), false); verify(getFieldMapping("test1").setIndicesOptions(options), false); verify(getMapping("test1").setIndicesOptions(options), false); - verify(getWarmer("test1").setIndicesOptions(options), false); verify(getSettings("test1").setIndicesOptions(options), false); } @@ -346,7 +332,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases(indices), false); verify(getFieldMapping(indices), false); verify(getMapping(indices), false); - verify(getWarmer(indices), false); verify(getSettings(indices), false); // Now force allow_no_indices=true @@ -368,7 +353,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases(indices).setIndicesOptions(options), false); verify(getFieldMapping(indices).setIndicesOptions(options), false); verify(getMapping(indices).setIndicesOptions(options), false); - verify(getWarmer(indices).setIndicesOptions(options), false); verify(getSettings(indices).setIndicesOptions(options), false); assertAcked(prepareCreate("foobar")); @@ -393,7 +377,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases(indices), false); verify(getFieldMapping(indices), false); verify(getMapping(indices), false); - verify(getWarmer(indices), false); verify(getSettings(indices).setIndicesOptions(options), false); // Verify defaults for wildcards, with two wildcard expression and one existing index @@ -415,7 +398,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases(indices), false); verify(getFieldMapping(indices), false); verify(getMapping(indices), false); - verify(getWarmer(indices), false); verify(getSettings(indices).setIndicesOptions(options), false); // Now force allow_no_indices=true @@ -437,7 +419,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { verify(getAliases(indices).setIndicesOptions(options), false); verify(getFieldMapping(indices).setIndicesOptions(options), false); verify(getMapping(indices).setIndicesOptions(options), false); - verify(getWarmer(indices).setIndicesOptions(options), false); verify(getSettings(indices).setIndicesOptions(options), false); } @@ -581,34 +562,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { assertThat(client().admin().indices().prepareExists("barbaz").get().isExists(), equalTo(false)); } - public void testPutWarmer() throws Exception { - createIndex("foobar"); - ensureYellow(); - verify(client().admin().indices().preparePutWarmer("warmer1").setSearchRequest(client().prepareSearch().setIndices("foobar").setQuery(QueryBuilders.matchAllQuery())), false); - assertThat(client().admin().indices().prepareGetWarmers("foobar").setWarmers("warmer1").get().getWarmers().size(), equalTo(1)); - - } - - public void testPutWarmerWildcard() throws Exception { - createIndex("foo", "foobar", "bar", "barbaz"); - ensureYellow(); - - verify(client().admin().indices().preparePutWarmer("warmer1").setSearchRequest(client().prepareSearch().setIndices("foo*").setQuery(QueryBuilders.matchAllQuery())), false); - - assertThat(client().admin().indices().prepareGetWarmers("foo").setWarmers("warmer1").get().getWarmers().size(), equalTo(1)); - assertThat(client().admin().indices().prepareGetWarmers("foobar").setWarmers("warmer1").get().getWarmers().size(), equalTo(1)); - assertThat(client().admin().indices().prepareGetWarmers("bar").setWarmers("warmer1").get().getWarmers().size(), equalTo(0)); - assertThat(client().admin().indices().prepareGetWarmers("barbaz").setWarmers("warmer1").get().getWarmers().size(), equalTo(0)); - - verify(client().admin().indices().preparePutWarmer("warmer2").setSearchRequest(client().prepareSearch().setIndices().setQuery(QueryBuilders.matchAllQuery())), false); - - assertThat(client().admin().indices().prepareGetWarmers("foo").setWarmers("warmer2").get().getWarmers().size(), equalTo(1)); - assertThat(client().admin().indices().prepareGetWarmers("foobar").setWarmers("warmer2").get().getWarmers().size(), equalTo(1)); - assertThat(client().admin().indices().prepareGetWarmers("bar").setWarmers("warmer2").get().getWarmers().size(), equalTo(1)); - assertThat(client().admin().indices().prepareGetWarmers("barbaz").setWarmers("warmer2").get().getWarmers().size(), equalTo(1)); - - } - public void testPutAlias() throws Exception { createIndex("foobar"); ensureYellow(); @@ -635,46 +588,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { } - public void testDeleteWarmer() throws Exception { - SearchSourceBuilder source = new SearchSourceBuilder(); - source.query(QueryBuilders.matchAllQuery()); - IndexWarmersMetaData.Entry entry = new IndexWarmersMetaData.Entry("test1", new String[] { "typ1" }, false, new IndexWarmersMetaData.SearchSource(source)); - assertAcked(prepareCreate("foobar").addCustom(new IndexWarmersMetaData(entry))); - ensureYellow(); - - verify(client().admin().indices().prepareDeleteWarmer().setIndices("foo").setNames("test1"), true); - assertThat(client().admin().indices().prepareGetWarmers("foobar").setWarmers("test1").get().getWarmers().size(), equalTo(1)); - verify(client().admin().indices().prepareDeleteWarmer().setIndices("foobar").setNames("test1"), false); - assertThat(client().admin().indices().prepareGetWarmers("foobar").setWarmers("test1").get().getWarmers().size(), equalTo(0)); - } - - public void testDeleteWarmerWildcard() throws Exception { - verify(client().admin().indices().prepareDeleteWarmer().setIndices("_all").setNames("test1"), true); - - SearchSourceBuilder source = new SearchSourceBuilder(); - source.query(QueryBuilders.matchAllQuery()); - IndexWarmersMetaData.Entry entry = new IndexWarmersMetaData.Entry("test1", new String[] { "type1" }, false, new IndexWarmersMetaData.SearchSource(source)); - assertAcked(prepareCreate("foo").addCustom(new IndexWarmersMetaData(entry))); - assertAcked(prepareCreate("foobar").addCustom(new IndexWarmersMetaData(entry))); - assertAcked(prepareCreate("bar").addCustom(new IndexWarmersMetaData(entry))); - assertAcked(prepareCreate("barbaz").addCustom(new IndexWarmersMetaData(entry))); - ensureYellow(); - - verify(client().admin().indices().prepareDeleteWarmer().setIndices("foo*").setNames("test1"), false); - assertThat(client().admin().indices().prepareGetWarmers("foo").setWarmers("test1").get().getWarmers().size(), equalTo(0)); - assertThat(client().admin().indices().prepareGetWarmers("foobar").setWarmers("test1").get().getWarmers().size(), equalTo(0)); - assertThat(client().admin().indices().prepareGetWarmers("bar").setWarmers("test1").get().getWarmers().size(), equalTo(1)); - assertThat(client().admin().indices().prepareGetWarmers("barbaz").setWarmers("test1").get().getWarmers().size(), equalTo(1)); - - assertAcked(client().admin().indices().prepareDelete("foo*")); - - verify(client().admin().indices().prepareDeleteWarmer().setIndices("foo*").setNames("test1"), true); - - verify(client().admin().indices().prepareDeleteWarmer().setIndices("_all").setNames("test1"), false); - assertThat(client().admin().indices().prepareGetWarmers("bar").setWarmers("test1").get().getWarmers().size(), equalTo(0)); - assertThat(client().admin().indices().prepareGetWarmers("barbaz").setWarmers("test1").get().getWarmers().size(), equalTo(0)); - } - public void testPutMapping() throws Exception { verify(client().admin().indices().preparePutMapping("foo").setType("type1").setSource("field", "type=string"), true); verify(client().admin().indices().preparePutMapping("_all").setType("type1").setSource("field", "type=string"), true); @@ -816,10 +729,6 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase { return client().admin().indices().prepareGetMappings(indices); } - private static GetWarmersRequestBuilder getWarmer(String... indices) { - return client().admin().indices().prepareGetWarmers(indices); - } - private static GetSettingsRequestBuilder getSettings(String... indices) { return client().admin().indices().prepareGetSettings(indices); } diff --git a/core/src/test/java/org/elasticsearch/indices/warmer/GatewayIndicesWarmerIT.java b/core/src/test/java/org/elasticsearch/indices/warmer/GatewayIndicesWarmerIT.java deleted file mode 100644 index 7c5a154ebcb..00000000000 --- a/core/src/test/java/org/elasticsearch/indices/warmer/GatewayIndicesWarmerIT.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.indices.warmer; - -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerResponse; -import org.elasticsearch.cluster.ClusterState; -import org.elasticsearch.common.logging.ESLogger; -import org.elasticsearch.common.logging.Loggers; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; -import org.elasticsearch.test.ESIntegTestCase; -import org.elasticsearch.test.ESIntegTestCase.ClusterScope; -import org.elasticsearch.test.ESIntegTestCase.Scope; -import org.elasticsearch.test.InternalTestCluster.RestartCallback; -import org.hamcrest.Matchers; - -import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; -import static org.hamcrest.Matchers.equalTo; - -/** - */ -@ClusterScope(numDataNodes =0, scope= Scope.TEST) -public class GatewayIndicesWarmerIT extends ESIntegTestCase { - private final ESLogger logger = Loggers.getLogger(GatewayIndicesWarmerIT.class); - - public void testStatePersistence() throws Exception { - logger.info("--> starting 1 nodes"); - internalCluster().startNode(); - - logger.info("--> putting two templates"); - createIndex("test"); - - ensureYellow(); - - assertAcked(client().admin().indices().preparePutWarmer("warmer_1") - .setSearchRequest(client().prepareSearch("test").setQuery(QueryBuilders.termQuery("field", "value1")))); - assertAcked(client().admin().indices().preparePutWarmer("warmer_2") - .setSearchRequest(client().prepareSearch("test").setQuery(QueryBuilders.termQuery("field", "value2")))); - - logger.info("--> put template with warmer"); - client().admin().indices().preparePutTemplate("template_1") - .setSource("{\n" + - " \"template\" : \"xxx\",\n" + - " \"warmers\" : {\n" + - " \"warmer_1\" : {\n" + - " \"types\" : [],\n" + - " \"source\" : {\n" + - " \"query\" : {\n" + - " \"match_all\" : {}\n" + - " }\n" + - " }\n" + - " }\n" + - " }\n" + - "}") - .execute().actionGet(); - - - logger.info("--> verify warmers are registered in cluster state"); - ClusterState clusterState = client().admin().cluster().prepareState().execute().actionGet().getState(); - IndexWarmersMetaData warmersMetaData = clusterState.metaData().index("test").custom(IndexWarmersMetaData.TYPE); - assertThat(warmersMetaData, Matchers.notNullValue()); - assertThat(warmersMetaData.entries().size(), equalTo(2)); - - IndexWarmersMetaData templateWarmers = clusterState.metaData().templates().get("template_1").custom(IndexWarmersMetaData.TYPE); - assertThat(templateWarmers, Matchers.notNullValue()); - assertThat(templateWarmers.entries().size(), equalTo(1)); - - logger.info("--> restarting the node"); - internalCluster().fullRestart(new RestartCallback() { - @Override - public Settings onNodeStopped(String nodeName) throws Exception { - return Settings.EMPTY; - } - }); - - ensureYellow(); - - logger.info("--> verify warmers are recovered"); - clusterState = client().admin().cluster().prepareState().execute().actionGet().getState(); - IndexWarmersMetaData recoveredWarmersMetaData = clusterState.metaData().index("test").custom(IndexWarmersMetaData.TYPE); - assertThat(recoveredWarmersMetaData.entries().size(), equalTo(warmersMetaData.entries().size())); - for (int i = 0; i < warmersMetaData.entries().size(); i++) { - assertThat(recoveredWarmersMetaData.entries().get(i).name(), equalTo(warmersMetaData.entries().get(i).name())); - assertThat(recoveredWarmersMetaData.entries().get(i).source(), equalTo(warmersMetaData.entries().get(i).source())); - } - - logger.info("--> verify warmers in template are recovered"); - IndexWarmersMetaData recoveredTemplateWarmers = clusterState.metaData().templates().get("template_1").custom(IndexWarmersMetaData.TYPE); - assertThat(recoveredTemplateWarmers.entries().size(), equalTo(templateWarmers.entries().size())); - for (int i = 0; i < templateWarmers.entries().size(); i++) { - assertThat(recoveredTemplateWarmers.entries().get(i).name(), equalTo(templateWarmers.entries().get(i).name())); - assertThat(recoveredTemplateWarmers.entries().get(i).source(), equalTo(templateWarmers.entries().get(i).source())); - } - - - logger.info("--> delete warmer warmer_1"); - DeleteWarmerResponse deleteWarmerResponse = client().admin().indices().prepareDeleteWarmer().setIndices("test").setNames("warmer_1").execute().actionGet(); - assertThat(deleteWarmerResponse.isAcknowledged(), equalTo(true)); - - logger.info("--> verify warmers (delete) are registered in cluster state"); - clusterState = client().admin().cluster().prepareState().execute().actionGet().getState(); - warmersMetaData = clusterState.metaData().index("test").custom(IndexWarmersMetaData.TYPE); - assertThat(warmersMetaData, Matchers.notNullValue()); - assertThat(warmersMetaData.entries().size(), equalTo(1)); - - logger.info("--> restarting the node"); - internalCluster().fullRestart(new RestartCallback() { - @Override - public Settings onNodeStopped(String nodeName) throws Exception { - return Settings.EMPTY; - } - }); - - ensureYellow(); - - logger.info("--> verify warmers are recovered"); - clusterState = client().admin().cluster().prepareState().execute().actionGet().getState(); - recoveredWarmersMetaData = clusterState.metaData().index("test").custom(IndexWarmersMetaData.TYPE); - assertThat(recoveredWarmersMetaData.entries().size(), equalTo(warmersMetaData.entries().size())); - for (int i = 0; i < warmersMetaData.entries().size(); i++) { - assertThat(recoveredWarmersMetaData.entries().get(i).name(), equalTo(warmersMetaData.entries().get(i).name())); - assertThat(recoveredWarmersMetaData.entries().get(i).source(), equalTo(warmersMetaData.entries().get(i).source())); - } - } -} diff --git a/core/src/test/java/org/elasticsearch/indices/warmer/IndicesWarmerBlocksIT.java b/core/src/test/java/org/elasticsearch/indices/warmer/IndicesWarmerBlocksIT.java deleted file mode 100644 index 5ca4a99ac1a..00000000000 --- a/core/src/test/java/org/elasticsearch/indices/warmer/IndicesWarmerBlocksIT.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.indices.warmer; - - -import com.carrotsearch.hppc.cursors.ObjectObjectCursor; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersResponse; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; -import org.elasticsearch.test.ESIntegTestCase; -import org.elasticsearch.test.ESIntegTestCase.ClusterScope; - -import java.util.Arrays; -import java.util.List; - -import static org.elasticsearch.cluster.metadata.IndexMetaData.INDEX_METADATA_BLOCK; -import static org.elasticsearch.cluster.metadata.IndexMetaData.INDEX_READ_BLOCK; -import static org.elasticsearch.cluster.metadata.IndexMetaData.INDEX_READ_ONLY_BLOCK; -import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_BLOCKS_METADATA; -import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_BLOCKS_READ; -import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_BLOCKS_WRITE; -import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_READ_ONLY; -import static org.elasticsearch.cluster.metadata.MetaData.CLUSTER_READ_ONLY_BLOCK; -import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; -import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertBlocked; -import static org.hamcrest.Matchers.equalTo; - -@ClusterScope(scope = ESIntegTestCase.Scope.TEST) -public class IndicesWarmerBlocksIT extends ESIntegTestCase { - public void testPutWarmerWithBlocks() { - createIndex("test-blocks"); - ensureGreen("test-blocks"); - - // Index reads are blocked, the warmer can't be registered - try { - enableIndexBlock("test-blocks", SETTING_BLOCKS_READ); - assertBlocked(client().admin().indices().preparePutWarmer("warmer_blocked") - .setSearchRequest(client().prepareSearch("test-*").setTypes("a1").setQuery(QueryBuilders.matchAllQuery())), INDEX_READ_BLOCK); - } finally { - disableIndexBlock("test-blocks", SETTING_BLOCKS_READ); - } - - // Index writes are blocked, the warmer can be registered - try { - enableIndexBlock("test-blocks", SETTING_BLOCKS_WRITE); - assertAcked(client().admin().indices().preparePutWarmer("warmer_acked") - .setSearchRequest(client().prepareSearch("test-blocks").setTypes("a1").setQuery(QueryBuilders.matchAllQuery()))); - } finally { - disableIndexBlock("test-blocks", SETTING_BLOCKS_WRITE); - } - - // Index metadata changes are blocked, the warmer can't be registered - try { - enableIndexBlock("test-blocks", SETTING_BLOCKS_METADATA); - assertBlocked(client().admin().indices().preparePutWarmer("warmer_blocked") - .setSearchRequest(client().prepareSearch("test-*").setTypes("a1").setQuery(QueryBuilders.matchAllQuery())), INDEX_METADATA_BLOCK); - } finally { - disableIndexBlock("test-blocks", SETTING_BLOCKS_METADATA); - } - - // Index metadata changes are blocked, the warmer can't be registered - try { - enableIndexBlock("test-blocks", SETTING_READ_ONLY); - assertBlocked(client().admin().indices().preparePutWarmer("warmer_blocked") - .setSearchRequest(client().prepareSearch("test-*").setTypes("a1").setQuery(QueryBuilders.matchAllQuery())), INDEX_READ_ONLY_BLOCK); - } finally { - disableIndexBlock("test-blocks", SETTING_READ_ONLY); - } - - // Adding a new warmer is not possible when the cluster is read-only - try { - setClusterReadOnly(true); - assertBlocked(client().admin().indices().preparePutWarmer("warmer_blocked") - .setSearchRequest(client().prepareSearch("test-blocks").setTypes("a1").setQuery(QueryBuilders.matchAllQuery())), CLUSTER_READ_ONLY_BLOCK); - } finally { - setClusterReadOnly(false); - } - } - - public void testGetWarmerWithBlocks() { - createIndex("test-blocks"); - ensureGreen("test-blocks"); - - assertAcked(client().admin().indices().preparePutWarmer("warmer_block") - .setSearchRequest(client().prepareSearch("test-blocks").setTypes("a1").setQuery(QueryBuilders.matchAllQuery()))); - - // Request is not blocked - for (String blockSetting : Arrays.asList(SETTING_BLOCKS_READ, SETTING_BLOCKS_WRITE, SETTING_READ_ONLY)) { - try { - enableIndexBlock("test-blocks", blockSetting); - GetWarmersResponse response = client().admin().indices().prepareGetWarmers("test-blocks").get(); - assertThat(response.warmers().size(), equalTo(1)); - - ObjectObjectCursor> entry = response.warmers().iterator().next(); - assertThat(entry.key, equalTo("test-blocks")); - assertThat(entry.value.size(), equalTo(1)); - assertThat(entry.value.iterator().next().name(), equalTo("warmer_block")); - } finally { - disableIndexBlock("test-blocks", blockSetting); - } - } - - // Request is blocked - try { - enableIndexBlock("test-blocks", SETTING_BLOCKS_METADATA); - assertBlocked(client().admin().indices().prepareGetWarmers("test-blocks"), INDEX_METADATA_BLOCK); - } finally { - disableIndexBlock("test-blocks", SETTING_BLOCKS_METADATA); - } - } - - public void testDeleteWarmerWithBlocks() { - createIndex("test-blocks"); - ensureGreen("test-blocks"); - - // Request is not blocked - for (String blockSetting : Arrays.asList(SETTING_BLOCKS_READ, SETTING_BLOCKS_WRITE)) { - try { - assertAcked(client().admin().indices().preparePutWarmer("warmer_block") - .setSearchRequest(client().prepareSearch("test-blocks").setTypes("a1").setQuery(QueryBuilders.matchAllQuery()))); - - enableIndexBlock("test-blocks", blockSetting); - assertAcked(client().admin().indices().prepareDeleteWarmer().setIndices("test-blocks").setNames("warmer_block")); - } finally { - disableIndexBlock("test-blocks", blockSetting); - } - } - - // Request is blocked - for (String blockSetting : Arrays.asList(SETTING_READ_ONLY, SETTING_BLOCKS_METADATA)) { - try { - assertAcked(client().admin().indices().preparePutWarmer("warmer_block") - .setSearchRequest(client().prepareSearch("test-blocks").setTypes("a1").setQuery(QueryBuilders.matchAllQuery()))); - - enableIndexBlock("test-blocks", blockSetting); - assertBlocked(client().admin().indices().prepareDeleteWarmer().setIndices("test-blocks").setNames("warmer_block")); - } finally { - disableIndexBlock("test-blocks", blockSetting); - } - } - } -} diff --git a/core/src/test/java/org/elasticsearch/indices/warmer/SimpleIndicesWarmerIT.java b/core/src/test/java/org/elasticsearch/indices/warmer/SimpleIndicesWarmerIT.java deleted file mode 100644 index dbbf3bf7247..00000000000 --- a/core/src/test/java/org/elasticsearch/indices/warmer/SimpleIndicesWarmerIT.java +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.indices.warmer; - -import com.carrotsearch.hppc.cursors.ObjectObjectCursor; -import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse; -import org.elasticsearch.action.admin.indices.warmer.delete.DeleteWarmerResponse; -import org.elasticsearch.action.admin.indices.warmer.get.GetWarmersResponse; -import org.elasticsearch.action.admin.indices.warmer.put.PutWarmerResponse; -import org.elasticsearch.cluster.ClusterState; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.indices.cache.request.IndicesRequestCache; -import org.elasticsearch.search.warmer.IndexWarmerMissingException; -import org.elasticsearch.search.warmer.IndexWarmersMetaData; -import org.elasticsearch.test.ESIntegTestCase; -import org.hamcrest.Matchers; - -import java.util.List; - -import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.greaterThan; -import static org.hamcrest.Matchers.greaterThanOrEqualTo; -import static org.hamcrest.Matchers.is; - -public class SimpleIndicesWarmerIT extends ESIntegTestCase { - public void testSimpleWarmers() { - createIndex("test"); - ensureGreen(); - - PutWarmerResponse putWarmerResponse = client().admin().indices().preparePutWarmer("warmer_1") - .setSearchRequest(client().prepareSearch("test").setTypes("a1").setQuery(QueryBuilders.termQuery("field", "value1"))) - .execute().actionGet(); - assertThat(putWarmerResponse.isAcknowledged(), equalTo(true)); - putWarmerResponse = client().admin().indices().preparePutWarmer("warmer_2") - .setSearchRequest(client().prepareSearch("test").setTypes("a2").setQuery(QueryBuilders.termQuery("field", "value2"))) - .execute().actionGet(); - assertThat(putWarmerResponse.isAcknowledged(), equalTo(true)); - - client().prepareIndex("test", "type1", "1").setSource("field", "value1").setRefresh(true).execute().actionGet(); - client().prepareIndex("test", "type1", "2").setSource("field", "value2").setRefresh(true).execute().actionGet(); - - GetWarmersResponse getWarmersResponse = client().admin().indices().prepareGetWarmers("tes*") - .execute().actionGet(); - assertThat(getWarmersResponse.getWarmers().size(), equalTo(1)); - assertThat(getWarmersResponse.getWarmers().get("test").size(), equalTo(2)); - assertThat(getWarmersResponse.getWarmers().get("test").get(0).name(), equalTo("warmer_1")); - assertThat(getWarmersResponse.getWarmers().get("test").get(1).name(), equalTo("warmer_2")); - - getWarmersResponse = client().admin().indices().prepareGetWarmers("test").addWarmers("warmer_*") - .execute().actionGet(); - assertThat(getWarmersResponse.getWarmers().size(), equalTo(1)); - assertThat(getWarmersResponse.getWarmers().get("test").size(), equalTo(2)); - assertThat(getWarmersResponse.getWarmers().get("test").get(0).name(), equalTo("warmer_1")); - assertThat(getWarmersResponse.getWarmers().get("test").get(1).name(), equalTo("warmer_2")); - - getWarmersResponse = client().admin().indices().prepareGetWarmers("test").addWarmers("warmer_1") - .execute().actionGet(); - assertThat(getWarmersResponse.getWarmers().size(), equalTo(1)); - assertThat(getWarmersResponse.getWarmers().get("test").size(), equalTo(1)); - assertThat(getWarmersResponse.getWarmers().get("test").get(0).name(), equalTo("warmer_1")); - - getWarmersResponse = client().admin().indices().prepareGetWarmers("test").addWarmers("warmer_2") - .execute().actionGet(); - assertThat(getWarmersResponse.getWarmers().size(), equalTo(1)); - assertThat(getWarmersResponse.getWarmers().get("test").size(), equalTo(1)); - assertThat(getWarmersResponse.getWarmers().get("test").get(0).name(), equalTo("warmer_2")); - - getWarmersResponse = client().admin().indices().prepareGetWarmers("test").addTypes("a*").addWarmers("warmer_2") - .execute().actionGet(); - assertThat(getWarmersResponse.getWarmers().size(), equalTo(1)); - assertThat(getWarmersResponse.getWarmers().get("test").size(), equalTo(1)); - assertThat(getWarmersResponse.getWarmers().get("test").get(0).name(), equalTo("warmer_2")); - - getWarmersResponse = client().admin().indices().prepareGetWarmers("test").addTypes("a1").addWarmers("warmer_2") - .execute().actionGet(); - assertThat(getWarmersResponse.getWarmers().size(), equalTo(0)); - } - - public void testTtemplateWarmer() { - client().admin().indices().preparePutTemplate("template_1") - .setSource("{\n" + - " \"template\" : \"*\",\n" + - " \"warmers\" : {\n" + - " \"warmer_1\" : {\n" + - " \"types\" : [],\n" + - " \"source\" : {\n" + - " \"query\" : {\n" + - " \"match_all\" : {}\n" + - " }\n" + - " }\n" + - " }\n" + - " }\n" + - "}") - .execute().actionGet(); - - createIndex("test"); - ensureGreen(); - - ClusterState clusterState = client().admin().cluster().prepareState().execute().actionGet().getState(); - IndexWarmersMetaData warmersMetaData = clusterState.metaData().index("test").custom(IndexWarmersMetaData.TYPE); - assertThat(warmersMetaData, Matchers.notNullValue()); - assertThat(warmersMetaData.entries().size(), equalTo(1)); - - client().prepareIndex("test", "type1", "1").setSource("field", "value1").setRefresh(true).execute().actionGet(); - client().prepareIndex("test", "type1", "2").setSource("field", "value2").setRefresh(true).execute().actionGet(); - } - - public void testCreateIndexWarmer() { - assertAcked(prepareCreate("test") - .setSource("{\n" + - " \"warmers\" : {\n" + - " \"warmer_1\" : {\n" + - " \"types\" : [],\n" + - " \"source\" : {\n" + - " \"query\" : {\n" + - " \"match_all\" : {}\n" + - " }\n" + - " }\n" + - " }\n" + - " }\n" + - "}")); - - ClusterState clusterState = client().admin().cluster().prepareState().execute().actionGet().getState(); - IndexWarmersMetaData warmersMetaData = clusterState.metaData().index("test").custom(IndexWarmersMetaData.TYPE); - assertThat(warmersMetaData, Matchers.notNullValue()); - assertThat(warmersMetaData.entries().size(), equalTo(1)); - - client().prepareIndex("test", "type1", "1").setSource("field", "value1").setRefresh(true).execute().actionGet(); - client().prepareIndex("test", "type1", "2").setSource("field", "value2").setRefresh(true).execute().actionGet(); - } - - public void testDeleteNonExistentIndexWarmer() { - createIndex("test"); - try { - client().admin().indices().prepareDeleteWarmer().setIndices("test").setNames("foo").execute().actionGet(); - fail("warmer foo should not exist"); - } catch (IndexWarmerMissingException ex) { - assertThat(ex.names()[0], equalTo("foo")); - } - } - - // issue 8991 - public void testDeleteAllIndexWarmerDoesNotThrowWhenNoWarmers() { - createIndex("test"); - DeleteWarmerResponse deleteWarmerResponse = client().admin().indices().prepareDeleteWarmer() - .setIndices("test").setNames("_all").execute().actionGet(); - assertThat(deleteWarmerResponse.isAcknowledged(), equalTo(true)); - - deleteWarmerResponse = client().admin().indices().prepareDeleteWarmer() - .setIndices("test").setNames("foo", "_all", "bar").execute().actionGet(); - assertThat(deleteWarmerResponse.isAcknowledged(), equalTo(true)); - } - - public void testDeleteIndexWarmerTest() { - createIndex("test"); - ensureGreen(); - - PutWarmerResponse putWarmerResponse = client().admin().indices().preparePutWarmer("custom_warmer") - .setSearchRequest(client().prepareSearch("test").setTypes("test").setQuery(QueryBuilders.matchAllQuery())) - .get(); - assertThat(putWarmerResponse.isAcknowledged(), equalTo(true)); - - GetWarmersResponse getWarmersResponse = client().admin().indices().prepareGetWarmers("test").get(); - assertThat(getWarmersResponse.warmers().size(), equalTo(1)); - ObjectObjectCursor> entry = getWarmersResponse.warmers().iterator().next(); - assertThat(entry.key, equalTo("test")); - assertThat(entry.value.size(), equalTo(1)); - assertThat(entry.value.iterator().next().name(), equalTo("custom_warmer")); - - DeleteWarmerResponse deleteWarmerResponse = client().admin().indices().prepareDeleteWarmer().setIndices("test").setNames("custom_warmer").get(); - assertThat(deleteWarmerResponse.isAcknowledged(), equalTo(true)); - - getWarmersResponse = client().admin().indices().prepareGetWarmers("test").get(); - assertThat(getWarmersResponse.warmers().size(), equalTo(0)); - } - - // issue 3246 - public void testEnsureThatIndexWarmersCanBeChangedOnRuntime() throws Exception { - createIndex("test"); - ensureGreen(); - - PutWarmerResponse putWarmerResponse = client().admin().indices().preparePutWarmer("custom_warmer") - .setSearchRequest(client().prepareSearch("test").setTypes("test").setQuery(QueryBuilders.matchAllQuery())) - .execute().actionGet(); - assertThat(putWarmerResponse.isAcknowledged(), equalTo(true)); - - client().prepareIndex("test", "test", "1").setSource("foo", "bar").setRefresh(true).execute().actionGet(); - - logger.info("--> Disabling warmers execution"); - client().admin().indices().prepareUpdateSettings("test").setSettings(Settings.builder().put("index.warmer.enabled", false)).execute().actionGet(); - - long warmerRunsAfterDisabling = getWarmerRuns(); - assertThat(warmerRunsAfterDisabling, greaterThanOrEqualTo(1L)); - - client().prepareIndex("test", "test", "2").setSource("foo2", "bar2").setRefresh(true).execute().actionGet(); - - assertThat(getWarmerRuns(), equalTo(warmerRunsAfterDisabling)); - } - - public void testGettingAllWarmersUsingAllAndWildcardsShouldWork() throws Exception { - createIndex("test"); - ensureGreen(); - - PutWarmerResponse putWarmerResponse = client().admin().indices().preparePutWarmer("custom_warmer") - .setSearchRequest(client().prepareSearch("test").setTypes("test").setQuery(QueryBuilders.matchAllQuery())) - .execute().actionGet(); - assertThat(putWarmerResponse.isAcknowledged(), equalTo(true)); - - PutWarmerResponse anotherPutWarmerResponse = client().admin().indices().preparePutWarmer("second_custom_warmer") - .setSearchRequest(client().prepareSearch("test").setTypes("test").setQuery(QueryBuilders.matchAllQuery())) - .execute().actionGet(); - assertThat(anotherPutWarmerResponse.isAcknowledged(), equalTo(true)); - - GetWarmersResponse getWarmersResponse = client().admin().indices().prepareGetWarmers("*").addWarmers("*").get(); - assertThat(getWarmersResponse.warmers().size(), is(1)); - - getWarmersResponse = client().admin().indices().prepareGetWarmers("_all").addWarmers("_all").get(); - assertThat(getWarmersResponse.warmers().size(), is(1)); - - getWarmersResponse = client().admin().indices().prepareGetWarmers("t*").addWarmers("c*").get(); - assertThat(getWarmersResponse.warmers().size(), is(1)); - - getWarmersResponse = client().admin().indices().prepareGetWarmers("test").addWarmers("custom_warmer", "second_custom_warmer").get(); - assertThat(getWarmersResponse.warmers().size(), is(1)); - } - - private long getWarmerRuns() { - IndicesStatsResponse indicesStatsResponse = client().admin().indices().prepareStats("test").clear().setWarmer(true).execute().actionGet(); - return indicesStatsResponse.getIndex("test").getPrimaries().warmer.total(); - } - - public void testQueryCacheOnWarmer() { - createIndex("test"); - ensureGreen(); - - assertAcked(client().admin().indices().prepareUpdateSettings("test").setSettings(Settings.builder().put(IndicesRequestCache.INDEX_CACHE_REQUEST_ENABLED, false))); - logger.info("register warmer with no query cache, validate no cache is used"); - assertAcked(client().admin().indices().preparePutWarmer("warmer_1") - .setSearchRequest(client().prepareSearch("test").setTypes("a1").setQuery(QueryBuilders.matchAllQuery())) - .get()); - - client().prepareIndex("test", "type1", "1").setSource("field", "value1").setRefresh(true).execute().actionGet(); - assertThat(client().admin().indices().prepareStats("test").setRequestCache(true).get().getTotal().getRequestCache().getMemorySizeInBytes(), equalTo(0l)); - - logger.info("register warmer with query cache, validate caching happened"); - assertAcked(client().admin().indices().preparePutWarmer("warmer_1") - .setSearchRequest(client().prepareSearch("test").setTypes("a1").setQuery(QueryBuilders.matchAllQuery()).setRequestCache(true)) - .get()); - - // index again, to make sure it gets refreshed - client().prepareIndex("test", "type1", "1").setSource("field", "value1").setRefresh(true).execute().actionGet(); - assertThat(client().admin().indices().prepareStats("test").setRequestCache(true).get().getTotal().getRequestCache().getMemorySizeInBytes(), greaterThan(0l)); - - client().admin().indices().prepareClearCache().setRequestCache(true).get(); // clean the cache - assertThat(client().admin().indices().prepareStats("test").setRequestCache(true).get().getTotal().getRequestCache().getMemorySizeInBytes(), equalTo(0l)); - - logger.info("enable default query caching on the index level, and test that no flag on warmer still caches"); - assertAcked(client().admin().indices().prepareUpdateSettings("test").setSettings(Settings.builder().put(IndicesRequestCache.INDEX_CACHE_REQUEST_ENABLED, true))); - - assertAcked(client().admin().indices().preparePutWarmer("warmer_1") - .setSearchRequest(client().prepareSearch("test").setTypes("a1").setQuery(QueryBuilders.matchAllQuery())) - .get()); - - // index again, to make sure it gets refreshed - client().prepareIndex("test", "type1", "1").setSource("field", "value1").setRefresh(true).execute().actionGet(); - assertThat(client().admin().indices().prepareStats("test").setRequestCache(true).get().getTotal().getRequestCache().getMemorySizeInBytes(), greaterThan(0l)); - } -} diff --git a/core/src/test/java/org/elasticsearch/rest/HeadersAndContextCopyClientTests.java b/core/src/test/java/org/elasticsearch/rest/HeadersAndContextCopyClientTests.java index 2a8299226c0..238e16d4b44 100644 --- a/core/src/test/java/org/elasticsearch/rest/HeadersAndContextCopyClientTests.java +++ b/core/src/test/java/org/elasticsearch/rest/HeadersAndContextCopyClientTests.java @@ -327,7 +327,6 @@ public class HeadersAndContextCopyClientTests extends ESTestCase { client.admin().indices().prepareCreate("test"), client.admin().indices().prepareAliases(), client.admin().indices().prepareAnalyze("text"), - client.admin().indices().prepareDeleteWarmer(), client.admin().indices().prepareTypesExists("type"), client.admin().indices().prepareClose() }; diff --git a/core/src/test/resources/indices/bwc/index-2.0.0.zip b/core/src/test/resources/indices/bwc/index-2.0.0.zip index 7110fb424a8..b16a37fffcd 100644 Binary files a/core/src/test/resources/indices/bwc/index-2.0.0.zip and b/core/src/test/resources/indices/bwc/index-2.0.0.zip differ diff --git a/core/src/test/resources/indices/bwc/index-2.0.1.zip b/core/src/test/resources/indices/bwc/index-2.0.1.zip index dccb7774fa6..3b1f32195e7 100644 Binary files a/core/src/test/resources/indices/bwc/index-2.0.1.zip and b/core/src/test/resources/indices/bwc/index-2.0.1.zip differ diff --git a/core/src/test/resources/indices/bwc/index-2.0.2.zip b/core/src/test/resources/indices/bwc/index-2.0.2.zip index 2f77405a831..447d37255d5 100644 Binary files a/core/src/test/resources/indices/bwc/index-2.0.2.zip and b/core/src/test/resources/indices/bwc/index-2.0.2.zip differ diff --git a/core/src/test/resources/indices/bwc/index-2.1.0.zip b/core/src/test/resources/indices/bwc/index-2.1.0.zip index 8c07e922260..23cc65b4ab5 100644 Binary files a/core/src/test/resources/indices/bwc/index-2.1.0.zip and b/core/src/test/resources/indices/bwc/index-2.1.0.zip differ diff --git a/core/src/test/resources/indices/bwc/index-2.1.1.zip b/core/src/test/resources/indices/bwc/index-2.1.1.zip index 74c967d2c61..fa255dfce1a 100644 Binary files a/core/src/test/resources/indices/bwc/index-2.1.1.zip and b/core/src/test/resources/indices/bwc/index-2.1.1.zip differ diff --git a/core/src/test/resources/indices/bwc/repo-2.0.0.zip b/core/src/test/resources/indices/bwc/repo-2.0.0.zip index 9605830a12c..60b01723f29 100644 Binary files a/core/src/test/resources/indices/bwc/repo-2.0.0.zip and b/core/src/test/resources/indices/bwc/repo-2.0.0.zip differ diff --git a/core/src/test/resources/indices/bwc/repo-2.0.1.zip b/core/src/test/resources/indices/bwc/repo-2.0.1.zip index 305820877bb..44701b8df59 100644 Binary files a/core/src/test/resources/indices/bwc/repo-2.0.1.zip and b/core/src/test/resources/indices/bwc/repo-2.0.1.zip differ diff --git a/core/src/test/resources/indices/bwc/repo-2.0.2.zip b/core/src/test/resources/indices/bwc/repo-2.0.2.zip index 696ffd939d5..eab763106f7 100644 Binary files a/core/src/test/resources/indices/bwc/repo-2.0.2.zip and b/core/src/test/resources/indices/bwc/repo-2.0.2.zip differ diff --git a/core/src/test/resources/indices/bwc/repo-2.1.0.zip b/core/src/test/resources/indices/bwc/repo-2.1.0.zip index 2f287ea3481..1165341de36 100644 Binary files a/core/src/test/resources/indices/bwc/repo-2.1.0.zip and b/core/src/test/resources/indices/bwc/repo-2.1.0.zip differ diff --git a/core/src/test/resources/indices/bwc/repo-2.1.1.zip b/core/src/test/resources/indices/bwc/repo-2.1.1.zip index 3253da62c3f..2b5bce15bc7 100644 Binary files a/core/src/test/resources/indices/bwc/repo-2.1.1.zip and b/core/src/test/resources/indices/bwc/repo-2.1.1.zip differ diff --git a/dev-tools/create_bwc_index.py b/dev-tools/create_bwc_index.py index 83a35941577..af5945a418e 100644 --- a/dev-tools/create_bwc_index.py +++ b/dev-tools/create_bwc_index.py @@ -257,10 +257,19 @@ def generate_index(client, version, index_name): # Same as ES default (5 GB), but missing the units to make sure they are inserted on upgrade: settings['merge.policy.max_merged_segment'] = '5368709120' + warmers = {} + warmers['warmer1'] = { + 'source': { + 'query': { + 'match_all': {} + } + } + } client.indices.create(index=index_name, body={ 'settings': settings, - 'mappings': mappings + 'mappings': mappings, + 'warmers': warmers }) health = client.cluster.health(wait_for_status='green', wait_for_relocating_shards=0) assert health['timed_out'] == False, 'cluster health timed out %s' % health diff --git a/docs/reference/cat/thread_pool.asciidoc b/docs/reference/cat/thread_pool.asciidoc index f50dc369c3d..eb566f20fee 100644 --- a/docs/reference/cat/thread_pool.asciidoc +++ b/docs/reference/cat/thread_pool.asciidoc @@ -63,7 +63,7 @@ Currently available <>: |`search` |`s` |Thread pool used for <>/<> operations |`snapshot` |`sn` |Thread pool used for <> operations |`suggest` |`su` |Thread pool used for <> operations -|`warmer` |`w` |Thread pool used for <> operations +|`warmer` |`w` |Thread pool used for index warm-up operations |======================================================================= The thread pool name (or alias) must be combined with a thread pool field below diff --git a/docs/reference/indices.asciidoc b/docs/reference/indices.asciidoc index da41ac52df5..7543a3f0bbb 100644 --- a/docs/reference/indices.asciidoc +++ b/docs/reference/indices.asciidoc @@ -4,8 +4,7 @@ [partintro] -- The indices APIs are used to manage individual indices, -index settings, aliases, mappings, index templates -and warmers. +index settings, aliases, mappings, and index templates. [float] [[index-management]] @@ -38,7 +37,6 @@ and warmers. * <> * <> * <> -* <> [float] [[shadow-replicas]] @@ -92,8 +90,6 @@ include::indices/analyze.asciidoc[] include::indices/templates.asciidoc[] -include::indices/warmers.asciidoc[] - include::indices/shadow-replicas.asciidoc[] include::indices/stats.asciidoc[] diff --git a/docs/reference/indices/create-index.asciidoc b/docs/reference/indices/create-index.asciidoc index 52a867958ef..b5cd6c3aea1 100644 --- a/docs/reference/indices/create-index.asciidoc +++ b/docs/reference/indices/create-index.asciidoc @@ -86,27 +86,6 @@ curl -XPOST localhost:9200/test -d '{ }' -------------------------------------------------- -[float] -[[warmers]] -=== Warmers - -The create index API allows also to provide a set of <>: - -[source,js] --------------------------------------------------- -curl -XPUT localhost:9200/test -d '{ - "warmers" : { - "warmer_1" : { - "source" : { - "query" : { - ... - } - } - } - } -}' --------------------------------------------------- - [float] [[create-index-aliases]] === Aliases diff --git a/docs/reference/indices/get-index.asciidoc b/docs/reference/indices/get-index.asciidoc index 78cfa074550..b82bee05630 100644 --- a/docs/reference/indices/get-index.asciidoc +++ b/docs/reference/indices/get-index.asciidoc @@ -27,4 +27,4 @@ $ curl -XGET 'http://localhost:9200/twitter/_settings,_mappings' The above command will only return the settings and mappings for the index called `twitter`. -The available features are `_settings`, `_mappings`, `_warmers` and `_aliases`. \ No newline at end of file +The available features are `_settings`, `_mappings` and `_aliases`. diff --git a/docs/reference/indices/warmers.asciidoc b/docs/reference/indices/warmers.asciidoc deleted file mode 100644 index b8f670af73a..00000000000 --- a/docs/reference/indices/warmers.asciidoc +++ /dev/null @@ -1,194 +0,0 @@ -[[indices-warmers]] -== Warmers - -Index warming allows to run registered search requests to warm up the index -before it is available for search. With the near real time aspect of search, -cold data (segments) will be warmed up before they become available for search. -This includes things such as the filter cache, filesystem cache, and loading -field data for fields. - -Warmup searches typically include requests that require heavy loading of -data, such as aggregations or sorting on specific fields. The warmup APIs -allows to register warmup (search) under specific names, remove them, -and get them. - -Index warmup can be disabled by setting `index.warmer.enabled` to -`false`. It is supported as a realtime setting using update settings -API. This can be handy when doing initial bulk indexing: disable pre -registered warmers to make indexing faster and less expensive and then -enable it. - -[float] -[[creation]] -=== Index Creation / Templates - -Warmers can be registered when an index gets created, for example: - -[source,js] --------------------------------------------------- -curl -XPUT localhost:9200/test -d '{ - "warmers" : { - "warmer_1" : { - "types" : [], - "source" : { - "query" : { - ... - }, - "aggs" : { - ... - } - } - } - } -}' --------------------------------------------------- - -Or, in an index template: - -[source,js] --------------------------------------------------- -curl -XPUT localhost:9200/_template/template_1 -d ' -{ - "template" : "te*", - "warmers" : { - "warmer_1" : { - "types" : [], - "source" : { - "query" : { - ... - }, - "aggs" : { - ... - } - } - } - } -}' --------------------------------------------------- - -On the same level as `types` and `source`, the `request_cache` flag is supported -to enable request caching for the warmed search request. If not specified, it will -use the index level configuration of query caching. - -[float] -[[warmer-adding]] -=== Put Warmer - -Allows to put a warmup search request on a specific index (or indices), -with the body composing of a regular search request. Types can be -provided as part of the URI if the search request is designed to be run -only against the specific types. - -Here is an example that registers a warmup called `warmer_1` against -index `test` (can be alias or several indices), for a search request -that runs against all types: - -[source,js] --------------------------------------------------- -curl -XPUT localhost:9200/test/_warmer/warmer_1 -d '{ - "query" : { - "match_all" : {} - }, - "aggs" : { - "aggs_1" : { - "terms" : { - "field" : "field" - } - } - } -}' --------------------------------------------------- - -And an example that registers a warmup against specific types: - -[source,js] --------------------------------------------------- -curl -XPUT localhost:9200/test/type1/_warmer/warmer_1 -d '{ - "query" : { - "match_all" : {} - }, - "aggs" : { - "aggs_1" : { - "terms" : { - "field" : "field" - } - } - } -}' --------------------------------------------------- - -All options: - -[source,js] --------------------------------------------------- - -PUT _warmer/{warmer_name} - -PUT /{index}/_warmer/{warmer_name} - -PUT /{index}/{type}/_warmer/{warmer_name} - --------------------------------------------------- - - -where - -[horizontal] -`{index}`:: `* | _all | glob pattern | name1, name2, …` - -`{type}`:: `* | _all | glob pattern | name1, name2, …` - -Instead of `_warmer` you can also use the plural `_warmers`. - -The `request_cache` parameter can be used to enable request caching for -the search request. If not specified, it will use the index level configuration -of query caching. - - -[float] -[[removing]] -=== Delete Warmers - -Warmers can be deleted using the following endpoint: - - - -[source,js] --------------------------------------------------- - -[DELETE] /{index}/_warmer/{name} - --------------------------------------------------- - - -where - -[horizontal] -`{index}`:: `* | _all | glob pattern | name1, name2, …` - -`{name}`:: `* | _all | glob pattern | name1, name2, …` - -Instead of `_warmer` you can also use the plural `_warmers`. - -[float] -[[warmer-retrieving]] -=== GETting Warmer - -Getting a warmer for specific index (or alias, or several indices) based -on its name. The provided name can be a simple wildcard expression or -omitted to get all warmers. - -Some examples: - -[source,js] --------------------------------------------------- -# get warmer named warmer_1 on test index -curl -XGET localhost:9200/test/_warmer/warmer_1 - -# get all warmers that start with warm on test index -curl -XGET localhost:9200/test/_warmer/warm* - -# get all warmers for test index -curl -XGET localhost:9200/test/_warmer/ --------------------------------------------------- - diff --git a/docs/reference/mapping/dynamic-mapping.asciidoc b/docs/reference/mapping/dynamic-mapping.asciidoc index 0f445ac6152..beb7d4360d4 100644 --- a/docs/reference/mapping/dynamic-mapping.asciidoc +++ b/docs/reference/mapping/dynamic-mapping.asciidoc @@ -33,7 +33,7 @@ purposes with: Custom rules to configure the mapping for dynamically added fields. TIP: <> allow you to configure the default -mappings, settings, aliases, and warmers for new indices, whether created +mappings, settings and aliases for new indices, whether created automatically or explicitly. diff --git a/docs/reference/migration/migrate_1_0.asciidoc b/docs/reference/migration/migrate_1_0.asciidoc index c8750d11b82..f8cfad2f71c 100644 --- a/docs/reference/migration/migrate_1_0.asciidoc +++ b/docs/reference/migration/migrate_1_0.asciidoc @@ -144,7 +144,7 @@ In the future we will also provide plural versions to allow putting multiple map See <>, <>, <>, <>, <>, -<>, and <> for more details. +`warmers`, and <> for more details. === Index request diff --git a/docs/reference/migration/migrate_1_4.asciidoc b/docs/reference/migration/migrate_1_4.asciidoc index 03a4c1fe741..eecf9ca13e7 100644 --- a/docs/reference/migration/migrate_1_4.asciidoc +++ b/docs/reference/migration/migrate_1_4.asciidoc @@ -32,7 +32,7 @@ Add or update a mapping via the <> or [float] === Indices APIs -The <> will return a section for `warmers` even if there are +The get warmer api will return a section for `warmers` even if there are no warmers. This ensures that the following two examples are equivalent: [source,js] diff --git a/docs/reference/migration/migrate_3_0.asciidoc b/docs/reference/migration/migrate_3_0.asciidoc index e0e6c720401..d3c0b5a2d7a 100644 --- a/docs/reference/migration/migrate_3_0.asciidoc +++ b/docs/reference/migration/migrate_3_0.asciidoc @@ -17,6 +17,16 @@ your application to Elasticsearch 3.0. * <> [[breaking_30_search_changes]] +=== Warmers + +Thanks to several changes like doc values by default or disk-based norms, +warmers have become quite useless. As a consequence, warmers and the warmer +API have been removed: it is not possible anymore to register queries that +will run before a new IndexSearcher is published. + +Don't worry if you have warmers defined on your indices, they will simply be +ignored when upgrading to 3.0. + === Search changes ==== `search_type=count` removed @@ -593,4 +603,4 @@ The percolator by defaults sets the `size` option to `10` whereas before this wa The percolate api can no longer accept documents that have fields that don't exist in the mapping. When percolating an existing document then specifying a document in the source of the percolate request is not allowed -any more. \ No newline at end of file +any more. diff --git a/docs/reference/redirects.asciidoc b/docs/reference/redirects.asciidoc index 823bdb70d07..322c9e7308e 100644 --- a/docs/reference/redirects.asciidoc +++ b/docs/reference/redirects.asciidoc @@ -443,3 +443,9 @@ The `not` query has been replaced by using a `mustNot` clause in a Boolean query === Nested type The docs for the `nested` field datatype have moved to <>. + +[role="exclude",id="indices-warmers"] +=== Warmers + +Warmers have been removed. There have been significant improvements to the +index that make warmers not necessary anymore. diff --git a/rest-api-spec/src/main/resources/rest-api-spec/api/indices.delete_warmer.json b/rest-api-spec/src/main/resources/rest-api-spec/api/indices.delete_warmer.json deleted file mode 100644 index 7284da6291a..00000000000 --- a/rest-api-spec/src/main/resources/rest-api-spec/api/indices.delete_warmer.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "indices.delete_warmer": { - "documentation": "http://www.elastic.co/guide/en/elasticsearch/reference/master/indices-warmers.html", - "methods": ["DELETE"], - "url": { - "path": "/{index}/_warmer/{name}", - "paths": ["/{index}/_warmer/{name}", "/{index}/_warmers/{name}"], - "parts": { - "index": { - "type" : "list", - "required" : true, - "description" : "A comma-separated list of index names to delete warmers from (supports wildcards); use `_all` to perform the operation on all indices." - }, - "name" : { - "type" : "list", - "required" : true, - "description" : "A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters." - } - }, - "params": { - "master_timeout": { - "type" : "time", - "description" : "Specify timeout for connection to master" - }, - "name" : { - "type" : "list", - "description" : "A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters." - } - } - }, - "body": null - } -} diff --git a/rest-api-spec/src/main/resources/rest-api-spec/api/indices.get.json b/rest-api-spec/src/main/resources/rest-api-spec/api/indices.get.json index 5c426f962a7..2c0c59f6898 100644 --- a/rest-api-spec/src/main/resources/rest-api-spec/api/indices.get.json +++ b/rest-api-spec/src/main/resources/rest-api-spec/api/indices.get.json @@ -14,7 +14,7 @@ "feature":{ "type":"list", "description":"A comma-separated list of features", - "options": ["_settings", "_mappings", "_warmers", "_aliases"] + "options": ["_settings", "_mappings", "_aliases"] } }, "params":{ diff --git a/rest-api-spec/src/main/resources/rest-api-spec/api/indices.get_warmer.json b/rest-api-spec/src/main/resources/rest-api-spec/api/indices.get_warmer.json deleted file mode 100644 index fbd7abbc34c..00000000000 --- a/rest-api-spec/src/main/resources/rest-api-spec/api/indices.get_warmer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "indices.get_warmer": { - "documentation": "http://www.elastic.co/guide/en/elasticsearch/reference/master/indices-warmers.html", - "methods": ["GET"], - "url": { - "path": "/_warmer", - "paths": [ "/_warmer", "/{index}/_warmer", "/{index}/_warmer/{name}", "/_warmer/{name}", "/{index}/{type}/_warmer/{name}"], - "parts": { - "index": { - "type" : "list", - "description" : "A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices" - }, - "name": { - "type" : "list", - "description" : "The name of the warmer (supports wildcards); leave empty to get all warmers" - }, - "type": { - "type" : "list", - "description" : "A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types" - } - }, - "params": { - "ignore_unavailable": { - "type" : "boolean", - "description" : "Whether specified concrete indices should be ignored when unavailable (missing or closed)" - }, - "allow_no_indices": { - "type" : "boolean", - "description" : "Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)" - }, - "expand_wildcards": { - "type" : "enum", - "options" : ["open","closed","none","all"], - "default" : "open", - "description" : "Whether to expand wildcard expression to concrete indices that are open, closed or both." - }, - "local": { - "type": "boolean", - "description": "Return local information, do not retrieve the state from master node (default: false)" - } - } - }, - "body": null - } -} diff --git a/rest-api-spec/src/main/resources/rest-api-spec/api/indices.put_warmer.json b/rest-api-spec/src/main/resources/rest-api-spec/api/indices.put_warmer.json deleted file mode 100644 index 9039367d15f..00000000000 --- a/rest-api-spec/src/main/resources/rest-api-spec/api/indices.put_warmer.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "indices.put_warmer": { - "documentation": "http://www.elastic.co/guide/en/elasticsearch/reference/master/indices-warmers.html", - "methods": ["PUT", "POST"], - "url": { - "path": "/{index}/_warmer/{name}", - "paths": ["/_warmer/{name}", "/{index}/_warmer/{name}", "/{index}/{type}/_warmer/{name}", "/_warmers/{name}", "/{index}/_warmers/{name}", "/{index}/{type}/_warmers/{name}"], - "parts": { - "index": { - "type" : "list", - "description" : "A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices" - }, - "name": { - "type" : "string", - "required" : true, - "description" : "The name of the warmer" - }, - "type": { - "type" : "list", - "description" : "A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types" - } - }, - "params": { - "master_timeout": { - "type" : "time", - "description" : "Specify timeout for connection to master" - }, - "ignore_unavailable": { - "type" : "boolean", - "description" : "Whether specified concrete indices should be ignored when unavailable (missing or closed) in the search request to warm" - }, - "allow_no_indices": { - "type" : "boolean", - "description" : "Whether to ignore if a wildcard indices expression resolves into no concrete indices in the search request to warm. (This includes `_all` string or when no indices have been specified)" - }, - "expand_wildcards": { - "type" : "enum", - "options" : ["open","closed","none","all"], - "default" : "open", - "description" : "Whether to expand wildcard expression to concrete indices that are open, closed or both, in the search request to warm." - }, - "request_cache": { - "type" : "boolean", - "description" : "Specify whether the request to be warmed should use the request cache, defaults to index level setting" - } - } - }, - "body": { - "description" : "The search request definition for the warmer (query, filters, facets, sorting, etc)", - "required" : true - } - } -} diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.create/10_basic.yaml b/rest-api-spec/src/main/resources/rest-api-spec/test/indices.create/10_basic.yaml index acb4da22716..3fc0e00d637 100644 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.create/10_basic.yaml +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/indices.create/10_basic.yaml @@ -30,25 +30,6 @@ - match: { test_index.settings.index.number_of_replicas: "0"} ---- -"Create index with warmers": - - - do: - indices.create: - index: test_index - body: - warmers: - test_warmer: - source: - query: - match_all: {} - - - do: - indices.get_warmer: - index: test_index - - - match: {test_index.warmers.test_warmer.source.query.match_all: {}} - --- "Create index with aliases": @@ -81,49 +62,3 @@ - match: {test_index.aliases.test_clias.filter.term.field: value} - is_false: test_index.aliases.test_clias.index_routing - is_false: test_index.aliases.test_clias.search_routing - ---- -"Create index with mappings, settings, warmers and aliases": - - - do: - indices.create: - index: test_index - body: - mappings: - type_1: {} - settings: - number_of_replicas: "0" - warmers: - test_warmer: - source: - query: - match_all: {} - aliases: - test_alias: {} - test_blias: {routing: b} - - - do: - indices.get_mapping: - index: test_index - - - match: { test_index.mappings.type_1: {}} - - - do: - indices.get_settings: - index: test_index - - - match: { test_index.settings.index.number_of_replicas: "0"} - - - do: - indices.get_warmer: - index: test_index - - - match: { test_index.warmers.test_warmer.source.query.match_all: {}} - - - do: - indices.get_alias: - index: test_index - - - match: { test_index.aliases.test_alias: {}} - - match: { test_index.aliases.test_blias.search_routing: b} - - match: { test_index.aliases.test_blias.index_routing: b} diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.delete_warmer/all_path_options.yaml b/rest-api-spec/src/main/resources/rest-api-spec/test/indices.delete_warmer/all_path_options.yaml deleted file mode 100644 index 603b01c15a6..00000000000 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.delete_warmer/all_path_options.yaml +++ /dev/null @@ -1,218 +0,0 @@ -setup: - - do: - indices.create: - index: test_index1 - body: - warmers: - test_warmer1: - source: - query: - match_all: {} - test_warmer2: - source: - query: - match_all: {} - - - do: - indices.create: - index: test_index2 - body: - warmers: - test_warmer1: - source: - query: - match_all: {} - test_warmer2: - source: - query: - match_all: {} - - - do: - indices.create: - index: foo - body: - warmers: - test_warmer1: - source: - query: - match_all: {} - test_warmer2: - source: - query: - match_all: {} - ---- -"Check setup": - - - do: - indices.get_warmer: { index: _all, name: '*' } - - - match: {test_index1.warmers.test_warmer1.source.query.match_all: {}} - - match: {test_index1.warmers.test_warmer2.source.query.match_all: {}} - - match: {test_index2.warmers.test_warmer1.source.query.match_all: {}} - - match: {test_index2.warmers.test_warmer2.source.query.match_all: {}} - - match: {foo.warmers.test_warmer1.source.query.match_all: {}} - - match: {foo.warmers.test_warmer2.source.query.match_all: {}} - - ---- -"check delete with _all index": - - do: - indices.delete_warmer: - index: _all - name: test_warmer1 - - - do: - indices.get_warmer: {} - - - match: {test_index1.warmers.test_warmer2.source.query.match_all: {}} - - match: {test_index2.warmers.test_warmer2.source.query.match_all: {}} - - match: {foo.warmers.test_warmer2.source.query.match_all: {}} - ---- -"check delete with * index": - - do: - indices.delete_warmer: - index: "*" - name: test_warmer1 - - - do: - indices.get_warmer: {} - - - match: {test_index1.warmers.test_warmer2.source.query.match_all: {}} - - match: {test_index2.warmers.test_warmer2.source.query.match_all: {}} - - match: {foo.warmers.test_warmer2.source.query.match_all: {}} - ---- -"check delete with index list": - - do: - indices.delete_warmer: - index: "test_index1,test_index2" - name: test_warmer1 - - - do: - indices.get_warmer: { index: _all, name: 'test_warmer1' } - - - match: {foo.warmers.test_warmer1.source.query.match_all: {}} - - is_false: test_index1 - - is_false: test_index2 - - - do: - indices.get_warmer: { index: _all, name: 'test_warmer2' } - - - match: {test_index1.warmers.test_warmer2.source.query.match_all: {}} - - match: {test_index2.warmers.test_warmer2.source.query.match_all: {}} - - match: {foo.warmers.test_warmer2.source.query.match_all: {}} - ---- -"check delete with prefix* index": - - do: - indices.delete_warmer: - index: "test_*" - name: test_warmer1 - - - do: - indices.get_warmer: { index: _all, name: 'test_warmer1' } - - - match: {foo.warmers.test_warmer1.source.query.match_all: {}} - - is_false: test_index1 - - is_false: test_index2 - - - do: - indices.get_warmer: { index: _all, name: 'test_warmer2' } - - - match: {test_index1.warmers.test_warmer2.source.query.match_all: {}} - - match: {test_index2.warmers.test_warmer2.source.query.match_all: {}} - - match: {foo.warmers.test_warmer2.source.query.match_all: {}} - - ---- -"check delete with index list and * warmers": - - do: - indices.delete_warmer: - index: "test_index1,test_index2" - name: "*" - - - do: - indices.get_warmer: { index: _all, name: 'test_warmer1' } - - - match: {foo.warmers.test_warmer1.source.query.match_all: {}} - - is_false: test_index1 - - is_false: test_index2 - - - do: - indices.get_warmer: { index: _all, name: 'test_warmer2' } - - - match: {foo.warmers.test_warmer2.source.query.match_all: {}} - - is_false: test_index1 - - is_false: test_index2 - ---- -"check delete with index list and _all warmers": - - do: - indices.delete_warmer: - index: "test_index1,test_index2" - name: _all - - - do: - indices.get_warmer: { index: _all, name: 'test_warmer1' } - - - match: {foo.warmers.test_warmer1.source.query.match_all: {}} - - is_false: test_index1 - - is_false: test_index2 - - - do: - indices.get_warmer: { index: _all, name: 'test_warmer2' } - - - match: {foo.warmers.test_warmer2.source.query.match_all: {}} - - is_false: test_index1 - - is_false: test_index2 - ---- -"check delete with index list and wildcard warmers": - - do: - indices.delete_warmer: - index: "test_index1,test_index2" - name: "*1" - - - do: - indices.get_warmer: { index: _all, name: 'test_warmer1' } - - - match: {foo.warmers.test_warmer1.source.query.match_all: {}} - - is_false: test_index1 - - is_false: test_index2 - - - do: - indices.get_warmer: { index: _all, name: 'test_warmer2' } - - - match: {test_index1.warmers.test_warmer2.source.query.match_all: {}} - - match: {test_index2.warmers.test_warmer2.source.query.match_all: {}} - - match: {foo.warmers.test_warmer2.source.query.match_all: {}} - ---- -"check 404 on no matching test_warmer": - - do: - catch: missing - indices.delete_warmer: - index: "*" - name: "non_existent" - - - do: - catch: missing - indices.delete_warmer: - index: "non_existent" - name: "test_warmer1" - - ---- -"check delete with blank index and blank test_warmer": - - do: - catch: param - indices.delete_warmer: - name: "test_warmer1" - - - do: - catch: param - indices.delete_warmer: - index: "test_index1" - diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.get/10_basic.yaml b/rest-api-spec/src/main/resources/rest-api-spec/test/indices.get/10_basic.yaml index 4c5251b36a3..218d1e0433c 100644 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.get/10_basic.yaml +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/indices.get/10_basic.yaml @@ -10,11 +10,6 @@ setup: test_blias: {} mappings: type_1: {} - warmers: - test_warmer: - source: - query: - match_all: {} settings: number_of_shards: 1 number_of_replicas: 1 @@ -59,7 +54,6 @@ setup: - is_true: test_index.aliases - is_true: test_index.settings - - is_true: test_index.warmers - is_true: test_index.mappings --- @@ -73,20 +67,6 @@ setup: - is_true: test_index.mappings - is_false: test_index.aliases - is_false: test_index.settings - - is_false: test_index.warmers - ---- -"Get index infos for mappings and warmers only": - - - do: - indices.get: - index: test_index - feature: _mapping,_warmer - - - is_true: test_index.mappings - - is_true: test_index.warmers - - is_false: test_index.aliases - - is_false: test_index.settings --- "Get index infos should work on aliases": @@ -94,10 +74,9 @@ setup: - do: indices.get: index: test_blias - feature: _mapping,_warmer + feature: _mapping - is_true: test_index.mappings - - is_true: test_index.warmers - is_false: test_index.aliases - is_false: test_index.settings @@ -113,7 +92,6 @@ setup: - is_true: test_index.settings - is_true: test_index_2.settings - is_false: test_index.aliases - - is_false: test_index.warmers --- "Get index infos with human settings should return index creation date and version in readable format": diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.get_warmer/10_basic.yaml b/rest-api-spec/src/main/resources/rest-api-spec/test/indices.get_warmer/10_basic.yaml deleted file mode 100644 index 668a6119c3d..00000000000 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.get_warmer/10_basic.yaml +++ /dev/null @@ -1,201 +0,0 @@ ---- -setup: - - do: - indices.create: - index: test_1 - body: - warmers: - warmer_1: - source: { query: { match_all: { }}} - warmer_2: - source: { query: { match_all: { }}} - - - - do: - indices.create: - index: test_2 - body: - warmers: - warmer_2: - source: { query: { match_all: { }}} - warmer_3: - source: { query: { match_all: { }}} - - - do: - cluster.health: - wait_for_status: yellow - ---- -"Get /_warmer": - - - do: - indices.get_warmer: {} - - - match: { test_1.warmers.warmer_1.source.query.match_all: {}} - - match: { test_1.warmers.warmer_2.source.query.match_all: {}} - - match: { test_2.warmers.warmer_2.source.query.match_all: {}} - - match: { test_2.warmers.warmer_3.source.query.match_all: {}} - ---- -"Get /{index}/_warmer": - - - do: - indices.get_warmer: - index: test_1 - - - match: { test_1.warmers.warmer_1.source.query.match_all: {}} - - match: { test_1.warmers.warmer_2.source.query.match_all: {}} - - is_false: test_2 - - ---- -"Get /{index}/_warmer/_all": - - - do: - indices.get_warmer: - index: test_1 - name: _all - - - match: { test_1.warmers.warmer_1.source.query.match_all: {}} - - match: { test_1.warmers.warmer_2.source.query.match_all: {}} - - is_false: test_2 - ---- -"Get /{index}/_warmer/*": - - - do: - indices.get_warmer: - index: test_1 - name: '*' - - - match: { test_1.warmers.warmer_1.source.query.match_all: {}} - - match: { test_1.warmers.warmer_2.source.query.match_all: {}} - - is_false: test_2 - ---- -"Get /{index}/_warmer/{name}": - - - do: - indices.get_warmer: - index: test_1 - name: warmer_1 - - - match: { test_1.warmers.warmer_1.source.query.match_all: {}} - - is_false: test_1.warmers.warmer_2 - - is_false: test_2 - ---- -"Get /{index}/_warmer/{name,name}": - - - do: - indices.get_warmer: - index: test_1 - name: warmer_1,warmer_2 - - - match: { test_1.warmers.warmer_1.source.query.match_all: {}} - - match: { test_1.warmers.warmer_2.source.query.match_all: {}} - - is_false: test_2 - ---- -"Get /{index}/_warmer/{name*}": - - - do: - indices.get_warmer: - index: test_1 - name: '*2' - - - match: { test_1.warmers.warmer_2.source.query.match_all: {}} - - is_false: test_1.warmers.warmer_1 - - is_false: test_2 - ---- -"Get /_warmer/{name}": - - - do: - indices.get_warmer: - name: warmer_2 - - - match: { test_1.warmers.warmer_2.source.query.match_all: {}} - - match: { test_2.warmers.warmer_2.source.query.match_all: {}} - - is_false: test_1.warmers.warmer_1 - - is_false: test_2.warmers.warmer_3 - ---- -"Get /_all/_warmer/{name}": - - - do: - indices.get_warmer: - index: _all - name: warmer_2 - - - match: { test_1.warmers.warmer_2.source.query.match_all: {}} - - match: { test_2.warmers.warmer_2.source.query.match_all: {}} - - is_false: test_1.warmers.warmer_1 - - is_false: test_2.warmers.warmer_3 - ---- -"Get /*/_warmer/{name}": - - - do: - indices.get_warmer: - index: '*' - name: warmer_2 - - - match: { test_1.warmers.warmer_2.source.query.match_all: {}} - - match: { test_2.warmers.warmer_2.source.query.match_all: {}} - - is_false: test_1.warmers.warmer_1 - - is_false: test_2.warmers.warmer_3 - ---- -"Get /index,index/_warmer/{name}": - - - do: - indices.get_warmer: - index: test_1,test_2 - name: warmer_2 - - - match: { test_1.warmers.warmer_2.source.query.match_all: {}} - - match: { test_2.warmers.warmer_2.source.query.match_all: {}} - - is_false: test_2.warmers.warmer_3 - ---- -"Get /index*/_warmer/{name}": - - - do: - indices.get_warmer: - index: '*2' - name: warmer_2 - - - match: { test_2.warmers.warmer_2.source.query.match_all: {}} - - is_false: test_1 - - is_false: test_2.warmers.warmer_3 - ---- -"Empty response when no matching warmer": - - - do: - indices.get_warmer: - index: '*' - name: non_existent - - - match: { '': {}} - ---- -"Throw 404 on missing index": - - - do: - catch: missing - indices.get_warmer: - index: non_existent - name: '*' - ---- -"Get /_warmer with local flag": - - - do: - indices.get_warmer: - local: true - - - is_true: test_1 - - is_true: test_2 - diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.get_warmer/20_empty.yaml b/rest-api-spec/src/main/resources/rest-api-spec/test/indices.get_warmer/20_empty.yaml deleted file mode 100644 index 702b0cd01d1..00000000000 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.get_warmer/20_empty.yaml +++ /dev/null @@ -1,19 +0,0 @@ ---- -setup: - - - do: - indices.create: - index: test_1 - - - do: - indices.create: - index: test_2 - ---- -"Check empty warmers when getting all warmers via /_warmer": - - - do: - indices.get_warmer: {} - - - match: { test_1.warmers: {}} - - match: { test_2.warmers: {}} diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.put_warmer/10_basic.yaml b/rest-api-spec/src/main/resources/rest-api-spec/test/indices.put_warmer/10_basic.yaml deleted file mode 100644 index 7e4c57429ec..00000000000 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.put_warmer/10_basic.yaml +++ /dev/null @@ -1,145 +0,0 @@ ---- -setup: - - do: - indices.create: - index: test_index - - - do: - indices.create: - index: test_idx - - - do: - cluster.health: - wait_for_status: yellow - - - do: - indices.put_warmer: - index: test_idx - name: test_warmer2 - body: - query: - match_all: {} - - - do: - indices.put_warmer: - index: test_index - name: test_warmer - body: - query: - match_all: {} - ---- -"Basic test for warmers": - - do: - indices.get_warmer: - index: test_index - name: test_warmer - - - match: {test_index.warmers.test_warmer.source.query.match_all: {boost: 1.0}} - - - do: - indices.delete_warmer: - index: test_index - name: test_warmer - - - do: - indices.get_warmer: - index: test_index - name: test_warmer - - - match: { '': {}} - ---- -"Getting all warmers via /_warmer should work": - - - do: - indices.get_warmer: {} - - - match: {test_index.warmers.test_warmer.source.query.match_all: {boost: 1.0}} - - match: {test_idx.warmers.test_warmer2.source.query.match_all: {boost: 1.0}} - - ---- -"Getting warmers for several indices should work using *": - - - do: - indices.get_warmer: - index: '*' - name: '*' - - - match: {test_index.warmers.test_warmer.source.query.match_all: {boost: 1.0}} - - match: {test_idx.warmers.test_warmer2.source.query.match_all: {boost: 1.0}} - ---- -"Getting warmers for several indices should work using _all": - - - do: - indices.get_warmer: - index: _all - name: _all - - - match: {test_index.warmers.test_warmer.source.query.match_all: {boost: 1.0}} - - match: {test_idx.warmers.test_warmer2.source.query.match_all: {boost: 1.0}} - ---- -"Getting all warmers without specifying index should work": - - - do: - indices.get_warmer: - name: _all - - - match: {test_index.warmers.test_warmer.source.query.match_all: {boost: 1.0}} - - match: {test_idx.warmers.test_warmer2.source.query.match_all: {boost: 1.0}} - ---- -"Getting warmers for several indices should work using prefix*": - - - do: - indices.get_warmer: - index: test_i* - name: test_w* - - - match: {test_index.warmers.test_warmer.source.query.match_all: {boost: 1.0}} - - match: {test_idx.warmers.test_warmer2.source.query.match_all: {boost: 1.0}} - ---- -"Getting warmers for several indices should work using comma-separated lists": - - - do: - indices.get_warmer: - index: test_index,test_idx - name: test_warmer,test_warmer2 - - - match: {test_index.warmers.test_warmer.source.query.match_all: {boost: 1.0}} - - match: {test_idx.warmers.test_warmer2.source.query.match_all: {boost: 1.0}} - ---- -"Getting a non-existent warmer on an existing index should return an empty body": - - - do: - indices.get_warmer: - index: test_index - name: non-existent - - - match: { '': {}} - ---- -"Getting an existent and non-existent warmer should return the existent and no data about the non-existent warmer": - - - do: - indices.get_warmer: - index: test_index - name: test_warmer,non-existent - - - match: {test_index.warmers.test_warmer.source.query.match_all: {boost: 1.0}} - - is_false: test_index.warmers.non-existent - ---- -"Getting warmer on an non-existent index should return 404": - - - do: - catch: missing - indices.get_warmer: - index: non-existent - name: foo - diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.put_warmer/20_aliases.yaml b/rest-api-spec/src/main/resources/rest-api-spec/test/indices.put_warmer/20_aliases.yaml deleted file mode 100644 index b8a2fa6b27e..00000000000 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.put_warmer/20_aliases.yaml +++ /dev/null @@ -1,30 +0,0 @@ ---- -"Getting warmer for aliases should return the real index as key": - - - do: - indices.create: - index: test_index - - - do: - cluster.health: - wait_for_status: yellow - - - do: - indices.put_warmer: - index: test_index - name: test_warmer - body: - query: - match_all: {} - - - do: - indices.put_alias: - index: test_index - name: test_alias - - - do: - indices.get_warmer: - index: test_alias - - - match: {test_index.warmers.test_warmer.source.query.match_all: {boost: 1.0}} - diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.put_warmer/all_path_options.yaml b/rest-api-spec/src/main/resources/rest-api-spec/test/indices.put_warmer/all_path_options.yaml deleted file mode 100644 index ffad427101a..00000000000 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/indices.put_warmer/all_path_options.yaml +++ /dev/null @@ -1,134 +0,0 @@ ---- -setup: - - - do: - indices.create: - index: test_index1 - - - do: - indices.create: - index: test_index2 - - - do: - indices.create: - index: foo - - - do: - cluster.health: - wait_for_status: yellow - ---- -"put warmer per index": - - - do: - indices.put_warmer: - index: test_index1 - name: warmer - body: - query: - match_all: {} - - do: - indices.put_warmer: - index: test_index2 - name: warmer - body: - query: - match_all: {} - - - do: - indices.get_warmer: { index: _all, name: '*' } - - - match: {test_index1.warmers.warmer.source.query.match_all: {boost: 1.0}} - - match: {test_index2.warmers.warmer.source.query.match_all: {boost: 1.0}} - - is_false: foo - ---- -"put warmer in _all index": - - do: - indices.put_warmer: - index: _all - name: warmer - body: - query: - match_all: {} - - do: - indices.get_warmer: { index: _all, name: '*' } - - - match: {test_index1.warmers.warmer.source.query.match_all: {boost: 1.0}} - - match: {test_index2.warmers.warmer.source.query.match_all: {boost: 1.0}} - - match: {foo.warmers.warmer.source.query.match_all: {boost: 1.0}} - ---- -"put warmer in * index": - - do: - indices.put_warmer: - index: "*" - name: warmer - body: - query: - match_all: {} - - do: - indices.get_warmer: { index: _all, name: '*' } - - - match: {test_index1.warmers.warmer.source.query.match_all: {boost: 1.0}} - - match: {test_index2.warmers.warmer.source.query.match_all: {boost: 1.0}} - - match: {foo.warmers.warmer.source.query.match_all: {boost: 1.0}} - ---- -"put warmer prefix* index": - - do: - indices.put_warmer: - index: "test_index*" - name: warmer - body: - query: - match_all: {} - - do: - indices.get_warmer: { index: _all, name: '*' } - - - match: {test_index1.warmers.warmer.source.query.match_all: {boost: 1.0}} - - match: {test_index2.warmers.warmer.source.query.match_all: {boost: 1.0}} - - is_false: foo - ---- -"put warmer in list of indices": - - do: - indices.put_warmer: - index: [test_index1, test_index2] - name: warmer - body: - query: - match_all: {} - - do: - indices.get_warmer: { index: _all, name: '*' } - - - match: {test_index1.warmers.warmer.source.query.match_all: {boost: 1.0}} - - match: {test_index2.warmers.warmer.source.query.match_all: {boost: 1.0}} - - is_false: foo - ---- -"put warmer with blank index": - - do: - indices.put_warmer: - name: warmer - body: - query: - match_all: {} - - do: - indices.get_warmer: { index: _all, name: '*' } - - - match: {test_index1.warmers.warmer.source.query.match_all: {boost: 1.0}} - - match: {test_index2.warmers.warmer.source.query.match_all: {boost: 1.0}} - - match: {foo.warmers.warmer.source.query.match_all: {boost: 1.0}} - ---- -"put warmer with missing name": - - - - do: - catch: param - indices.put_warmer: - body: - query: - match_all: {} -