mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-25 09:28:27 +00:00
Merge remote-tracking branch 'elastic/master' into ccr
* elastic/master: Revert "cluster formation DSL - Gradle integration - part 2 (#32028)" (#32876) cluster formation DSL - Gradle integration - part 2 (#32028) Introduce global checkpoint listeners (#32696) Move connection profile into connection manager (#32858) [ML] Temporarily disabling rolling-upgrade tests Use generic AcknowledgedResponse instead of extended classes (#32859) [ML] Removing old per-partition normalization code (#32816) Use JDK 10 for 6.4 BWC builds (#32866) Removed flaky test. Looks like randomisation makes these assertions unreliable. [test] mute IndexShardTests.testDocStats Introduce the dissect library (#32297) Security: remove password hash bootstrap check (#32440) Move validation to server for put user requests (#32471) [ML] Add high level REST client docs for ML put job endpoint (#32843) Test: Fix forbidden uses in test framework (#32824) Painless: Change fqn_only to no_import (#32817) [test] mute testSearchWithSignificantTermsAgg Watcher: Remove unused hipchat render method (#32211) Watcher: Remove extraneous auth classes (#32300) Watcher: migrate PagerDuty v1 events API to v2 API (#32285)
This commit is contained in:
commit
aa147cca44
@ -21,18 +21,15 @@ package org.elasticsearch.client;
|
|||||||
|
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
|
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.analyze.AnalyzeRequest;
|
import org.elasticsearch.action.admin.indices.analyze.AnalyzeRequest;
|
||||||
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse;
|
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse;
|
||||||
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest;
|
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest;
|
||||||
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheResponse;
|
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheResponse;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
|
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.flush.FlushRequest;
|
import org.elasticsearch.action.admin.indices.flush.FlushRequest;
|
||||||
import org.elasticsearch.action.admin.indices.flush.FlushResponse;
|
import org.elasticsearch.action.admin.indices.flush.FlushResponse;
|
||||||
import org.elasticsearch.action.admin.indices.flush.SyncedFlushRequest;
|
import org.elasticsearch.action.admin.indices.flush.SyncedFlushRequest;
|
||||||
@ -45,7 +42,6 @@ import org.elasticsearch.action.admin.indices.mapping.get.GetFieldMappingsRespon
|
|||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexResponse;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexResponse;
|
||||||
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
|
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
|
||||||
@ -55,15 +51,14 @@ import org.elasticsearch.action.admin.indices.rollover.RolloverResponse;
|
|||||||
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.shrink.ResizeRequest;
|
import org.elasticsearch.action.admin.indices.shrink.ResizeRequest;
|
||||||
import org.elasticsearch.action.admin.indices.shrink.ResizeResponse;
|
import org.elasticsearch.action.admin.indices.shrink.ResizeResponse;
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest;
|
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest;
|
||||||
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse;
|
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.rest.RestStatus;
|
import org.elasticsearch.rest.RestStatus;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -93,9 +88,9 @@ public final class IndicesClient {
|
|||||||
* @return the response
|
* @return the response
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public DeleteIndexResponse delete(DeleteIndexRequest deleteIndexRequest, RequestOptions options) throws IOException {
|
public AcknowledgedResponse delete(DeleteIndexRequest deleteIndexRequest, RequestOptions options) throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(deleteIndexRequest, RequestConverters::deleteIndex, options,
|
return restHighLevelClient.performRequestAndParseEntity(deleteIndexRequest, RequestConverters::deleteIndex, options,
|
||||||
DeleteIndexResponse::fromXContent, emptySet());
|
AcknowledgedResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -106,9 +101,9 @@ public final class IndicesClient {
|
|||||||
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
|
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
|
||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void deleteAsync(DeleteIndexRequest deleteIndexRequest, RequestOptions options, ActionListener<DeleteIndexResponse> listener) {
|
public void deleteAsync(DeleteIndexRequest deleteIndexRequest, RequestOptions options, ActionListener<AcknowledgedResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(deleteIndexRequest, RequestConverters::deleteIndex, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(deleteIndexRequest, RequestConverters::deleteIndex, options,
|
||||||
DeleteIndexResponse::fromXContent, listener, emptySet());
|
AcknowledgedResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -147,9 +142,9 @@ public final class IndicesClient {
|
|||||||
* @return the response
|
* @return the response
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public PutMappingResponse putMapping(PutMappingRequest putMappingRequest, RequestOptions options) throws IOException {
|
public AcknowledgedResponse putMapping(PutMappingRequest putMappingRequest, RequestOptions options) throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(putMappingRequest, RequestConverters::putMapping, options,
|
return restHighLevelClient.performRequestAndParseEntity(putMappingRequest, RequestConverters::putMapping, options,
|
||||||
PutMappingResponse::fromXContent, emptySet());
|
AcknowledgedResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -160,9 +155,10 @@ public final class IndicesClient {
|
|||||||
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
|
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
|
||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void putMappingAsync(PutMappingRequest putMappingRequest, RequestOptions options, ActionListener<PutMappingResponse> listener) {
|
public void putMappingAsync(PutMappingRequest putMappingRequest, RequestOptions options,
|
||||||
|
ActionListener<AcknowledgedResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(putMappingRequest, RequestConverters::putMapping, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(putMappingRequest, RequestConverters::putMapping, options,
|
||||||
PutMappingResponse::fromXContent, listener, emptySet());
|
AcknowledgedResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -231,9 +227,9 @@ public final class IndicesClient {
|
|||||||
* @return the response
|
* @return the response
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public IndicesAliasesResponse updateAliases(IndicesAliasesRequest indicesAliasesRequest, RequestOptions options) throws IOException {
|
public AcknowledgedResponse updateAliases(IndicesAliasesRequest indicesAliasesRequest, RequestOptions options) throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(indicesAliasesRequest, RequestConverters::updateAliases, options,
|
return restHighLevelClient.performRequestAndParseEntity(indicesAliasesRequest, RequestConverters::updateAliases, options,
|
||||||
IndicesAliasesResponse::fromXContent, emptySet());
|
AcknowledgedResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -245,9 +241,9 @@ public final class IndicesClient {
|
|||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void updateAliasesAsync(IndicesAliasesRequest indicesAliasesRequest, RequestOptions options,
|
public void updateAliasesAsync(IndicesAliasesRequest indicesAliasesRequest, RequestOptions options,
|
||||||
ActionListener<IndicesAliasesResponse> listener) {
|
ActionListener<AcknowledgedResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(indicesAliasesRequest, RequestConverters::updateAliases, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(indicesAliasesRequest, RequestConverters::updateAliases, options,
|
||||||
IndicesAliasesResponse::fromXContent, listener, emptySet());
|
AcknowledgedResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -286,9 +282,9 @@ public final class IndicesClient {
|
|||||||
* @return the response
|
* @return the response
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public CloseIndexResponse close(CloseIndexRequest closeIndexRequest, RequestOptions options) throws IOException {
|
public AcknowledgedResponse close(CloseIndexRequest closeIndexRequest, RequestOptions options) throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(closeIndexRequest, RequestConverters::closeIndex, options,
|
return restHighLevelClient.performRequestAndParseEntity(closeIndexRequest, RequestConverters::closeIndex, options,
|
||||||
CloseIndexResponse::fromXContent, emptySet());
|
AcknowledgedResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -299,9 +295,9 @@ public final class IndicesClient {
|
|||||||
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
|
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
|
||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void closeAsync(CloseIndexRequest closeIndexRequest, RequestOptions options, ActionListener<CloseIndexResponse> listener) {
|
public void closeAsync(CloseIndexRequest closeIndexRequest, RequestOptions options, ActionListener<AcknowledgedResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(closeIndexRequest, RequestConverters::closeIndex, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(closeIndexRequest, RequestConverters::closeIndex, options,
|
||||||
CloseIndexResponse::fromXContent, listener, emptySet());
|
AcknowledgedResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -706,9 +702,9 @@ public final class IndicesClient {
|
|||||||
* @return the response
|
* @return the response
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public UpdateSettingsResponse putSettings(UpdateSettingsRequest updateSettingsRequest, RequestOptions options) throws IOException {
|
public AcknowledgedResponse putSettings(UpdateSettingsRequest updateSettingsRequest, RequestOptions options) throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(updateSettingsRequest, RequestConverters::indexPutSettings, options,
|
return restHighLevelClient.performRequestAndParseEntity(updateSettingsRequest, RequestConverters::indexPutSettings, options,
|
||||||
UpdateSettingsResponse::fromXContent, emptySet());
|
AcknowledgedResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -720,9 +716,9 @@ public final class IndicesClient {
|
|||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void putSettingsAsync(UpdateSettingsRequest updateSettingsRequest, RequestOptions options,
|
public void putSettingsAsync(UpdateSettingsRequest updateSettingsRequest, RequestOptions options,
|
||||||
ActionListener<UpdateSettingsResponse> listener) {
|
ActionListener<AcknowledgedResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(updateSettingsRequest, RequestConverters::indexPutSettings, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(updateSettingsRequest, RequestConverters::indexPutSettings, options,
|
||||||
UpdateSettingsResponse::fromXContent, listener, emptySet());
|
AcknowledgedResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -734,10 +730,10 @@ public final class IndicesClient {
|
|||||||
* @return the response
|
* @return the response
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public PutIndexTemplateResponse putTemplate(PutIndexTemplateRequest putIndexTemplateRequest,
|
public AcknowledgedResponse putTemplate(PutIndexTemplateRequest putIndexTemplateRequest,
|
||||||
RequestOptions options) throws IOException {
|
RequestOptions options) throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(putIndexTemplateRequest, RequestConverters::putTemplate, options,
|
return restHighLevelClient.performRequestAndParseEntity(putIndexTemplateRequest, RequestConverters::putTemplate, options,
|
||||||
PutIndexTemplateResponse::fromXContent, emptySet());
|
AcknowledgedResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -749,9 +745,9 @@ public final class IndicesClient {
|
|||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void putTemplateAsync(PutIndexTemplateRequest putIndexTemplateRequest, RequestOptions options,
|
public void putTemplateAsync(PutIndexTemplateRequest putIndexTemplateRequest, RequestOptions options,
|
||||||
ActionListener<PutIndexTemplateResponse> listener) {
|
ActionListener<AcknowledgedResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(putIndexTemplateRequest, RequestConverters::putTemplate, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(putIndexTemplateRequest, RequestConverters::putTemplate, options,
|
||||||
PutIndexTemplateResponse::fromXContent, listener, emptySet());
|
AcknowledgedResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,6 +21,7 @@ package org.elasticsearch.client;
|
|||||||
|
|
||||||
import org.apache.http.HttpEntity;
|
import org.apache.http.HttpEntity;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.common.Strings;
|
import org.elasticsearch.common.Strings;
|
||||||
import org.elasticsearch.common.io.Streams;
|
import org.elasticsearch.common.io.Streams;
|
||||||
import org.elasticsearch.common.xcontent.DeprecationHandler;
|
import org.elasticsearch.common.xcontent.DeprecationHandler;
|
||||||
@ -30,7 +31,6 @@ import org.elasticsearch.common.xcontent.XContentFactory;
|
|||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
import org.elasticsearch.common.xcontent.XContentParser;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
import org.elasticsearch.protocol.xpack.license.DeleteLicenseRequest;
|
import org.elasticsearch.protocol.xpack.license.DeleteLicenseRequest;
|
||||||
import org.elasticsearch.protocol.xpack.license.DeleteLicenseResponse;
|
|
||||||
import org.elasticsearch.protocol.xpack.license.GetLicenseRequest;
|
import org.elasticsearch.protocol.xpack.license.GetLicenseRequest;
|
||||||
import org.elasticsearch.protocol.xpack.license.GetLicenseResponse;
|
import org.elasticsearch.protocol.xpack.license.GetLicenseResponse;
|
||||||
import org.elasticsearch.protocol.xpack.license.PutLicenseRequest;
|
import org.elasticsearch.protocol.xpack.license.PutLicenseRequest;
|
||||||
@ -106,9 +106,9 @@ public final class LicenseClient {
|
|||||||
* @return the response
|
* @return the response
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public DeleteLicenseResponse deleteLicense(DeleteLicenseRequest request, RequestOptions options) throws IOException {
|
public AcknowledgedResponse deleteLicense(DeleteLicenseRequest request, RequestOptions options) throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(request, RequestConverters::deleteLicense, options,
|
return restHighLevelClient.performRequestAndParseEntity(request, RequestConverters::deleteLicense, options,
|
||||||
DeleteLicenseResponse::fromXContent, emptySet());
|
AcknowledgedResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -116,9 +116,9 @@ public final class LicenseClient {
|
|||||||
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
|
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
|
||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void deleteLicenseAsync(DeleteLicenseRequest request, RequestOptions options, ActionListener<DeleteLicenseResponse> listener) {
|
public void deleteLicenseAsync(DeleteLicenseRequest request, RequestOptions options, ActionListener<AcknowledgedResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(request, RequestConverters::deleteLicense, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(request, RequestConverters::deleteLicense, options,
|
||||||
DeleteLicenseResponse::fromXContent, listener, emptySet());
|
AcknowledgedResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,7 +27,6 @@ import org.elasticsearch.action.ActionListener;
|
|||||||
import org.elasticsearch.action.ActionRequest;
|
import org.elasticsearch.action.ActionRequest;
|
||||||
import org.elasticsearch.action.ActionRequestValidationException;
|
import org.elasticsearch.action.ActionRequestValidationException;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptResponse;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptResponse;
|
||||||
import org.elasticsearch.action.bulk.BulkRequest;
|
import org.elasticsearch.action.bulk.BulkRequest;
|
||||||
@ -53,6 +52,7 @@ import org.elasticsearch.action.search.MultiSearchResponse;
|
|||||||
import org.elasticsearch.action.search.SearchRequest;
|
import org.elasticsearch.action.search.SearchRequest;
|
||||||
import org.elasticsearch.action.search.SearchResponse;
|
import org.elasticsearch.action.search.SearchResponse;
|
||||||
import org.elasticsearch.action.search.SearchScrollRequest;
|
import org.elasticsearch.action.search.SearchScrollRequest;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.update.UpdateRequest;
|
import org.elasticsearch.action.update.UpdateRequest;
|
||||||
import org.elasticsearch.action.update.UpdateResponse;
|
import org.elasticsearch.action.update.UpdateResponse;
|
||||||
import org.elasticsearch.common.CheckedConsumer;
|
import org.elasticsearch.common.CheckedConsumer;
|
||||||
@ -916,9 +916,9 @@ public class RestHighLevelClient implements Closeable {
|
|||||||
* @return the response
|
* @return the response
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public DeleteStoredScriptResponse deleteScript(DeleteStoredScriptRequest request, RequestOptions options) throws IOException {
|
public AcknowledgedResponse deleteScript(DeleteStoredScriptRequest request, RequestOptions options) throws IOException {
|
||||||
return performRequestAndParseEntity(request, RequestConverters::deleteScript, options,
|
return performRequestAndParseEntity(request, RequestConverters::deleteScript, options,
|
||||||
DeleteStoredScriptResponse::fromXContent, emptySet());
|
AcknowledgedResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -930,9 +930,9 @@ public class RestHighLevelClient implements Closeable {
|
|||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void deleteScriptAsync(DeleteStoredScriptRequest request, RequestOptions options,
|
public void deleteScriptAsync(DeleteStoredScriptRequest request, RequestOptions options,
|
||||||
ActionListener<DeleteStoredScriptResponse> listener) {
|
ActionListener<AcknowledgedResponse> listener) {
|
||||||
performRequestAsyncAndParseEntity(request, RequestConverters::deleteScript, options,
|
performRequestAsyncAndParseEntity(request, RequestConverters::deleteScript, options,
|
||||||
DeleteStoredScriptResponse::fromXContent, listener, emptySet());
|
AcknowledgedResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,23 +21,21 @@ package org.elasticsearch.client;
|
|||||||
|
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesResponse;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryResponse;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
||||||
|
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
|
||||||
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
|
||||||
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@ -95,9 +93,9 @@ public final class SnapshotClient {
|
|||||||
* @return the response
|
* @return the response
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public PutRepositoryResponse createRepository(PutRepositoryRequest putRepositoryRequest, RequestOptions options) throws IOException {
|
public AcknowledgedResponse createRepository(PutRepositoryRequest putRepositoryRequest, RequestOptions options) throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(putRepositoryRequest, RequestConverters::createRepository, options,
|
return restHighLevelClient.performRequestAndParseEntity(putRepositoryRequest, RequestConverters::createRepository, options,
|
||||||
PutRepositoryResponse::fromXContent, emptySet());
|
AcknowledgedResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -109,9 +107,9 @@ public final class SnapshotClient {
|
|||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void createRepositoryAsync(PutRepositoryRequest putRepositoryRequest, RequestOptions options,
|
public void createRepositoryAsync(PutRepositoryRequest putRepositoryRequest, RequestOptions options,
|
||||||
ActionListener<PutRepositoryResponse> listener) {
|
ActionListener<AcknowledgedResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(putRepositoryRequest, RequestConverters::createRepository, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(putRepositoryRequest, RequestConverters::createRepository, options,
|
||||||
PutRepositoryResponse::fromXContent, listener, emptySet());
|
AcknowledgedResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -123,10 +121,10 @@ public final class SnapshotClient {
|
|||||||
* @return the response
|
* @return the response
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public DeleteRepositoryResponse deleteRepository(DeleteRepositoryRequest deleteRepositoryRequest, RequestOptions options)
|
public AcknowledgedResponse deleteRepository(DeleteRepositoryRequest deleteRepositoryRequest, RequestOptions options)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(deleteRepositoryRequest, RequestConverters::deleteRepository, options,
|
return restHighLevelClient.performRequestAndParseEntity(deleteRepositoryRequest, RequestConverters::deleteRepository, options,
|
||||||
DeleteRepositoryResponse::fromXContent, emptySet());
|
AcknowledgedResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -138,9 +136,9 @@ public final class SnapshotClient {
|
|||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void deleteRepositoryAsync(DeleteRepositoryRequest deleteRepositoryRequest, RequestOptions options,
|
public void deleteRepositoryAsync(DeleteRepositoryRequest deleteRepositoryRequest, RequestOptions options,
|
||||||
ActionListener<DeleteRepositoryResponse> listener) {
|
ActionListener<AcknowledgedResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(deleteRepositoryRequest, RequestConverters::deleteRepository, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(deleteRepositoryRequest, RequestConverters::deleteRepository, options,
|
||||||
DeleteRepositoryResponse::fromXContent, listener, emptySet());
|
AcknowledgedResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -294,9 +292,9 @@ public final class SnapshotClient {
|
|||||||
* @return the response
|
* @return the response
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public DeleteSnapshotResponse delete(DeleteSnapshotRequest deleteSnapshotRequest, RequestOptions options) throws IOException {
|
public AcknowledgedResponse delete(DeleteSnapshotRequest deleteSnapshotRequest, RequestOptions options) throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(deleteSnapshotRequest, RequestConverters::deleteSnapshot, options,
|
return restHighLevelClient.performRequestAndParseEntity(deleteSnapshotRequest, RequestConverters::deleteSnapshot, options,
|
||||||
DeleteSnapshotResponse::fromXContent, emptySet());
|
AcknowledgedResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -309,8 +307,8 @@ public final class SnapshotClient {
|
|||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void deleteAsync(DeleteSnapshotRequest deleteSnapshotRequest, RequestOptions options,
|
public void deleteAsync(DeleteSnapshotRequest deleteSnapshotRequest, RequestOptions options,
|
||||||
ActionListener<DeleteSnapshotResponse> listener) {
|
ActionListener<AcknowledgedResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(deleteSnapshotRequest, RequestConverters::deleteSnapshot, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(deleteSnapshotRequest, RequestConverters::deleteSnapshot, options,
|
||||||
DeleteSnapshotResponse::fromXContent, listener, emptySet());
|
AcknowledgedResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,18 +27,15 @@ import org.elasticsearch.ElasticsearchStatusException;
|
|||||||
import org.elasticsearch.action.admin.indices.alias.Alias;
|
import org.elasticsearch.action.admin.indices.alias.Alias;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
|
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.analyze.AnalyzeRequest;
|
import org.elasticsearch.action.admin.indices.analyze.AnalyzeRequest;
|
||||||
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse;
|
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse;
|
||||||
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest;
|
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest;
|
||||||
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheResponse;
|
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheResponse;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
|
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.flush.FlushRequest;
|
import org.elasticsearch.action.admin.indices.flush.FlushRequest;
|
||||||
import org.elasticsearch.action.admin.indices.flush.FlushResponse;
|
import org.elasticsearch.action.admin.indices.flush.FlushResponse;
|
||||||
import org.elasticsearch.action.admin.indices.flush.SyncedFlushRequest;
|
import org.elasticsearch.action.admin.indices.flush.SyncedFlushRequest;
|
||||||
@ -51,7 +48,6 @@ import org.elasticsearch.action.admin.indices.mapping.get.GetFieldMappingsRespon
|
|||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexResponse;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexResponse;
|
||||||
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
|
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
|
||||||
@ -61,20 +57,19 @@ import org.elasticsearch.action.admin.indices.rollover.RolloverResponse;
|
|||||||
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.shrink.ResizeRequest;
|
import org.elasticsearch.action.admin.indices.shrink.ResizeRequest;
|
||||||
import org.elasticsearch.action.admin.indices.shrink.ResizeResponse;
|
import org.elasticsearch.action.admin.indices.shrink.ResizeResponse;
|
||||||
import org.elasticsearch.action.admin.indices.shrink.ResizeType;
|
import org.elasticsearch.action.admin.indices.shrink.ResizeType;
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest;
|
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest;
|
||||||
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse;
|
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse;
|
||||||
import org.elasticsearch.action.index.IndexRequest;
|
import org.elasticsearch.action.index.IndexRequest;
|
||||||
import org.elasticsearch.action.support.IndicesOptions;
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
import org.elasticsearch.action.support.WriteRequest;
|
import org.elasticsearch.action.support.WriteRequest;
|
||||||
import org.elasticsearch.action.support.broadcast.BroadcastResponse;
|
import org.elasticsearch.action.support.broadcast.BroadcastResponse;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.cluster.metadata.AliasMetaData;
|
import org.elasticsearch.cluster.metadata.AliasMetaData;
|
||||||
import org.elasticsearch.cluster.metadata.IndexMetaData;
|
import org.elasticsearch.cluster.metadata.IndexMetaData;
|
||||||
import org.elasticsearch.cluster.metadata.IndexTemplateMetaData;
|
import org.elasticsearch.cluster.metadata.IndexTemplateMetaData;
|
||||||
@ -411,7 +406,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
|
|||||||
mappingBuilder.endObject().endObject().endObject();
|
mappingBuilder.endObject().endObject().endObject();
|
||||||
putMappingRequest.source(mappingBuilder);
|
putMappingRequest.source(mappingBuilder);
|
||||||
|
|
||||||
PutMappingResponse putMappingResponse =
|
AcknowledgedResponse putMappingResponse =
|
||||||
execute(putMappingRequest, highLevelClient().indices()::putMapping, highLevelClient().indices()::putMappingAsync);
|
execute(putMappingRequest, highLevelClient().indices()::putMapping, highLevelClient().indices()::putMappingAsync);
|
||||||
assertTrue(putMappingResponse.isAcknowledged());
|
assertTrue(putMappingResponse.isAcknowledged());
|
||||||
|
|
||||||
@ -431,7 +426,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
|
|||||||
mappingBuilder.endObject().endObject().endObject();
|
mappingBuilder.endObject().endObject().endObject();
|
||||||
putMappingRequest.source(mappingBuilder);
|
putMappingRequest.source(mappingBuilder);
|
||||||
|
|
||||||
PutMappingResponse putMappingResponse =
|
AcknowledgedResponse putMappingResponse =
|
||||||
execute(putMappingRequest, highLevelClient().indices()::putMapping, highLevelClient().indices()::putMappingAsync);
|
execute(putMappingRequest, highLevelClient().indices()::putMapping, highLevelClient().indices()::putMappingAsync);
|
||||||
assertTrue(putMappingResponse.isAcknowledged());
|
assertTrue(putMappingResponse.isAcknowledged());
|
||||||
|
|
||||||
@ -467,7 +462,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
|
|||||||
mappingBuilder.endObject().endObject().endObject();
|
mappingBuilder.endObject().endObject().endObject();
|
||||||
putMappingRequest.source(mappingBuilder);
|
putMappingRequest.source(mappingBuilder);
|
||||||
|
|
||||||
PutMappingResponse putMappingResponse =
|
AcknowledgedResponse putMappingResponse =
|
||||||
execute(putMappingRequest, highLevelClient().indices()::putMapping, highLevelClient().indices()::putMappingAsync);
|
execute(putMappingRequest, highLevelClient().indices()::putMapping, highLevelClient().indices()::putMappingAsync);
|
||||||
assertTrue(putMappingResponse.isAcknowledged());
|
assertTrue(putMappingResponse.isAcknowledged());
|
||||||
|
|
||||||
@ -497,7 +492,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
|
|||||||
createIndex(indexName, Settings.EMPTY);
|
createIndex(indexName, Settings.EMPTY);
|
||||||
|
|
||||||
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(indexName);
|
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(indexName);
|
||||||
DeleteIndexResponse deleteIndexResponse =
|
AcknowledgedResponse deleteIndexResponse =
|
||||||
execute(deleteIndexRequest, highLevelClient().indices()::delete, highLevelClient().indices()::deleteAsync);
|
execute(deleteIndexRequest, highLevelClient().indices()::delete, highLevelClient().indices()::deleteAsync);
|
||||||
assertTrue(deleteIndexResponse.isAcknowledged());
|
assertTrue(deleteIndexResponse.isAcknowledged());
|
||||||
|
|
||||||
@ -529,7 +524,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
|
|||||||
AliasActions addAction = new AliasActions(AliasActions.Type.ADD).index(index).aliases(alias);
|
AliasActions addAction = new AliasActions(AliasActions.Type.ADD).index(index).aliases(alias);
|
||||||
addAction.routing("routing").searchRouting("search_routing").filter("{\"term\":{\"year\":2016}}");
|
addAction.routing("routing").searchRouting("search_routing").filter("{\"term\":{\"year\":2016}}");
|
||||||
aliasesAddRequest.addAliasAction(addAction);
|
aliasesAddRequest.addAliasAction(addAction);
|
||||||
IndicesAliasesResponse aliasesAddResponse = execute(aliasesAddRequest, highLevelClient().indices()::updateAliases,
|
AcknowledgedResponse aliasesAddResponse = execute(aliasesAddRequest, highLevelClient().indices()::updateAliases,
|
||||||
highLevelClient().indices()::updateAliasesAsync);
|
highLevelClient().indices()::updateAliasesAsync);
|
||||||
assertTrue(aliasesAddResponse.isAcknowledged());
|
assertTrue(aliasesAddResponse.isAcknowledged());
|
||||||
assertThat(aliasExists(alias), equalTo(true));
|
assertThat(aliasExists(alias), equalTo(true));
|
||||||
@ -547,7 +542,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
|
|||||||
aliasesAddRemoveRequest.addAliasAction(addAction);
|
aliasesAddRemoveRequest.addAliasAction(addAction);
|
||||||
AliasActions removeAction = new AliasActions(AliasActions.Type.REMOVE).index(index).alias(alias);
|
AliasActions removeAction = new AliasActions(AliasActions.Type.REMOVE).index(index).alias(alias);
|
||||||
aliasesAddRemoveRequest.addAliasAction(removeAction);
|
aliasesAddRemoveRequest.addAliasAction(removeAction);
|
||||||
IndicesAliasesResponse aliasesAddRemoveResponse = execute(aliasesAddRemoveRequest, highLevelClient().indices()::updateAliases,
|
AcknowledgedResponse aliasesAddRemoveResponse = execute(aliasesAddRemoveRequest, highLevelClient().indices()::updateAliases,
|
||||||
highLevelClient().indices()::updateAliasesAsync);
|
highLevelClient().indices()::updateAliasesAsync);
|
||||||
assertTrue(aliasesAddRemoveResponse.isAcknowledged());
|
assertTrue(aliasesAddRemoveResponse.isAcknowledged());
|
||||||
assertThat(aliasExists(alias), equalTo(false));
|
assertThat(aliasExists(alias), equalTo(false));
|
||||||
@ -558,7 +553,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
|
|||||||
IndicesAliasesRequest aliasesRemoveIndexRequest = new IndicesAliasesRequest();
|
IndicesAliasesRequest aliasesRemoveIndexRequest = new IndicesAliasesRequest();
|
||||||
AliasActions removeIndexAction = new AliasActions(AliasActions.Type.REMOVE_INDEX).index(index);
|
AliasActions removeIndexAction = new AliasActions(AliasActions.Type.REMOVE_INDEX).index(index);
|
||||||
aliasesRemoveIndexRequest.addAliasAction(removeIndexAction);
|
aliasesRemoveIndexRequest.addAliasAction(removeIndexAction);
|
||||||
IndicesAliasesResponse aliasesRemoveIndexResponse = execute(aliasesRemoveIndexRequest, highLevelClient().indices()::updateAliases,
|
AcknowledgedResponse aliasesRemoveIndexResponse = execute(aliasesRemoveIndexRequest, highLevelClient().indices()::updateAliases,
|
||||||
highLevelClient().indices()::updateAliasesAsync);
|
highLevelClient().indices()::updateAliasesAsync);
|
||||||
assertTrue(aliasesRemoveIndexResponse.isAcknowledged());
|
assertTrue(aliasesRemoveIndexResponse.isAcknowledged());
|
||||||
assertThat(aliasExists(alias), equalTo(false));
|
assertThat(aliasExists(alias), equalTo(false));
|
||||||
@ -654,7 +649,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
|
|||||||
assertThat(response.getStatusLine().getStatusCode(), equalTo(RestStatus.OK.getStatus()));
|
assertThat(response.getStatusLine().getStatusCode(), equalTo(RestStatus.OK.getStatus()));
|
||||||
|
|
||||||
CloseIndexRequest closeIndexRequest = new CloseIndexRequest(index);
|
CloseIndexRequest closeIndexRequest = new CloseIndexRequest(index);
|
||||||
CloseIndexResponse closeIndexResponse = execute(closeIndexRequest, highLevelClient().indices()::close,
|
AcknowledgedResponse closeIndexResponse = execute(closeIndexRequest, highLevelClient().indices()::close,
|
||||||
highLevelClient().indices()::closeAsync);
|
highLevelClient().indices()::closeAsync);
|
||||||
assertTrue(closeIndexResponse.isAcknowledged());
|
assertTrue(closeIndexResponse.isAcknowledged());
|
||||||
|
|
||||||
@ -1144,7 +1139,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
|
|||||||
assertThat(dynamicSetting.getDefault(Settings.EMPTY), not(dynamicSettingValue));
|
assertThat(dynamicSetting.getDefault(Settings.EMPTY), not(dynamicSettingValue));
|
||||||
UpdateSettingsRequest dynamicSettingRequest = new UpdateSettingsRequest();
|
UpdateSettingsRequest dynamicSettingRequest = new UpdateSettingsRequest();
|
||||||
dynamicSettingRequest.settings(Settings.builder().put(dynamicSettingKey, dynamicSettingValue).build());
|
dynamicSettingRequest.settings(Settings.builder().put(dynamicSettingKey, dynamicSettingValue).build());
|
||||||
UpdateSettingsResponse response = execute(dynamicSettingRequest, highLevelClient().indices()::putSettings,
|
AcknowledgedResponse response = execute(dynamicSettingRequest, highLevelClient().indices()::putSettings,
|
||||||
highLevelClient().indices()::putSettingsAsync);
|
highLevelClient().indices()::putSettingsAsync);
|
||||||
|
|
||||||
assertTrue(response.isAcknowledged());
|
assertTrue(response.isAcknowledged());
|
||||||
@ -1227,7 +1222,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
|
|||||||
.mapping("doc", "host_name", "type=keyword", "description", "type=text")
|
.mapping("doc", "host_name", "type=keyword", "description", "type=text")
|
||||||
.alias(new Alias("alias-1").indexRouting("abc")).alias(new Alias("{index}-write").searchRouting("xyz"));
|
.alias(new Alias("alias-1").indexRouting("abc")).alias(new Alias("{index}-write").searchRouting("xyz"));
|
||||||
|
|
||||||
PutIndexTemplateResponse putTemplateResponse = execute(putTemplateRequest,
|
AcknowledgedResponse putTemplateResponse = execute(putTemplateRequest,
|
||||||
highLevelClient().indices()::putTemplate, highLevelClient().indices()::putTemplateAsync);
|
highLevelClient().indices()::putTemplate, highLevelClient().indices()::putTemplateAsync);
|
||||||
assertThat(putTemplateResponse.isAcknowledged(), equalTo(true));
|
assertThat(putTemplateResponse.isAcknowledged(), equalTo(true));
|
||||||
|
|
||||||
|
@ -59,9 +59,6 @@ import org.elasticsearch.search.SearchHit;
|
|||||||
import org.elasticsearch.search.aggregations.BucketOrder;
|
import org.elasticsearch.search.aggregations.BucketOrder;
|
||||||
import org.elasticsearch.search.aggregations.bucket.range.Range;
|
import org.elasticsearch.search.aggregations.bucket.range.Range;
|
||||||
import org.elasticsearch.search.aggregations.bucket.range.RangeAggregationBuilder;
|
import org.elasticsearch.search.aggregations.bucket.range.RangeAggregationBuilder;
|
||||||
import org.elasticsearch.search.aggregations.bucket.significant.SignificantTerms;
|
|
||||||
import org.elasticsearch.search.aggregations.bucket.significant.SignificantTermsAggregationBuilder;
|
|
||||||
import org.elasticsearch.search.aggregations.bucket.significant.heuristics.PercentageScore;
|
|
||||||
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
||||||
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
|
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
|
||||||
import org.elasticsearch.search.aggregations.matrix.stats.MatrixStats;
|
import org.elasticsearch.search.aggregations.matrix.stats.MatrixStats;
|
||||||
@ -271,33 +268,6 @@ public class SearchIT extends ESRestHighLevelClientTestCase {
|
|||||||
assertEquals(0, type2.getAggregations().asList().size());
|
assertEquals(0, type2.getAggregations().asList().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSearchWithSignificantTermsAgg() throws IOException {
|
|
||||||
SearchRequest searchRequest = new SearchRequest();
|
|
||||||
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
|
|
||||||
searchSourceBuilder.query(new MatchQueryBuilder("num","50"));
|
|
||||||
searchSourceBuilder.aggregation(new SignificantTermsAggregationBuilder("agg1", ValueType.STRING)
|
|
||||||
.field("type.keyword")
|
|
||||||
.minDocCount(1)
|
|
||||||
.significanceHeuristic(new PercentageScore()));
|
|
||||||
searchSourceBuilder.size(0);
|
|
||||||
searchRequest.source(searchSourceBuilder);
|
|
||||||
SearchResponse searchResponse = execute(searchRequest, highLevelClient()::search, highLevelClient()::searchAsync);
|
|
||||||
assertSearchHeader(searchResponse);
|
|
||||||
assertNull(searchResponse.getSuggest());
|
|
||||||
assertEquals(Collections.emptyMap(), searchResponse.getProfileResults());
|
|
||||||
assertEquals(0, searchResponse.getHits().getHits().length);
|
|
||||||
assertEquals(0f, searchResponse.getHits().getMaxScore(), 0f);
|
|
||||||
SignificantTerms significantTermsAgg = searchResponse.getAggregations().get("agg1");
|
|
||||||
assertEquals("agg1", significantTermsAgg.getName());
|
|
||||||
assertEquals(1, significantTermsAgg.getBuckets().size());
|
|
||||||
SignificantTerms.Bucket type1 = significantTermsAgg.getBucketByKey("type1");
|
|
||||||
assertEquals(1, type1.getDocCount());
|
|
||||||
assertEquals(1, type1.getSubsetDf());
|
|
||||||
assertEquals(1, type1.getSubsetSize());
|
|
||||||
assertEquals(3, type1.getSupersetDf());
|
|
||||||
assertEquals(1d/3d, type1.getSignificanceScore(), 0d);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSearchWithRangeAgg() throws IOException {
|
public void testSearchWithRangeAgg() throws IOException {
|
||||||
{
|
{
|
||||||
SearchRequest searchRequest = new SearchRequest();
|
SearchRequest searchRequest = new SearchRequest();
|
||||||
|
@ -21,24 +21,22 @@ package org.elasticsearch.client;
|
|||||||
|
|
||||||
import org.elasticsearch.ElasticsearchException;
|
import org.elasticsearch.ElasticsearchException;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesResponse;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryResponse;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryResponse;
|
||||||
|
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotRequest;
|
||||||
|
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
||||||
|
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
|
||||||
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
|
||||||
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusResponse;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotRequest;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
import org.elasticsearch.repositories.fs.FsRepository;
|
import org.elasticsearch.repositories.fs.FsRepository;
|
||||||
import org.elasticsearch.rest.RestStatus;
|
import org.elasticsearch.rest.RestStatus;
|
||||||
@ -55,7 +53,7 @@ import static org.hamcrest.Matchers.is;
|
|||||||
|
|
||||||
public class SnapshotIT extends ESRestHighLevelClientTestCase {
|
public class SnapshotIT extends ESRestHighLevelClientTestCase {
|
||||||
|
|
||||||
private PutRepositoryResponse createTestRepository(String repository, String type, String settings) throws IOException {
|
private AcknowledgedResponse createTestRepository(String repository, String type, String settings) throws IOException {
|
||||||
PutRepositoryRequest request = new PutRepositoryRequest(repository);
|
PutRepositoryRequest request = new PutRepositoryRequest(repository);
|
||||||
request.settings(settings, XContentType.JSON);
|
request.settings(settings, XContentType.JSON);
|
||||||
request.type(type);
|
request.type(type);
|
||||||
@ -71,7 +69,7 @@ public class SnapshotIT extends ESRestHighLevelClientTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testCreateRepository() throws IOException {
|
public void testCreateRepository() throws IOException {
|
||||||
PutRepositoryResponse response = createTestRepository("test", FsRepository.TYPE, "{\"location\": \".\"}");
|
AcknowledgedResponse response = createTestRepository("test", FsRepository.TYPE, "{\"location\": \".\"}");
|
||||||
assertTrue(response.isAcknowledged());
|
assertTrue(response.isAcknowledged());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,14 +115,14 @@ public class SnapshotIT extends ESRestHighLevelClientTestCase {
|
|||||||
assertThat(1, equalTo(response.repositories().size()));
|
assertThat(1, equalTo(response.repositories().size()));
|
||||||
|
|
||||||
DeleteRepositoryRequest deleteRequest = new DeleteRepositoryRequest(repository);
|
DeleteRepositoryRequest deleteRequest = new DeleteRepositoryRequest(repository);
|
||||||
DeleteRepositoryResponse deleteResponse = execute(deleteRequest, highLevelClient().snapshot()::deleteRepository,
|
AcknowledgedResponse deleteResponse = execute(deleteRequest, highLevelClient().snapshot()::deleteRepository,
|
||||||
highLevelClient().snapshot()::deleteRepositoryAsync);
|
highLevelClient().snapshot()::deleteRepositoryAsync);
|
||||||
|
|
||||||
assertTrue(deleteResponse.isAcknowledged());
|
assertTrue(deleteResponse.isAcknowledged());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testVerifyRepository() throws IOException {
|
public void testVerifyRepository() throws IOException {
|
||||||
PutRepositoryResponse putRepositoryResponse = createTestRepository("test", FsRepository.TYPE, "{\"location\": \".\"}");
|
AcknowledgedResponse putRepositoryResponse = createTestRepository("test", FsRepository.TYPE, "{\"location\": \".\"}");
|
||||||
assertTrue(putRepositoryResponse.isAcknowledged());
|
assertTrue(putRepositoryResponse.isAcknowledged());
|
||||||
|
|
||||||
VerifyRepositoryRequest request = new VerifyRepositoryRequest("test");
|
VerifyRepositoryRequest request = new VerifyRepositoryRequest("test");
|
||||||
@ -153,7 +151,7 @@ public class SnapshotIT extends ESRestHighLevelClientTestCase {
|
|||||||
String snapshot1 = "test_snapshot1";
|
String snapshot1 = "test_snapshot1";
|
||||||
String snapshot2 = "test_snapshot2";
|
String snapshot2 = "test_snapshot2";
|
||||||
|
|
||||||
PutRepositoryResponse putRepositoryResponse = createTestRepository(repository, FsRepository.TYPE, "{\"location\": \".\"}");
|
AcknowledgedResponse putRepositoryResponse = createTestRepository(repository, FsRepository.TYPE, "{\"location\": \".\"}");
|
||||||
assertTrue(putRepositoryResponse.isAcknowledged());
|
assertTrue(putRepositoryResponse.isAcknowledged());
|
||||||
|
|
||||||
CreateSnapshotRequest createSnapshotRequest1 = new CreateSnapshotRequest(repository, snapshot1);
|
CreateSnapshotRequest createSnapshotRequest1 = new CreateSnapshotRequest(repository, snapshot1);
|
||||||
@ -187,7 +185,7 @@ public class SnapshotIT extends ESRestHighLevelClientTestCase {
|
|||||||
String testSnapshot = "snapshot";
|
String testSnapshot = "snapshot";
|
||||||
String testIndex = "test_index";
|
String testIndex = "test_index";
|
||||||
|
|
||||||
PutRepositoryResponse putRepositoryResponse = createTestRepository(testRepository, FsRepository.TYPE, "{\"location\": \".\"}");
|
AcknowledgedResponse putRepositoryResponse = createTestRepository(testRepository, FsRepository.TYPE, "{\"location\": \".\"}");
|
||||||
assertTrue(putRepositoryResponse.isAcknowledged());
|
assertTrue(putRepositoryResponse.isAcknowledged());
|
||||||
|
|
||||||
createIndex(testIndex, Settings.EMPTY);
|
createIndex(testIndex, Settings.EMPTY);
|
||||||
@ -216,7 +214,7 @@ public class SnapshotIT extends ESRestHighLevelClientTestCase {
|
|||||||
String testIndex = "test_index";
|
String testIndex = "test_index";
|
||||||
String restoredIndex = testIndex + "_restored";
|
String restoredIndex = testIndex + "_restored";
|
||||||
|
|
||||||
PutRepositoryResponse putRepositoryResponse = createTestRepository(testRepository, FsRepository.TYPE, "{\"location\": \".\"}");
|
AcknowledgedResponse putRepositoryResponse = createTestRepository(testRepository, FsRepository.TYPE, "{\"location\": \".\"}");
|
||||||
assertTrue(putRepositoryResponse.isAcknowledged());
|
assertTrue(putRepositoryResponse.isAcknowledged());
|
||||||
|
|
||||||
createIndex(testIndex, Settings.EMPTY);
|
createIndex(testIndex, Settings.EMPTY);
|
||||||
@ -250,7 +248,7 @@ public class SnapshotIT extends ESRestHighLevelClientTestCase {
|
|||||||
String repository = "test_repository";
|
String repository = "test_repository";
|
||||||
String snapshot = "test_snapshot";
|
String snapshot = "test_snapshot";
|
||||||
|
|
||||||
PutRepositoryResponse putRepositoryResponse = createTestRepository(repository, FsRepository.TYPE, "{\"location\": \".\"}");
|
AcknowledgedResponse putRepositoryResponse = createTestRepository(repository, FsRepository.TYPE, "{\"location\": \".\"}");
|
||||||
assertTrue(putRepositoryResponse.isAcknowledged());
|
assertTrue(putRepositoryResponse.isAcknowledged());
|
||||||
|
|
||||||
CreateSnapshotRequest createSnapshotRequest = new CreateSnapshotRequest(repository, snapshot);
|
CreateSnapshotRequest createSnapshotRequest = new CreateSnapshotRequest(repository, snapshot);
|
||||||
@ -260,7 +258,7 @@ public class SnapshotIT extends ESRestHighLevelClientTestCase {
|
|||||||
assertEquals(RestStatus.OK, createSnapshotResponse.status());
|
assertEquals(RestStatus.OK, createSnapshotResponse.status());
|
||||||
|
|
||||||
DeleteSnapshotRequest request = new DeleteSnapshotRequest(repository, snapshot);
|
DeleteSnapshotRequest request = new DeleteSnapshotRequest(repository, snapshot);
|
||||||
DeleteSnapshotResponse response = execute(request, highLevelClient().snapshot()::delete, highLevelClient().snapshot()::deleteAsync);
|
AcknowledgedResponse response = execute(request, highLevelClient().snapshot()::delete, highLevelClient().snapshot()::deleteAsync);
|
||||||
|
|
||||||
assertTrue(response.isAcknowledged());
|
assertTrue(response.isAcknowledged());
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@ import org.apache.http.entity.StringEntity;
|
|||||||
import org.apache.http.util.EntityUtils;
|
import org.apache.http.util.EntityUtils;
|
||||||
import org.elasticsearch.ElasticsearchStatusException;
|
import org.elasticsearch.ElasticsearchStatusException;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptResponse;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptResponse;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.common.Strings;
|
import org.elasticsearch.common.Strings;
|
||||||
import org.elasticsearch.common.xcontent.ToXContent;
|
import org.elasticsearch.common.xcontent.ToXContent;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
@ -90,7 +90,7 @@ public class StoredScriptsIT extends ESRestHighLevelClientTestCase {
|
|||||||
deleteRequest.masterNodeTimeout("50s");
|
deleteRequest.masterNodeTimeout("50s");
|
||||||
deleteRequest.timeout("50s");
|
deleteRequest.timeout("50s");
|
||||||
|
|
||||||
DeleteStoredScriptResponse deleteResponse = execute(deleteRequest, highLevelClient()::deleteScript,
|
AcknowledgedResponse deleteResponse = execute(deleteRequest, highLevelClient()::deleteScript,
|
||||||
highLevelClient()::deleteScriptAsync);
|
highLevelClient()::deleteScriptAsync);
|
||||||
|
|
||||||
assertThat(deleteResponse.isAcknowledged(), equalTo(true));
|
assertThat(deleteResponse.isAcknowledged(), equalTo(true));
|
||||||
|
@ -25,7 +25,6 @@ import org.elasticsearch.action.LatchedActionListener;
|
|||||||
import org.elasticsearch.action.admin.indices.alias.Alias;
|
import org.elasticsearch.action.admin.indices.alias.Alias;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
|
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.analyze.AnalyzeRequest;
|
import org.elasticsearch.action.admin.indices.analyze.AnalyzeRequest;
|
||||||
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse;
|
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse;
|
||||||
@ -33,11 +32,9 @@ import org.elasticsearch.action.admin.indices.analyze.DetailAnalyzeResponse;
|
|||||||
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest;
|
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest;
|
||||||
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheResponse;
|
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheResponse;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
|
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.flush.FlushRequest;
|
import org.elasticsearch.action.admin.indices.flush.FlushRequest;
|
||||||
import org.elasticsearch.action.admin.indices.flush.FlushResponse;
|
import org.elasticsearch.action.admin.indices.flush.FlushResponse;
|
||||||
import org.elasticsearch.action.admin.indices.flush.SyncedFlushRequest;
|
import org.elasticsearch.action.admin.indices.flush.SyncedFlushRequest;
|
||||||
@ -50,7 +47,6 @@ import org.elasticsearch.action.admin.indices.mapping.get.GetFieldMappingsRespon
|
|||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexResponse;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexResponse;
|
||||||
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
|
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
|
||||||
@ -60,20 +56,19 @@ import org.elasticsearch.action.admin.indices.rollover.RolloverResponse;
|
|||||||
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.shrink.ResizeRequest;
|
import org.elasticsearch.action.admin.indices.shrink.ResizeRequest;
|
||||||
import org.elasticsearch.action.admin.indices.shrink.ResizeResponse;
|
import org.elasticsearch.action.admin.indices.shrink.ResizeResponse;
|
||||||
import org.elasticsearch.action.admin.indices.shrink.ResizeType;
|
import org.elasticsearch.action.admin.indices.shrink.ResizeType;
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.validate.query.QueryExplanation;
|
import org.elasticsearch.action.admin.indices.validate.query.QueryExplanation;
|
||||||
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest;
|
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest;
|
||||||
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse;
|
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse;
|
||||||
import org.elasticsearch.action.support.ActiveShardCount;
|
import org.elasticsearch.action.support.ActiveShardCount;
|
||||||
import org.elasticsearch.action.support.DefaultShardOperationFailedException;
|
import org.elasticsearch.action.support.DefaultShardOperationFailedException;
|
||||||
import org.elasticsearch.action.support.IndicesOptions;
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ESRestHighLevelClientTestCase;
|
import org.elasticsearch.client.ESRestHighLevelClientTestCase;
|
||||||
import org.elasticsearch.client.GetAliasesResponse;
|
import org.elasticsearch.client.GetAliasesResponse;
|
||||||
import org.elasticsearch.client.RequestOptions;
|
import org.elasticsearch.client.RequestOptions;
|
||||||
@ -220,7 +215,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
// end::delete-index-request-indicesOptions
|
// end::delete-index-request-indicesOptions
|
||||||
|
|
||||||
// tag::delete-index-execute
|
// tag::delete-index-execute
|
||||||
DeleteIndexResponse deleteIndexResponse = client.indices().delete(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse deleteIndexResponse = client.indices().delete(request, RequestOptions.DEFAULT);
|
||||||
// end::delete-index-execute
|
// end::delete-index-execute
|
||||||
|
|
||||||
// tag::delete-index-response
|
// tag::delete-index-response
|
||||||
@ -255,10 +250,10 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
DeleteIndexRequest request = new DeleteIndexRequest("posts");
|
DeleteIndexRequest request = new DeleteIndexRequest("posts");
|
||||||
|
|
||||||
// tag::delete-index-execute-listener
|
// tag::delete-index-execute-listener
|
||||||
ActionListener<DeleteIndexResponse> listener =
|
ActionListener<AcknowledgedResponse> listener =
|
||||||
new ActionListener<DeleteIndexResponse>() {
|
new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(DeleteIndexResponse deleteIndexResponse) {
|
public void onResponse(AcknowledgedResponse deleteIndexResponse) {
|
||||||
// <1>
|
// <1>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -480,7 +475,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
"}", // <1>
|
"}", // <1>
|
||||||
XContentType.JSON);
|
XContentType.JSON);
|
||||||
// end::put-mapping-request-source
|
// end::put-mapping-request-source
|
||||||
PutMappingResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
||||||
assertTrue(putMappingResponse.isAcknowledged());
|
assertTrue(putMappingResponse.isAcknowledged());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,7 +489,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
jsonMap.put("properties", properties);
|
jsonMap.put("properties", properties);
|
||||||
request.source(jsonMap); // <1>
|
request.source(jsonMap); // <1>
|
||||||
//end::put-mapping-map
|
//end::put-mapping-map
|
||||||
PutMappingResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
||||||
assertTrue(putMappingResponse.isAcknowledged());
|
assertTrue(putMappingResponse.isAcknowledged());
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -515,14 +510,14 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
builder.endObject();
|
builder.endObject();
|
||||||
request.source(builder); // <1>
|
request.source(builder); // <1>
|
||||||
//end::put-mapping-xcontent
|
//end::put-mapping-xcontent
|
||||||
PutMappingResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
||||||
assertTrue(putMappingResponse.isAcknowledged());
|
assertTrue(putMappingResponse.isAcknowledged());
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
//tag::put-mapping-shortcut
|
//tag::put-mapping-shortcut
|
||||||
request.source("message", "type=text"); // <1>
|
request.source("message", "type=text"); // <1>
|
||||||
//end::put-mapping-shortcut
|
//end::put-mapping-shortcut
|
||||||
PutMappingResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
||||||
assertTrue(putMappingResponse.isAcknowledged());
|
assertTrue(putMappingResponse.isAcknowledged());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -536,7 +531,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
// end::put-mapping-request-masterTimeout
|
// end::put-mapping-request-masterTimeout
|
||||||
|
|
||||||
// tag::put-mapping-execute
|
// tag::put-mapping-execute
|
||||||
PutMappingResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
||||||
// end::put-mapping-execute
|
// end::put-mapping-execute
|
||||||
|
|
||||||
// tag::put-mapping-response
|
// tag::put-mapping-response
|
||||||
@ -558,10 +553,10 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
PutMappingRequest request = new PutMappingRequest("twitter").type("tweet");
|
PutMappingRequest request = new PutMappingRequest("twitter").type("tweet");
|
||||||
|
|
||||||
// tag::put-mapping-execute-listener
|
// tag::put-mapping-execute-listener
|
||||||
ActionListener<PutMappingResponse> listener =
|
ActionListener<AcknowledgedResponse> listener =
|
||||||
new ActionListener<PutMappingResponse>() {
|
new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(PutMappingResponse putMappingResponse) {
|
public void onResponse(AcknowledgedResponse putMappingResponse) {
|
||||||
// <1>
|
// <1>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -601,7 +596,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
" }\n" +
|
" }\n" +
|
||||||
"}", // <1>
|
"}", // <1>
|
||||||
XContentType.JSON);
|
XContentType.JSON);
|
||||||
PutMappingResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
||||||
assertTrue(putMappingResponse.isAcknowledged());
|
assertTrue(putMappingResponse.isAcknowledged());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -658,7 +653,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
" }\n" +
|
" }\n" +
|
||||||
"}", // <1>
|
"}", // <1>
|
||||||
XContentType.JSON);
|
XContentType.JSON);
|
||||||
PutMappingResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
||||||
assertTrue(putMappingResponse.isAcknowledged());
|
assertTrue(putMappingResponse.isAcknowledged());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -731,7 +726,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
" }\n" +
|
" }\n" +
|
||||||
"}", // <1>
|
"}", // <1>
|
||||||
XContentType.JSON);
|
XContentType.JSON);
|
||||||
PutMappingResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse putMappingResponse = client.indices().putMapping(request, RequestOptions.DEFAULT);
|
||||||
assertTrue(putMappingResponse.isAcknowledged());
|
assertTrue(putMappingResponse.isAcknowledged());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1497,7 +1492,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
// end::close-index-request-indicesOptions
|
// end::close-index-request-indicesOptions
|
||||||
|
|
||||||
// tag::close-index-execute
|
// tag::close-index-execute
|
||||||
CloseIndexResponse closeIndexResponse = client.indices().close(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse closeIndexResponse = client.indices().close(request, RequestOptions.DEFAULT);
|
||||||
// end::close-index-execute
|
// end::close-index-execute
|
||||||
|
|
||||||
// tag::close-index-response
|
// tag::close-index-response
|
||||||
@ -1506,10 +1501,10 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
assertTrue(acknowledged);
|
assertTrue(acknowledged);
|
||||||
|
|
||||||
// tag::close-index-execute-listener
|
// tag::close-index-execute-listener
|
||||||
ActionListener<CloseIndexResponse> listener =
|
ActionListener<AcknowledgedResponse> listener =
|
||||||
new ActionListener<CloseIndexResponse>() {
|
new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(CloseIndexResponse closeIndexResponse) {
|
public void onResponse(AcknowledgedResponse closeIndexResponse) {
|
||||||
// <1>
|
// <1>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1649,7 +1644,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
// end::update-aliases-request-masterTimeout
|
// end::update-aliases-request-masterTimeout
|
||||||
|
|
||||||
// tag::update-aliases-execute
|
// tag::update-aliases-execute
|
||||||
IndicesAliasesResponse indicesAliasesResponse =
|
AcknowledgedResponse indicesAliasesResponse =
|
||||||
client.indices().updateAliases(request, RequestOptions.DEFAULT);
|
client.indices().updateAliases(request, RequestOptions.DEFAULT);
|
||||||
// end::update-aliases-execute
|
// end::update-aliases-execute
|
||||||
|
|
||||||
@ -1665,10 +1660,10 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
request.addAliasAction(aliasAction);
|
request.addAliasAction(aliasAction);
|
||||||
|
|
||||||
// tag::update-aliases-execute-listener
|
// tag::update-aliases-execute-listener
|
||||||
ActionListener<IndicesAliasesResponse> listener =
|
ActionListener<AcknowledgedResponse> listener =
|
||||||
new ActionListener<IndicesAliasesResponse>() {
|
new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(IndicesAliasesResponse indicesAliasesResponse) {
|
public void onResponse(AcknowledgedResponse indicesAliasesResponse) {
|
||||||
// <1>
|
// <1>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2056,7 +2051,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
// end::put-settings-request-indicesOptions
|
// end::put-settings-request-indicesOptions
|
||||||
|
|
||||||
// tag::put-settings-execute
|
// tag::put-settings-execute
|
||||||
UpdateSettingsResponse updateSettingsResponse =
|
AcknowledgedResponse updateSettingsResponse =
|
||||||
client.indices().putSettings(request, RequestOptions.DEFAULT);
|
client.indices().putSettings(request, RequestOptions.DEFAULT);
|
||||||
// end::put-settings-execute
|
// end::put-settings-execute
|
||||||
|
|
||||||
@ -2066,11 +2061,11 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
assertTrue(acknowledged);
|
assertTrue(acknowledged);
|
||||||
|
|
||||||
// tag::put-settings-execute-listener
|
// tag::put-settings-execute-listener
|
||||||
ActionListener<UpdateSettingsResponse> listener =
|
ActionListener<AcknowledgedResponse> listener =
|
||||||
new ActionListener<UpdateSettingsResponse>() {
|
new ActionListener<AcknowledgedResponse>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(UpdateSettingsResponse updateSettingsResponse) {
|
public void onResponse(AcknowledgedResponse updateSettingsResponse) {
|
||||||
// <1>
|
// <1>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2219,7 +2214,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
request.create(false); // make test happy
|
request.create(false); // make test happy
|
||||||
|
|
||||||
// tag::put-template-execute
|
// tag::put-template-execute
|
||||||
PutIndexTemplateResponse putTemplateResponse = client.indices().putTemplate(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse putTemplateResponse = client.indices().putTemplate(request, RequestOptions.DEFAULT);
|
||||||
// end::put-template-execute
|
// end::put-template-execute
|
||||||
|
|
||||||
// tag::put-template-response
|
// tag::put-template-response
|
||||||
@ -2228,10 +2223,10 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
assertTrue(acknowledged);
|
assertTrue(acknowledged);
|
||||||
|
|
||||||
// tag::put-template-execute-listener
|
// tag::put-template-execute-listener
|
||||||
ActionListener<PutIndexTemplateResponse> listener =
|
ActionListener<AcknowledgedResponse> listener =
|
||||||
new ActionListener<PutIndexTemplateResponse>() {
|
new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(PutIndexTemplateResponse putTemplateResponse) {
|
public void onResponse(AcknowledgedResponse putTemplateResponse) {
|
||||||
// <1>
|
// <1>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2461,7 +2456,7 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
.indices("my_index")
|
.indices("my_index")
|
||||||
.type("_doc")
|
.type("_doc")
|
||||||
.source("my_field", "type=text,analyzer=english");
|
.source("my_field", "type=text,analyzer=english");
|
||||||
PutMappingResponse pmResp = client.indices().putMapping(pmReq, RequestOptions.DEFAULT);
|
AcknowledgedResponse pmResp = client.indices().putMapping(pmReq, RequestOptions.DEFAULT);
|
||||||
assertTrue(pmResp.isAcknowledged());
|
assertTrue(pmResp.isAcknowledged());
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -22,12 +22,12 @@ package org.elasticsearch.client.documentation;
|
|||||||
import org.elasticsearch.Build;
|
import org.elasticsearch.Build;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.LatchedActionListener;
|
import org.elasticsearch.action.LatchedActionListener;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ESRestHighLevelClientTestCase;
|
import org.elasticsearch.client.ESRestHighLevelClientTestCase;
|
||||||
import org.elasticsearch.client.RequestOptions;
|
import org.elasticsearch.client.RequestOptions;
|
||||||
import org.elasticsearch.client.RestHighLevelClient;
|
import org.elasticsearch.client.RestHighLevelClient;
|
||||||
import org.elasticsearch.common.Booleans;
|
import org.elasticsearch.common.Booleans;
|
||||||
import org.elasticsearch.protocol.xpack.license.DeleteLicenseRequest;
|
import org.elasticsearch.protocol.xpack.license.DeleteLicenseRequest;
|
||||||
import org.elasticsearch.protocol.xpack.license.DeleteLicenseResponse;
|
|
||||||
import org.elasticsearch.protocol.xpack.license.GetLicenseRequest;
|
import org.elasticsearch.protocol.xpack.license.GetLicenseRequest;
|
||||||
import org.elasticsearch.protocol.xpack.license.GetLicenseResponse;
|
import org.elasticsearch.protocol.xpack.license.GetLicenseResponse;
|
||||||
import org.elasticsearch.protocol.xpack.license.LicensesStatus;
|
import org.elasticsearch.protocol.xpack.license.LicensesStatus;
|
||||||
@ -120,7 +120,7 @@ public class LicensingDocumentationIT extends ESRestHighLevelClientTestCase {
|
|||||||
//tag::delete-license-execute
|
//tag::delete-license-execute
|
||||||
DeleteLicenseRequest request = new DeleteLicenseRequest();
|
DeleteLicenseRequest request = new DeleteLicenseRequest();
|
||||||
|
|
||||||
DeleteLicenseResponse response = client.license().deleteLicense(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse response = client.license().deleteLicense(request, RequestOptions.DEFAULT);
|
||||||
//end::delete-license-execute
|
//end::delete-license-execute
|
||||||
|
|
||||||
//tag::delete-license-response
|
//tag::delete-license-response
|
||||||
@ -132,9 +132,9 @@ public class LicensingDocumentationIT extends ESRestHighLevelClientTestCase {
|
|||||||
{
|
{
|
||||||
DeleteLicenseRequest request = new DeleteLicenseRequest();
|
DeleteLicenseRequest request = new DeleteLicenseRequest();
|
||||||
// tag::delete-license-execute-listener
|
// tag::delete-license-execute-listener
|
||||||
ActionListener<DeleteLicenseResponse> listener = new ActionListener<DeleteLicenseResponse>() {
|
ActionListener<AcknowledgedResponse> listener = new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(DeleteLicenseResponse deleteLicenseResponse) {
|
public void onResponse(AcknowledgedResponse deleteLicenseResponse) {
|
||||||
// <1>
|
// <1>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,121 @@
|
|||||||
|
/*
|
||||||
|
* 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.client.documentation;
|
||||||
|
|
||||||
|
import org.elasticsearch.action.ActionListener;
|
||||||
|
import org.elasticsearch.action.LatchedActionListener;
|
||||||
|
import org.elasticsearch.client.ESRestHighLevelClientTestCase;
|
||||||
|
import org.elasticsearch.client.RequestOptions;
|
||||||
|
import org.elasticsearch.client.RestHighLevelClient;
|
||||||
|
import org.elasticsearch.common.unit.TimeValue;
|
||||||
|
import org.elasticsearch.protocol.xpack.ml.PutJobRequest;
|
||||||
|
import org.elasticsearch.protocol.xpack.ml.PutJobResponse;
|
||||||
|
import org.elasticsearch.protocol.xpack.ml.job.config.AnalysisConfig;
|
||||||
|
import org.elasticsearch.protocol.xpack.ml.job.config.DataDescription;
|
||||||
|
import org.elasticsearch.protocol.xpack.ml.job.config.Detector;
|
||||||
|
import org.elasticsearch.protocol.xpack.ml.job.config.Job;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.greaterThan;
|
||||||
|
|
||||||
|
public class MlClientDocumentationIT extends ESRestHighLevelClientTestCase {
|
||||||
|
|
||||||
|
public void testCreateJob() throws Exception {
|
||||||
|
RestHighLevelClient client = highLevelClient();
|
||||||
|
|
||||||
|
//tag::x-pack-ml-put-job-detector
|
||||||
|
Detector.Builder detectorBuilder = new Detector.Builder()
|
||||||
|
.setFunction("sum") // <1>
|
||||||
|
.setFieldName("total") // <2>
|
||||||
|
.setDetectorDescription("Sum of total"); // <3>
|
||||||
|
//end::x-pack-ml-put-job-detector
|
||||||
|
|
||||||
|
//tag::x-pack-ml-put-job-analysis-config
|
||||||
|
List<Detector> detectors = Collections.singletonList(detectorBuilder.build()); // <1>
|
||||||
|
AnalysisConfig.Builder analysisConfigBuilder = new AnalysisConfig.Builder(detectors) // <2>
|
||||||
|
.setBucketSpan(TimeValue.timeValueMinutes(10)); // <3>
|
||||||
|
//end::x-pack-ml-put-job-analysis-config
|
||||||
|
|
||||||
|
//tag::x-pack-ml-put-job-data-description
|
||||||
|
DataDescription.Builder dataDescriptionBuilder = new DataDescription.Builder()
|
||||||
|
.setTimeField("timestamp"); // <1>
|
||||||
|
//end::x-pack-ml-put-job-data-description
|
||||||
|
|
||||||
|
{
|
||||||
|
String id = "job_1";
|
||||||
|
|
||||||
|
//tag::x-pack-ml-put-job-config
|
||||||
|
Job.Builder jobBuilder = new Job.Builder(id) // <1>
|
||||||
|
.setAnalysisConfig(analysisConfigBuilder) // <2>
|
||||||
|
.setDataDescription(dataDescriptionBuilder) // <3>
|
||||||
|
.setDescription("Total sum of requests"); // <4>
|
||||||
|
//end::x-pack-ml-put-job-config
|
||||||
|
|
||||||
|
//tag::x-pack-ml-put-job-request
|
||||||
|
PutJobRequest request = new PutJobRequest(jobBuilder.build()); // <1>
|
||||||
|
//end::x-pack-ml-put-job-request
|
||||||
|
|
||||||
|
//tag::x-pack-ml-put-job-execute
|
||||||
|
PutJobResponse response = client.machineLearning().putJob(request, RequestOptions.DEFAULT);
|
||||||
|
//end::x-pack-ml-put-job-execute
|
||||||
|
|
||||||
|
//tag::x-pack-ml-put-job-response
|
||||||
|
Date createTime = response.getResponse().getCreateTime(); // <1>
|
||||||
|
//end::x-pack-ml-put-job-response
|
||||||
|
assertThat(createTime.getTime(), greaterThan(0L));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
String id = "job_2";
|
||||||
|
Job.Builder jobBuilder = new Job.Builder(id)
|
||||||
|
.setAnalysisConfig(analysisConfigBuilder)
|
||||||
|
.setDataDescription(dataDescriptionBuilder)
|
||||||
|
.setDescription("Total sum of requests");
|
||||||
|
|
||||||
|
PutJobRequest request = new PutJobRequest(jobBuilder.build());
|
||||||
|
// tag::x-pack-ml-put-job-execute-listener
|
||||||
|
ActionListener<PutJobResponse> listener = new ActionListener<PutJobResponse>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(PutJobResponse response) {
|
||||||
|
// <1>
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Exception e) {
|
||||||
|
// <2>
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// end::x-pack-ml-put-job-execute-listener
|
||||||
|
|
||||||
|
// Replace the empty listener by a blocking listener in test
|
||||||
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
|
listener = new LatchedActionListener<>(listener, latch);
|
||||||
|
|
||||||
|
// tag::x-pack-ml-put-job-execute-async
|
||||||
|
client.machineLearning().putJobAsync(request, RequestOptions.DEFAULT, listener); // <1>
|
||||||
|
// end::x-pack-ml-put-job-execute-async
|
||||||
|
|
||||||
|
assertTrue(latch.await(30L, TimeUnit.SECONDS));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -22,27 +22,25 @@ package org.elasticsearch.client.documentation;
|
|||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.LatchedActionListener;
|
import org.elasticsearch.action.LatchedActionListener;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesResponse;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryResponse;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
||||||
|
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
|
||||||
import org.elasticsearch.action.support.IndicesOptions;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotStats;
|
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotStats;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotStatus;
|
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotStatus;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.status.SnapshotsStatusResponse;
|
||||||
|
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
||||||
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ESRestHighLevelClientTestCase;
|
import org.elasticsearch.client.ESRestHighLevelClientTestCase;
|
||||||
import org.elasticsearch.client.Request;
|
import org.elasticsearch.client.Request;
|
||||||
import org.elasticsearch.client.RequestOptions;
|
import org.elasticsearch.client.RequestOptions;
|
||||||
@ -163,7 +161,7 @@ public class SnapshotClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
// end::create-repository-request-verify
|
// end::create-repository-request-verify
|
||||||
|
|
||||||
// tag::create-repository-execute
|
// tag::create-repository-execute
|
||||||
PutRepositoryResponse response = client.snapshot().createRepository(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse response = client.snapshot().createRepository(request, RequestOptions.DEFAULT);
|
||||||
// end::create-repository-execute
|
// end::create-repository-execute
|
||||||
|
|
||||||
// tag::create-repository-response
|
// tag::create-repository-response
|
||||||
@ -178,10 +176,10 @@ public class SnapshotClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
PutRepositoryRequest request = new PutRepositoryRequest(repositoryName);
|
PutRepositoryRequest request = new PutRepositoryRequest(repositoryName);
|
||||||
|
|
||||||
// tag::create-repository-execute-listener
|
// tag::create-repository-execute-listener
|
||||||
ActionListener<PutRepositoryResponse> listener =
|
ActionListener<AcknowledgedResponse> listener =
|
||||||
new ActionListener<PutRepositoryResponse>() {
|
new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(PutRepositoryResponse putRepositoryResponse) {
|
public void onResponse(AcknowledgedResponse putRepositoryResponse) {
|
||||||
// <1>
|
// <1>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -388,7 +386,7 @@ public class SnapshotClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
// end::delete-repository-request-timeout
|
// end::delete-repository-request-timeout
|
||||||
|
|
||||||
// tag::delete-repository-execute
|
// tag::delete-repository-execute
|
||||||
DeleteRepositoryResponse response = client.snapshot().deleteRepository(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse response = client.snapshot().deleteRepository(request, RequestOptions.DEFAULT);
|
||||||
// end::delete-repository-execute
|
// end::delete-repository-execute
|
||||||
|
|
||||||
// tag::delete-repository-response
|
// tag::delete-repository-response
|
||||||
@ -403,10 +401,10 @@ public class SnapshotClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
DeleteRepositoryRequest request = new DeleteRepositoryRequest();
|
DeleteRepositoryRequest request = new DeleteRepositoryRequest();
|
||||||
|
|
||||||
// tag::delete-repository-execute-listener
|
// tag::delete-repository-execute-listener
|
||||||
ActionListener<DeleteRepositoryResponse> listener =
|
ActionListener<AcknowledgedResponse> listener =
|
||||||
new ActionListener<DeleteRepositoryResponse>() {
|
new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(DeleteRepositoryResponse deleteRepositoryResponse) {
|
public void onResponse(AcknowledgedResponse deleteRepositoryResponse) {
|
||||||
// <1>
|
// <1>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -752,7 +750,7 @@ public class SnapshotClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
// end::delete-snapshot-request-masterTimeout
|
// end::delete-snapshot-request-masterTimeout
|
||||||
|
|
||||||
// tag::delete-snapshot-execute
|
// tag::delete-snapshot-execute
|
||||||
DeleteSnapshotResponse response = client.snapshot().delete(request, RequestOptions.DEFAULT);
|
AcknowledgedResponse response = client.snapshot().delete(request, RequestOptions.DEFAULT);
|
||||||
// end::delete-snapshot-execute
|
// end::delete-snapshot-execute
|
||||||
|
|
||||||
// tag::delete-snapshot-response
|
// tag::delete-snapshot-response
|
||||||
@ -767,10 +765,10 @@ public class SnapshotClientDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
DeleteSnapshotRequest request = new DeleteSnapshotRequest();
|
DeleteSnapshotRequest request = new DeleteSnapshotRequest();
|
||||||
|
|
||||||
// tag::delete-snapshot-execute-listener
|
// tag::delete-snapshot-execute-listener
|
||||||
ActionListener<DeleteSnapshotResponse> listener =
|
ActionListener<AcknowledgedResponse> listener =
|
||||||
new ActionListener<DeleteSnapshotResponse>() {
|
new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(DeleteSnapshotResponse deleteSnapshotResponse) {
|
public void onResponse(AcknowledgedResponse deleteSnapshotResponse) {
|
||||||
// <1>
|
// <1>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,9 +23,9 @@ import org.apache.http.util.EntityUtils;
|
|||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.LatchedActionListener;
|
import org.elasticsearch.action.LatchedActionListener;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptResponse;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptResponse;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ESRestHighLevelClientTestCase;
|
import org.elasticsearch.client.ESRestHighLevelClientTestCase;
|
||||||
import org.elasticsearch.client.RequestOptions;
|
import org.elasticsearch.client.RequestOptions;
|
||||||
import org.elasticsearch.client.Response;
|
import org.elasticsearch.client.Response;
|
||||||
@ -154,7 +154,7 @@ public class StoredScriptsDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
// end::delete-stored-script-request-timeout
|
// end::delete-stored-script-request-timeout
|
||||||
|
|
||||||
// tag::delete-stored-script-execute
|
// tag::delete-stored-script-execute
|
||||||
DeleteStoredScriptResponse deleteResponse = client.deleteScript(deleteRequest, RequestOptions.DEFAULT);
|
AcknowledgedResponse deleteResponse = client.deleteScript(deleteRequest, RequestOptions.DEFAULT);
|
||||||
// end::delete-stored-script-execute
|
// end::delete-stored-script-execute
|
||||||
|
|
||||||
// tag::delete-stored-script-response
|
// tag::delete-stored-script-response
|
||||||
@ -164,10 +164,10 @@ public class StoredScriptsDocumentationIT extends ESRestHighLevelClientTestCase
|
|||||||
putStoredScript("calculate-score", scriptSource);
|
putStoredScript("calculate-score", scriptSource);
|
||||||
|
|
||||||
// tag::delete-stored-script-execute-listener
|
// tag::delete-stored-script-execute-listener
|
||||||
ActionListener<DeleteStoredScriptResponse> listener =
|
ActionListener<AcknowledgedResponse> listener =
|
||||||
new ActionListener<DeleteStoredScriptResponse>() {
|
new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(DeleteStoredScriptResponse response) {
|
public void onResponse(AcknowledgedResponse response) {
|
||||||
// <1>
|
// <1>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ subprojects {
|
|||||||
environment('JAVA_HOME', getJavaHome(it, 8))
|
environment('JAVA_HOME', getJavaHome(it, 8))
|
||||||
} else if ("6.2".equals(bwcBranch)) {
|
} else if ("6.2".equals(bwcBranch)) {
|
||||||
environment('JAVA_HOME', getJavaHome(it, 9))
|
environment('JAVA_HOME', getJavaHome(it, 9))
|
||||||
} else if (["6.3", "6.x"].contains(bwcBranch)) {
|
} else if (["6.3", "6.4", "6.x"].contains(bwcBranch)) {
|
||||||
environment('JAVA_HOME', getJavaHome(it, 10))
|
environment('JAVA_HOME', getJavaHome(it, 10))
|
||||||
} else {
|
} else {
|
||||||
environment('JAVA_HOME', project.compilerJavaHome)
|
environment('JAVA_HOME', project.compilerJavaHome)
|
||||||
|
161
docs/java-rest/high-level/ml/put_job.asciidoc
Normal file
161
docs/java-rest/high-level/ml/put_job.asciidoc
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
[[java-rest-high-x-pack-ml-put-job]]
|
||||||
|
=== Put Job API
|
||||||
|
|
||||||
|
The Put Job API can be used to create a new {ml} job
|
||||||
|
in the cluster. The API accepts a `PutJobRequest` object
|
||||||
|
as a request and returns a `PutJobResponse`.
|
||||||
|
|
||||||
|
[[java-rest-high-x-pack-ml-put-job-request]]
|
||||||
|
==== Put Job Request
|
||||||
|
|
||||||
|
A `PutJobRequest` requires the following argument:
|
||||||
|
|
||||||
|
["source","java",subs="attributes,callouts,macros"]
|
||||||
|
--------------------------------------------------
|
||||||
|
include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-request]
|
||||||
|
--------------------------------------------------
|
||||||
|
<1> The configuration of the {ml} job to create as a `Job`
|
||||||
|
|
||||||
|
[[java-rest-high-x-pack-ml-put-job-config]]
|
||||||
|
==== Job Configuration
|
||||||
|
|
||||||
|
The `Job` object contains all the details about the {ml} job
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
A `Job` requires the following arguments:
|
||||||
|
|
||||||
|
["source","java",subs="attributes,callouts,macros"]
|
||||||
|
--------------------------------------------------
|
||||||
|
include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-config]
|
||||||
|
--------------------------------------------------
|
||||||
|
<1> The job ID
|
||||||
|
<2> An analysis configuration
|
||||||
|
<3> A data description
|
||||||
|
<4> Optionally, a human-readable description
|
||||||
|
|
||||||
|
[[java-rest-high-x-pack-ml-put-job-analysis-config]]
|
||||||
|
==== Analysis Configuration
|
||||||
|
|
||||||
|
The analysis configuration of the {ml} job is defined in the `AnalysisConfig`.
|
||||||
|
`AnalysisConfig` reflects all the configuration
|
||||||
|
settings that can be defined using the REST API.
|
||||||
|
|
||||||
|
Using the REST API, we could define this analysis configuration:
|
||||||
|
|
||||||
|
[source,js]
|
||||||
|
--------------------------------------------------
|
||||||
|
"analysis_config" : {
|
||||||
|
"bucket_span" : "10m",
|
||||||
|
"detectors" : [
|
||||||
|
{
|
||||||
|
"detector_description" : "Sum of total",
|
||||||
|
"function" : "sum",
|
||||||
|
"field_name" : "total"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
--------------------------------------------------
|
||||||
|
// NOTCONSOLE
|
||||||
|
|
||||||
|
Using the `AnalysisConfig` object and the high level REST client, the list
|
||||||
|
of detectors must be built first.
|
||||||
|
|
||||||
|
An example of building a `Detector` instance is as follows:
|
||||||
|
|
||||||
|
["source","java",subs="attributes,callouts,macros"]
|
||||||
|
--------------------------------------------------
|
||||||
|
include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-detector]
|
||||||
|
--------------------------------------------------
|
||||||
|
<1> The function to use
|
||||||
|
<2> The field to apply the function to
|
||||||
|
<3> Optionally, a human-readable description
|
||||||
|
|
||||||
|
Then the same configuration would be:
|
||||||
|
|
||||||
|
["source","java",subs="attributes,callouts,macros"]
|
||||||
|
--------------------------------------------------
|
||||||
|
include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-analysis-config]
|
||||||
|
--------------------------------------------------
|
||||||
|
<1> Create a list of detectors
|
||||||
|
<2> Pass the list of detectors to the analysis config builder constructor
|
||||||
|
<3> The bucket span
|
||||||
|
|
||||||
|
[[java-rest-high-x-pack-ml-put-job-data-description]]
|
||||||
|
==== Data Description
|
||||||
|
|
||||||
|
After defining the analysis config, the next thing to define is the
|
||||||
|
data description, using a `DataDescription` instance. `DataDescription`
|
||||||
|
reflects all the configuration settings that can be defined using the
|
||||||
|
REST API.
|
||||||
|
|
||||||
|
Using the REST API, we could define this metrics configuration:
|
||||||
|
|
||||||
|
[source,js]
|
||||||
|
--------------------------------------------------
|
||||||
|
"data_description" : {
|
||||||
|
"time_field" : "timestamp"
|
||||||
|
}
|
||||||
|
--------------------------------------------------
|
||||||
|
// NOTCONSOLE
|
||||||
|
|
||||||
|
Using the `DataDescription` object and the high level REST client, the same
|
||||||
|
configuration would be:
|
||||||
|
|
||||||
|
["source","java",subs="attributes,callouts,macros"]
|
||||||
|
--------------------------------------------------
|
||||||
|
include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-data-description]
|
||||||
|
--------------------------------------------------
|
||||||
|
<1> The time field
|
||||||
|
|
||||||
|
[[java-rest-high-x-pack-ml-put-job-execution]]
|
||||||
|
==== Execution
|
||||||
|
|
||||||
|
The Put Job API can be executed through a `MachineLearningClient`
|
||||||
|
instance. Such an instance can be retrieved from a `RestHighLevelClient`
|
||||||
|
using the `machineLearning()` method:
|
||||||
|
|
||||||
|
["source","java",subs="attributes,callouts,macros"]
|
||||||
|
--------------------------------------------------
|
||||||
|
include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-execute]
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
[[java-rest-high-x-pack-ml-put-job-response]]
|
||||||
|
==== Response
|
||||||
|
|
||||||
|
The returned `PutJobResponse` returns the full representation of
|
||||||
|
the new {ml} job if it has been successfully created. This will
|
||||||
|
contain the creation time and other fields initialized using
|
||||||
|
default values:
|
||||||
|
|
||||||
|
["source","java",subs="attributes,callouts,macros"]
|
||||||
|
--------------------------------------------------
|
||||||
|
include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-response]
|
||||||
|
--------------------------------------------------
|
||||||
|
<1> The creation time is a field that was not passed in the `Job` object in the request
|
||||||
|
|
||||||
|
[[java-rest-high-x-pack-ml-put-job-async]]
|
||||||
|
==== Asynchronous Execution
|
||||||
|
|
||||||
|
This request can be executed asynchronously:
|
||||||
|
|
||||||
|
["source","java",subs="attributes,callouts,macros"]
|
||||||
|
--------------------------------------------------
|
||||||
|
include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-execute-async]
|
||||||
|
--------------------------------------------------
|
||||||
|
<1> The `PutMlJobRequest` to execute and the `ActionListener` to use when
|
||||||
|
the execution completes
|
||||||
|
|
||||||
|
The asynchronous method does not block and returns immediately. Once it is
|
||||||
|
completed the `ActionListener` is called back using the `onResponse` method
|
||||||
|
if the execution successfully completed or using the `onFailure` method if
|
||||||
|
it failed.
|
||||||
|
|
||||||
|
A typical listener for `PutJobResponse` looks like:
|
||||||
|
|
||||||
|
["source","java",subs="attributes,callouts,macros"]
|
||||||
|
--------------------------------------------------
|
||||||
|
include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-execute-listener]
|
||||||
|
--------------------------------------------------
|
||||||
|
<1> Called when the execution is successfully completed. The response is
|
||||||
|
provided as an argument
|
||||||
|
<2> Called in case of failure. The raised exception is provided as an argument
|
@ -200,6 +200,14 @@ include::licensing/put-license.asciidoc[]
|
|||||||
include::licensing/get-license.asciidoc[]
|
include::licensing/get-license.asciidoc[]
|
||||||
include::licensing/delete-license.asciidoc[]
|
include::licensing/delete-license.asciidoc[]
|
||||||
|
|
||||||
|
== Machine Learning APIs
|
||||||
|
|
||||||
|
The Java High Level REST Client supports the following Machine Learning APIs:
|
||||||
|
|
||||||
|
* <<java-rest-high-x-pack-ml-put-job>>
|
||||||
|
|
||||||
|
include::ml/put_job.asciidoc[]
|
||||||
|
|
||||||
== Migration APIs
|
== Migration APIs
|
||||||
|
|
||||||
The Java High Level REST Client supports the following Migration APIs:
|
The Java High Level REST Client supports the following Migration APIs:
|
||||||
|
50
libs/dissect/build.gradle
Normal file
50
libs/dissect/build.gradle
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import org.elasticsearch.gradle.precommit.PrecommitTasks
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
archivesBaseName = 'elasticsearch-dissect'
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
if (isEclipse == false || project.path == ":libs:dissect-tests") {
|
||||||
|
testCompile("org.elasticsearch.test:framework:${version}") {
|
||||||
|
exclude group: 'org.elasticsearch', module: 'dissect'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
testCompile "com.fasterxml.jackson.core:jackson-core:${versions.jackson}"
|
||||||
|
testCompile("com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}")
|
||||||
|
testCompile("com.fasterxml.jackson.core:jackson-databind:${versions.jackson}")
|
||||||
|
}
|
||||||
|
|
||||||
|
forbiddenApisMain {
|
||||||
|
signaturesURLs = [PrecommitTasks.getResource('/forbidden/jdk-signatures.txt')]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isEclipse) {
|
||||||
|
// in eclipse the project is under a fake root, we need to change around the source sets
|
||||||
|
sourceSets {
|
||||||
|
if (project.path == ":libs:dissect") {
|
||||||
|
main.java.srcDirs = ['java']
|
||||||
|
main.resources.srcDirs = ['resources']
|
||||||
|
} else {
|
||||||
|
test.java.srcDirs = ['java']
|
||||||
|
test.resources.srcDirs = ['resources']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
libs/dissect/src/main/eclipse-build.gradle
Normal file
3
libs/dissect/src/main/eclipse-build.gradle
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
// this is just shell gradle file for eclipse to have separate projects for dissect src and tests
|
||||||
|
apply from: '../../build.gradle'
|
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* 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.dissect;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parent class for all dissect related exceptions. Consumers may catch this exception or more specific child exceptions.
|
||||||
|
*/
|
||||||
|
public abstract class DissectException extends RuntimeException {
|
||||||
|
DissectException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error while parsing a dissect pattern
|
||||||
|
*/
|
||||||
|
static class PatternParse extends DissectException {
|
||||||
|
PatternParse(String pattern, String reason) {
|
||||||
|
super("Unable to parse pattern: " + pattern + " Reason: " + reason);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error while parsing a dissect key
|
||||||
|
*/
|
||||||
|
static class KeyParse extends DissectException {
|
||||||
|
KeyParse(String key, String reason) {
|
||||||
|
super("Unable to parse key: " + key + " Reason: " + reason);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unable to find a match between pattern and source string
|
||||||
|
*/
|
||||||
|
static class FindMatch extends DissectException {
|
||||||
|
FindMatch(String pattern, String source) {
|
||||||
|
super("Unable to find match for dissect pattern: " + pattern + " against source: " + source);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,191 @@
|
|||||||
|
/*
|
||||||
|
* 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.dissect;
|
||||||
|
|
||||||
|
import java.util.EnumSet;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>A Key of a dissect pattern. This class models the name and modifiers and provides some validation.</p>
|
||||||
|
* <p>For dissect pattern of {@code %{a} %{+a} %{b}} the dissect keys are:
|
||||||
|
* <ul>
|
||||||
|
* <li>{@code a}</li>
|
||||||
|
* <li>{@code +a}</li>
|
||||||
|
* <li>{@code b}</li>
|
||||||
|
* </ul>
|
||||||
|
* This class represents a single key.
|
||||||
|
* <p>A single key is composed of a name and it's modifiers. For the key {@code +a}, {@code a} is the name and {@code +} is the modifier.
|
||||||
|
* @see DissectParser
|
||||||
|
*/
|
||||||
|
public final class DissectKey {
|
||||||
|
private static final Pattern LEFT_MODIFIER_PATTERN = Pattern.compile("([+*&?])(.*?)(->)?$", Pattern.DOTALL);
|
||||||
|
private static final Pattern RIGHT_PADDING_PATTERN = Pattern.compile("^(.*?)(->)?$", Pattern.DOTALL);
|
||||||
|
private static final Pattern APPEND_WITH_ORDER_PATTERN = Pattern.compile("[+](.*?)(/)([0-9]+)(->)?$", Pattern.DOTALL);
|
||||||
|
private final Modifier modifier;
|
||||||
|
private boolean skip;
|
||||||
|
private boolean skipRightPadding;
|
||||||
|
private int appendPosition;
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor - parses the String key into it's name and modifier(s)
|
||||||
|
*
|
||||||
|
* @param key The key without the leading <code>%{</code> or trailing <code>}</code>, for example {@code a->}
|
||||||
|
*/
|
||||||
|
DissectKey(String key) {
|
||||||
|
skip = key == null || key.isEmpty();
|
||||||
|
modifier = Modifier.findModifier(key);
|
||||||
|
switch (modifier) {
|
||||||
|
case NONE:
|
||||||
|
Matcher matcher = RIGHT_PADDING_PATTERN.matcher(key);
|
||||||
|
while (matcher.find()) {
|
||||||
|
name = matcher.group(1);
|
||||||
|
skipRightPadding = matcher.group(2) != null;
|
||||||
|
}
|
||||||
|
skip = name.isEmpty();
|
||||||
|
break;
|
||||||
|
case NAMED_SKIP:
|
||||||
|
matcher = LEFT_MODIFIER_PATTERN.matcher(key);
|
||||||
|
while (matcher.find()) {
|
||||||
|
name = matcher.group(2);
|
||||||
|
skipRightPadding = matcher.group(3) != null;
|
||||||
|
}
|
||||||
|
skip = true;
|
||||||
|
break;
|
||||||
|
case APPEND:
|
||||||
|
matcher = LEFT_MODIFIER_PATTERN.matcher(key);
|
||||||
|
while (matcher.find()) {
|
||||||
|
name = matcher.group(2);
|
||||||
|
skipRightPadding = matcher.group(3) != null;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case FIELD_NAME:
|
||||||
|
matcher = LEFT_MODIFIER_PATTERN.matcher(key);
|
||||||
|
while (matcher.find()) {
|
||||||
|
name = matcher.group(2);
|
||||||
|
skipRightPadding = matcher.group(3) != null;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case FIELD_VALUE:
|
||||||
|
matcher = LEFT_MODIFIER_PATTERN.matcher(key);
|
||||||
|
while (matcher.find()) {
|
||||||
|
name = matcher.group(2);
|
||||||
|
skipRightPadding = matcher.group(3) != null;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case APPEND_WITH_ORDER:
|
||||||
|
matcher = APPEND_WITH_ORDER_PATTERN.matcher(key);
|
||||||
|
while (matcher.find()) {
|
||||||
|
name = matcher.group(1);
|
||||||
|
appendPosition = Short.valueOf(matcher.group(3));
|
||||||
|
skipRightPadding = matcher.group(4) != null;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (name == null || (name.isEmpty() && !skip)) {
|
||||||
|
throw new DissectException.KeyParse(key, "The key name could be determined");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor to explicitly override the modifier.
|
||||||
|
* @param key The key to copy (except for the modifier)
|
||||||
|
* @param modifier the modifer to use for this copy
|
||||||
|
*/
|
||||||
|
DissectKey(DissectKey key, DissectKey.Modifier modifier){
|
||||||
|
this.modifier = modifier;
|
||||||
|
this.skipRightPadding = key.skipRightPadding;
|
||||||
|
this.skip = key.skip;
|
||||||
|
this.name = key.name;
|
||||||
|
this.appendPosition = key.appendPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
Modifier getModifier() {
|
||||||
|
return modifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean skip() {
|
||||||
|
return skip;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean skipRightPadding() {
|
||||||
|
return skipRightPadding;
|
||||||
|
}
|
||||||
|
|
||||||
|
int getAppendPosition() {
|
||||||
|
return appendPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
//generated
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "DissectKey{" +
|
||||||
|
"modifier=" + modifier +
|
||||||
|
", skip=" + skip +
|
||||||
|
", appendPosition=" + appendPosition +
|
||||||
|
", name='" + name + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Modifier {
|
||||||
|
NONE(""), APPEND_WITH_ORDER("/"), APPEND("+"), FIELD_NAME("*"), FIELD_VALUE("&"), NAMED_SKIP("?");
|
||||||
|
|
||||||
|
private static final Pattern MODIFIER_PATTERN = Pattern.compile("[/+*&?]");
|
||||||
|
|
||||||
|
private final String modifier;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return modifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
Modifier(final String modifier) {
|
||||||
|
this.modifier = modifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
//package private for testing
|
||||||
|
static Modifier fromString(String modifier) {
|
||||||
|
return EnumSet.allOf(Modifier.class).stream().filter(km -> km.modifier.equals(modifier))
|
||||||
|
.findFirst().orElseThrow(() -> new IllegalArgumentException("Found invalid modifier.")); //throw should never happen
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Modifier findModifier(String key) {
|
||||||
|
Modifier modifier = Modifier.NONE;
|
||||||
|
if (key != null && !key.isEmpty()) {
|
||||||
|
Matcher matcher = MODIFIER_PATTERN.matcher(key);
|
||||||
|
int matches = 0;
|
||||||
|
while (matcher.find()) {
|
||||||
|
Modifier priorModifier = modifier;
|
||||||
|
modifier = Modifier.fromString(matcher.group());
|
||||||
|
if (++matches > 1 && !(APPEND.equals(priorModifier) && APPEND_WITH_ORDER.equals(modifier))) {
|
||||||
|
throw new DissectException.KeyParse(key, "multiple modifiers are not allowed.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return modifier;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,198 @@
|
|||||||
|
/*
|
||||||
|
* 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.dissect;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the matches of a {@link DissectParser#parse(String)}. Handles the appending and referencing based on the key instruction.
|
||||||
|
*/
|
||||||
|
final class DissectMatch {
|
||||||
|
|
||||||
|
private final String appendSeparator;
|
||||||
|
private final Map<String, String> results;
|
||||||
|
private final Map<String, String> simpleResults;
|
||||||
|
private final Map<String, ReferenceResult> referenceResults;
|
||||||
|
private final Map<String, AppendResult> appendResults;
|
||||||
|
private int implicitAppendOrder = -1000;
|
||||||
|
private final int maxMatches;
|
||||||
|
private final int maxResults;
|
||||||
|
private final int appendCount;
|
||||||
|
private final int referenceCount;
|
||||||
|
private final int simpleCount;
|
||||||
|
private int matches = 0;
|
||||||
|
|
||||||
|
DissectMatch(String appendSeparator, int maxMatches, int maxResults, int appendCount, int referenceCount) {
|
||||||
|
if (maxMatches <= 0 || maxResults <= 0) {
|
||||||
|
throw new IllegalArgumentException("Expected results are zero, can not construct DissectMatch");//should never happen
|
||||||
|
}
|
||||||
|
this.maxMatches = maxMatches;
|
||||||
|
this.maxResults = maxResults;
|
||||||
|
this.appendCount = appendCount;
|
||||||
|
this.referenceCount = referenceCount;
|
||||||
|
this.appendSeparator = appendSeparator;
|
||||||
|
results = new HashMap<>(maxResults);
|
||||||
|
this.simpleCount = maxMatches - referenceCount - appendCount;
|
||||||
|
simpleResults = simpleCount <= 0 ? null : new HashMap<>(simpleCount);
|
||||||
|
referenceResults = referenceCount <= 0 ? null : new HashMap<>(referenceCount);
|
||||||
|
appendResults = appendCount <= 0 ? null : new HashMap<>(appendCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the key/value that was found as result of the parsing
|
||||||
|
* @param key the {@link DissectKey}
|
||||||
|
* @param value the discovered value for the key
|
||||||
|
*/
|
||||||
|
void add(DissectKey key, String value) {
|
||||||
|
matches++;
|
||||||
|
if (key.skip()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (key.getModifier()) {
|
||||||
|
case NONE:
|
||||||
|
simpleResults.put(key.getName(), value);
|
||||||
|
break;
|
||||||
|
case APPEND:
|
||||||
|
appendResults.computeIfAbsent(key.getName(), k -> new AppendResult(appendSeparator)).addValue(value, implicitAppendOrder++);
|
||||||
|
break;
|
||||||
|
case APPEND_WITH_ORDER:
|
||||||
|
appendResults.computeIfAbsent(key.getName(),
|
||||||
|
k -> new AppendResult(appendSeparator)).addValue(value, key.getAppendPosition());
|
||||||
|
break;
|
||||||
|
case FIELD_NAME:
|
||||||
|
referenceResults.computeIfAbsent(key.getName(), k -> new ReferenceResult()).setKey(value);
|
||||||
|
break;
|
||||||
|
case FIELD_VALUE:
|
||||||
|
referenceResults.computeIfAbsent(key.getName(), k -> new ReferenceResult()).setValue(value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean fullyMatched() {
|
||||||
|
return matches == maxMatches;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if results are valid.
|
||||||
|
* @param results the results to check
|
||||||
|
* @return true if all dissect keys have been matched and the results are of the expected size.
|
||||||
|
*/
|
||||||
|
boolean isValid(Map<String, String> results) {
|
||||||
|
return fullyMatched() && results.size() == maxResults;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets all the current matches. Pass the results of this to isValid to determine if a fully successful match has occured.
|
||||||
|
*
|
||||||
|
* @return the map of the results.
|
||||||
|
*/
|
||||||
|
Map<String, String> getResults() {
|
||||||
|
results.clear();
|
||||||
|
if (simpleCount > 0) {
|
||||||
|
results.putAll(simpleResults);
|
||||||
|
}
|
||||||
|
if (referenceCount > 0) {
|
||||||
|
referenceResults.forEach((k, v) -> results.put(v.getKey(), v.getValue()));
|
||||||
|
}
|
||||||
|
if (appendCount > 0) {
|
||||||
|
appendResults.forEach((k, v) -> results.put(k, v.getAppendResult()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* a result that will need to be part of an append operation.
|
||||||
|
*/
|
||||||
|
private final class AppendResult {
|
||||||
|
private final List<AppendValue> values = new ArrayList<>();
|
||||||
|
private final String appendSeparator;
|
||||||
|
|
||||||
|
private AppendResult(String appendSeparator) {
|
||||||
|
this.appendSeparator = appendSeparator;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addValue(String value, int order) {
|
||||||
|
values.add(new AppendValue(value, order));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getAppendResult() {
|
||||||
|
Collections.sort(values);
|
||||||
|
return values.stream().map(AppendValue::getValue).collect(Collectors.joining(appendSeparator));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An appendable value that can be sorted based on the provided order
|
||||||
|
*/
|
||||||
|
private final class AppendValue implements Comparable<AppendValue> {
|
||||||
|
private final String value;
|
||||||
|
private final int order;
|
||||||
|
|
||||||
|
private AppendValue(String value, int order) {
|
||||||
|
this.value = value;
|
||||||
|
this.order = order;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getOrder() {
|
||||||
|
return order;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(AppendValue o) {
|
||||||
|
return Integer.compare(this.order, o.getOrder());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A result that needs to be converted to a key/value reference
|
||||||
|
*/
|
||||||
|
private final class ReferenceResult {
|
||||||
|
|
||||||
|
private String key;
|
||||||
|
|
||||||
|
private String getKey() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
private void setValue(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setKey(String key) {
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,310 @@
|
|||||||
|
/*
|
||||||
|
* 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.dissect;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.EnumSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Splits (dissects) a string into its parts based on a pattern.</p><p>A dissect pattern is composed of a set of keys and delimiters.
|
||||||
|
* For example the dissect pattern: <pre>%{a} %{b},%{c}</pre> has 3 keys (a,b,c) and two delimiters (space and comma). This pattern will
|
||||||
|
* match a string of the form: <pre>foo bar,baz</pre> and will result a key/value pairing of <pre>a=foo, b=bar, and c=baz.</pre>
|
||||||
|
* <p>Matches are all or nothing. For example, the same pattern will NOT match <pre>foo bar baz</pre> since all of the delimiters did not
|
||||||
|
* match. (the comma did not match)
|
||||||
|
* <p>Dissect patterns can optionally have modifiers. These modifiers instruct the parser to change it's behavior. For example the
|
||||||
|
* dissect pattern of <pre>%{a},%{b}:%{c}</pre> would not match <pre>foo,bar,baz</pre> since there the colon never matches.
|
||||||
|
* <p>Modifiers appear to the left or the right of the key name. The supported modifiers are:
|
||||||
|
* <ul>
|
||||||
|
* <li>{@code ->} Instructs the parser to ignore repeating delimiters to the right of the key. Example: <pre>
|
||||||
|
* pattern: {@code %{a->} %{b} %{c}}
|
||||||
|
* string: {@code foo bar baz}
|
||||||
|
* result: {@code a=foo, b=bar, c=baz}
|
||||||
|
* </pre></li>
|
||||||
|
* <li>{@code +} Instructs the parser to appends this key's value to value of prior key with the same name.
|
||||||
|
* Example: <pre>
|
||||||
|
* pattern: {@code %{a} %{+a} %{+a}}
|
||||||
|
* string: {@code foo bar baz}
|
||||||
|
* result: {@code a=foobarbaz}
|
||||||
|
* </pre></li>
|
||||||
|
* <li>{@code /} Instructs the parser to appends this key's value to value of a key based based on the order specified after the
|
||||||
|
* {@code /}. Requires the {@code +} modifier to also be present in the key. Example: <pre>
|
||||||
|
* pattern: {@code %{a} %{+a/2} %{+a/1}}
|
||||||
|
* string: {@code foo bar baz}
|
||||||
|
* result: {@code a=foobazbar}
|
||||||
|
* </pre>
|
||||||
|
* </li>
|
||||||
|
* <li>{@code *} Instructs the parser to ignore the name of this key, instead use the value of key as the key name.
|
||||||
|
* Requires another key with the same name and the {@code &} modifier to be the value. Example: <pre>
|
||||||
|
* pattern: {@code %{*a} %{b} %{&a}}
|
||||||
|
* string: {@code foo bar baz}
|
||||||
|
* result: {@code foo=baz, b=bar}
|
||||||
|
* </pre></li>
|
||||||
|
* <li>{@code &} Instructs the parser to ignore this key and place the matched value to a key of the same name with the {@code *} modifier.
|
||||||
|
* Requires another key with the same name and the {@code *} modifier.
|
||||||
|
* Example: <pre>
|
||||||
|
* pattern: {@code %{*a} %{b} %{&a}}
|
||||||
|
* string: {@code foo bar baz}
|
||||||
|
* result: {@code foo=baz, b=bar}
|
||||||
|
* </pre></li>
|
||||||
|
* <li>{@code ?} Instructs the parser to ignore this key. The key name exists only for the purpose of human readability. Example
|
||||||
|
* <pre>
|
||||||
|
* pattern: {@code %{a} %{?skipme} %{c}}
|
||||||
|
* string: {@code foo bar baz}
|
||||||
|
* result: {@code a=foo, c=baz}
|
||||||
|
* </pre>
|
||||||
|
* </ul>
|
||||||
|
* <p>Empty key names patterns are also supported. They behave just like the {@code ?} modifier, except the name is not required.
|
||||||
|
* The result will simply be ignored. Example
|
||||||
|
* <pre>
|
||||||
|
* pattern: {@code %{a} %{} %{c}}
|
||||||
|
* string: {@code foo bar baz}
|
||||||
|
* result: {@code a=foo, c=baz}
|
||||||
|
* </pre>
|
||||||
|
|
||||||
|
* <p>
|
||||||
|
* Inspired by the Logstash Dissect Filter by Guy Boertje
|
||||||
|
*/
|
||||||
|
public final class DissectParser {
|
||||||
|
private static final Pattern LEADING_DELIMITER_PATTERN = Pattern.compile("^(.*?)%");
|
||||||
|
private static final Pattern KEY_DELIMITER_FIELD_PATTERN = Pattern.compile("%\\{([^}]*?)}([^%]*)", Pattern.DOTALL);
|
||||||
|
private static final EnumSet<DissectKey.Modifier> ASSOCIATE_MODIFIERS = EnumSet.of(
|
||||||
|
DissectKey.Modifier.FIELD_NAME,
|
||||||
|
DissectKey.Modifier.FIELD_VALUE);
|
||||||
|
private static final EnumSet<DissectKey.Modifier> APPEND_MODIFIERS = EnumSet.of(
|
||||||
|
DissectKey.Modifier.APPEND,
|
||||||
|
DissectKey.Modifier.APPEND_WITH_ORDER);
|
||||||
|
private static final Function<DissectPair, String> KEY_NAME = val -> val.getKey().getName();
|
||||||
|
private final List<DissectPair> matchPairs;
|
||||||
|
private final String pattern;
|
||||||
|
private String leadingDelimiter = "";
|
||||||
|
private final int maxMatches;
|
||||||
|
private final int maxResults;
|
||||||
|
private final int appendCount;
|
||||||
|
private final int referenceCount;
|
||||||
|
private final String appendSeparator;
|
||||||
|
|
||||||
|
public DissectParser(String pattern, String appendSeparator) {
|
||||||
|
this.pattern = pattern;
|
||||||
|
this.appendSeparator = appendSeparator == null ? "" : appendSeparator;
|
||||||
|
Matcher matcher = LEADING_DELIMITER_PATTERN.matcher(pattern);
|
||||||
|
while (matcher.find()) {
|
||||||
|
leadingDelimiter = matcher.group(1);
|
||||||
|
}
|
||||||
|
List<DissectPair> matchPairs = new ArrayList<>();
|
||||||
|
matcher = KEY_DELIMITER_FIELD_PATTERN.matcher(pattern.substring(leadingDelimiter.length()));
|
||||||
|
while (matcher.find()) {
|
||||||
|
DissectKey key = new DissectKey(matcher.group(1));
|
||||||
|
String delimiter = matcher.group(2);
|
||||||
|
matchPairs.add(new DissectPair(key, delimiter));
|
||||||
|
}
|
||||||
|
this.maxMatches = matchPairs.size();
|
||||||
|
this.maxResults = Long.valueOf(matchPairs.stream()
|
||||||
|
.filter(dissectPair -> !dissectPair.getKey().skip()).map(KEY_NAME).distinct().count()).intValue();
|
||||||
|
if (this.maxMatches == 0 || maxResults == 0) {
|
||||||
|
throw new DissectException.PatternParse(pattern, "Unable to find any keys or delimiters.");
|
||||||
|
}
|
||||||
|
//append validation - look through all of the keys to see if there are any keys that need to participate in an append operation
|
||||||
|
// but don't have the '+' defined
|
||||||
|
Set<String> appendKeyNames = matchPairs.stream()
|
||||||
|
.filter(dissectPair -> APPEND_MODIFIERS.contains(dissectPair.getKey().getModifier()))
|
||||||
|
.map(KEY_NAME).distinct().collect(Collectors.toSet());
|
||||||
|
if (appendKeyNames.size() > 0) {
|
||||||
|
List<DissectPair> modifiedMatchPairs = new ArrayList<>(matchPairs.size());
|
||||||
|
for (DissectPair p : matchPairs) {
|
||||||
|
if (p.getKey().getModifier().equals(DissectKey.Modifier.NONE) && appendKeyNames.contains(p.getKey().getName())) {
|
||||||
|
modifiedMatchPairs.add(new DissectPair(new DissectKey(p.getKey(), DissectKey.Modifier.APPEND), p.getDelimiter()));
|
||||||
|
} else {
|
||||||
|
modifiedMatchPairs.add(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
matchPairs = modifiedMatchPairs;
|
||||||
|
}
|
||||||
|
appendCount = appendKeyNames.size();
|
||||||
|
|
||||||
|
//reference validation - ensure that '*' and '&' come in pairs
|
||||||
|
Map<String, List<DissectPair>> referenceGroupings = matchPairs.stream()
|
||||||
|
.filter(dissectPair -> ASSOCIATE_MODIFIERS.contains(dissectPair.getKey().getModifier()))
|
||||||
|
.collect(Collectors.groupingBy(KEY_NAME));
|
||||||
|
for (Map.Entry<String, List<DissectPair>> entry : referenceGroupings.entrySet()) {
|
||||||
|
if (entry.getValue().size() != 2) {
|
||||||
|
throw new DissectException.PatternParse(pattern, "Found invalid key/reference associations: '"
|
||||||
|
+ entry.getValue().stream().map(KEY_NAME).collect(Collectors.joining(",")) +
|
||||||
|
"' Please ensure each '*<key>' is matched with a matching '&<key>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
referenceCount = referenceGroupings.size() * 2;
|
||||||
|
this.matchPairs = Collections.unmodifiableList(matchPairs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Entry point to dissect a string into it's parts.</p>
|
||||||
|
*
|
||||||
|
* @param inputString The string to dissect
|
||||||
|
* @return the key/value Map of the results
|
||||||
|
* @throws DissectException if unable to dissect a pair into it's parts.
|
||||||
|
*/
|
||||||
|
public Map<String, String> parse(String inputString) {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This implements a naive string matching algorithm. The string is walked left to right, comparing each byte against
|
||||||
|
* another string's bytes looking for matches. If the bytes match, then a second cursor looks ahead to see if all the bytes
|
||||||
|
* of the other string matches. If they all match, record it and advances the primary cursor to the match point. If it can not match
|
||||||
|
* all of the bytes then progress the main cursor. Repeat till the end of the input string. Since the string being searching for
|
||||||
|
* (the delimiter) is generally small and rare the naive approach is efficient.
|
||||||
|
*
|
||||||
|
* In this case the the string that is walked is the input string, and the string being searched for is the current delimiter.
|
||||||
|
* For example for a dissect pattern of {@code %{a},%{b}:%{c}} the delimiters (comma then colon) are searched for in the
|
||||||
|
* input string. At class construction the list of keys+delimiters are found (dissectPairs), which allows the use of that ordered
|
||||||
|
* list to know which delimiter to use for the search. The delimiters is progressed once the current delimiter is matched.
|
||||||
|
*
|
||||||
|
* There are two special cases that requires additional parsing beyond the standard naive algorithm. Consecutive delimiters should
|
||||||
|
* results in a empty matches unless the {@code ->} is provided. For example given the dissect pattern of
|
||||||
|
* {@code %{a},%{b},%{c},%{d}} and input string of {@code foo,,,} the match should be successful with empty values for b,c and d.
|
||||||
|
* However, if the key modifier {@code ->}, is present it will simply skip over any delimiters just to the right of the key
|
||||||
|
* without assigning any values. For example {@code %{a->},{%b}} will match the input string of {@code foo,,,,,,bar} with a=foo and
|
||||||
|
* b=bar.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
DissectMatch dissectMatch = new DissectMatch(appendSeparator, maxMatches, maxResults, appendCount, referenceCount);
|
||||||
|
Iterator<DissectPair> it = matchPairs.iterator();
|
||||||
|
//ensure leading delimiter matches
|
||||||
|
if (inputString != null && inputString.length() > leadingDelimiter.length()
|
||||||
|
&& leadingDelimiter.equals(inputString.substring(0, leadingDelimiter.length()))) {
|
||||||
|
byte[] input = inputString.getBytes(StandardCharsets.UTF_8);
|
||||||
|
//grab the first key/delimiter pair
|
||||||
|
DissectPair dissectPair = it.next();
|
||||||
|
DissectKey key = dissectPair.getKey();
|
||||||
|
byte[] delimiter = dissectPair.getDelimiter().getBytes(StandardCharsets.UTF_8);
|
||||||
|
//start dissection after the first delimiter
|
||||||
|
int i = leadingDelimiter.length();
|
||||||
|
int valueStart = i;
|
||||||
|
int lookAheadMatches;
|
||||||
|
//start walking the input string byte by byte, look ahead for matches where needed
|
||||||
|
//if a match is found jump forward to the end of the match
|
||||||
|
for (; i < input.length; i++) {
|
||||||
|
lookAheadMatches = 0;
|
||||||
|
//potential match between delimiter and input string
|
||||||
|
if (delimiter.length > 0 && input[i] == delimiter[0]) {
|
||||||
|
//look ahead to see if the entire delimiter matches the input string
|
||||||
|
for (int j = 0; j < delimiter.length; j++) {
|
||||||
|
if (i + j < input.length && input[i + j] == delimiter[j]) {
|
||||||
|
lookAheadMatches++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//found a full delimiter match
|
||||||
|
if (lookAheadMatches == delimiter.length) {
|
||||||
|
//record the key/value tuple
|
||||||
|
byte[] value = Arrays.copyOfRange(input, valueStart, i);
|
||||||
|
dissectMatch.add(key, new String(value, StandardCharsets.UTF_8));
|
||||||
|
//jump to the end of the match
|
||||||
|
i += lookAheadMatches;
|
||||||
|
//look for consecutive delimiters (e.g. a,,,,d,e)
|
||||||
|
while (i < input.length) {
|
||||||
|
lookAheadMatches = 0;
|
||||||
|
for (int j = 0; j < delimiter.length; j++) {
|
||||||
|
if (i + j < input.length && input[i + j] == delimiter[j]) {
|
||||||
|
lookAheadMatches++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//found consecutive delimiters
|
||||||
|
if (lookAheadMatches == delimiter.length) {
|
||||||
|
//jump to the end of the match
|
||||||
|
i += lookAheadMatches;
|
||||||
|
if (!key.skipRightPadding()) {
|
||||||
|
//progress the keys/delimiter if possible
|
||||||
|
if (!it.hasNext()) {
|
||||||
|
break; //the while loop
|
||||||
|
}
|
||||||
|
dissectPair = it.next();
|
||||||
|
key = dissectPair.getKey();
|
||||||
|
//add the key with an empty value for the empty delimiter
|
||||||
|
dissectMatch.add(key, "");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
break; //the while loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//progress the keys/delimiter if possible
|
||||||
|
if (!it.hasNext()) {
|
||||||
|
break; //the for loop
|
||||||
|
}
|
||||||
|
dissectPair = it.next();
|
||||||
|
key = dissectPair.getKey();
|
||||||
|
delimiter = dissectPair.getDelimiter().getBytes(StandardCharsets.UTF_8);
|
||||||
|
//i is always one byte after the last found delimiter, aka the start of the next value
|
||||||
|
valueStart = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//the last key, grab the rest of the input (unless consecutive delimiters already grabbed the last key)
|
||||||
|
//and there is no trailing delimiter
|
||||||
|
if (!dissectMatch.fullyMatched() && delimiter.length == 0 ) {
|
||||||
|
byte[] value = Arrays.copyOfRange(input, valueStart, input.length);
|
||||||
|
String valueString = new String(value, StandardCharsets.UTF_8);
|
||||||
|
dissectMatch.add(key, valueString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Map<String, String> results = dissectMatch.getResults();
|
||||||
|
|
||||||
|
if (!dissectMatch.isValid(results)) {
|
||||||
|
throw new DissectException.FindMatch(pattern, inputString);
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A tuple class to hold the dissect key and delimiter
|
||||||
|
*/
|
||||||
|
private class DissectPair {
|
||||||
|
|
||||||
|
private final DissectKey key;
|
||||||
|
private final String delimiter;
|
||||||
|
|
||||||
|
private DissectPair(DissectKey key, String delimiter) {
|
||||||
|
this.key = key;
|
||||||
|
this.delimiter = delimiter;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DissectKey getKey() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getDelimiter() {
|
||||||
|
return delimiter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
7
libs/dissect/src/test/eclipse-build.gradle
Normal file
7
libs/dissect/src/test/eclipse-build.gradle
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
// this is just shell gradle file for eclipse to have separate projects for dissect src and tests
|
||||||
|
apply from: '../../build.gradle'
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
testCompile project(':libs:dissect')
|
||||||
|
}
|
@ -0,0 +1,178 @@
|
|||||||
|
/*
|
||||||
|
* 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.dissect;
|
||||||
|
|
||||||
|
import org.elasticsearch.test.ESTestCase;
|
||||||
|
import org.hamcrest.CoreMatchers;
|
||||||
|
|
||||||
|
import java.util.EnumSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
|
import static org.hamcrest.Matchers.is;
|
||||||
|
|
||||||
|
public class DissectKeyTests extends ESTestCase {
|
||||||
|
|
||||||
|
public void testNoModifier() {
|
||||||
|
String keyName = randomAlphaOfLengthBetween(1, 10);
|
||||||
|
DissectKey dissectKey = new DissectKey(keyName);
|
||||||
|
assertThat(dissectKey.getModifier(), equalTo(DissectKey.Modifier.NONE));
|
||||||
|
assertThat(dissectKey.skip(), is(false));
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(false));
|
||||||
|
assertThat(dissectKey.getAppendPosition(), equalTo(0));
|
||||||
|
assertThat(dissectKey.getName(), equalTo(keyName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAppendModifier() {
|
||||||
|
String keyName = randomAlphaOfLengthBetween(1, 10);
|
||||||
|
DissectKey dissectKey = new DissectKey("+" + keyName);
|
||||||
|
assertThat(dissectKey.getModifier(), equalTo(DissectKey.Modifier.APPEND));
|
||||||
|
assertThat(dissectKey.skip(), is(false));
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(false));
|
||||||
|
assertThat(dissectKey.getAppendPosition(), equalTo(0));
|
||||||
|
assertThat(dissectKey.getName(), equalTo(keyName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAppendWithOrderModifier() {
|
||||||
|
String keyName = randomAlphaOfLengthBetween(1, 10);
|
||||||
|
int length = randomIntBetween(1, 100);
|
||||||
|
DissectKey dissectKey = new DissectKey("+" + keyName + "/" + length);
|
||||||
|
assertThat(dissectKey.getModifier(), equalTo(DissectKey.Modifier.APPEND_WITH_ORDER));
|
||||||
|
assertThat(dissectKey.skip(), is(false));
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(false));
|
||||||
|
assertThat(dissectKey.getAppendPosition(), equalTo(length));
|
||||||
|
assertThat(dissectKey.getName(), equalTo(keyName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAppendWithOrderModifierNoName() {
|
||||||
|
int length = randomIntBetween(1, 100);
|
||||||
|
DissectException e = expectThrows(DissectException.class, () -> new DissectKey("+/" + length));
|
||||||
|
assertThat(e.getMessage(), CoreMatchers.containsString("Unable to parse key"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testOrderModifierWithoutAppend() {
|
||||||
|
String keyName = randomAlphaOfLengthBetween(1, 10);
|
||||||
|
int length = randomIntBetween(1, 100);
|
||||||
|
DissectException e = expectThrows(DissectException.class, () -> new DissectKey(keyName + "/" + length));
|
||||||
|
assertThat(e.getMessage(), CoreMatchers.containsString("Unable to parse key"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testFieldNameModifier() {
|
||||||
|
String keyName = randomAlphaOfLengthBetween(1, 10);
|
||||||
|
DissectKey dissectKey = new DissectKey("*" + keyName);
|
||||||
|
assertThat(dissectKey.getModifier(), equalTo(DissectKey.Modifier.FIELD_NAME));
|
||||||
|
assertThat(dissectKey.skip(), is(false));
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(false));
|
||||||
|
assertThat(dissectKey.getAppendPosition(), equalTo(0));
|
||||||
|
assertThat(dissectKey.getName(), equalTo(keyName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testFieldValueModifiers() {
|
||||||
|
String keyName = randomAlphaOfLengthBetween(1, 10);
|
||||||
|
DissectKey dissectKey = new DissectKey("&" + keyName);
|
||||||
|
assertThat(dissectKey.getModifier(), equalTo(DissectKey.Modifier.FIELD_VALUE));
|
||||||
|
assertThat(dissectKey.skip(), is(false));
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(false));
|
||||||
|
assertThat(dissectKey.getAppendPosition(), equalTo(0));
|
||||||
|
assertThat(dissectKey.getName(), equalTo(keyName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRightPaddingModifiers() {
|
||||||
|
String keyName = randomAlphaOfLengthBetween(1, 10);
|
||||||
|
DissectKey dissectKey = new DissectKey(keyName + "->");
|
||||||
|
assertThat(dissectKey.getModifier(), equalTo(DissectKey.Modifier.NONE));
|
||||||
|
assertThat(dissectKey.skip(), is(false));
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(true));
|
||||||
|
assertThat(dissectKey.getAppendPosition(), equalTo(0));
|
||||||
|
assertThat(dissectKey.getName(), equalTo(keyName));
|
||||||
|
|
||||||
|
dissectKey = new DissectKey("*" + keyName + "->");
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(true));
|
||||||
|
|
||||||
|
dissectKey = new DissectKey("&" + keyName + "->");
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(true));
|
||||||
|
|
||||||
|
dissectKey = new DissectKey("+" + keyName + "->");
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(true));
|
||||||
|
|
||||||
|
dissectKey = new DissectKey("?" + keyName + "->");
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(true));
|
||||||
|
|
||||||
|
dissectKey = new DissectKey("+" + keyName + "/2->");
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(true));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMultipleLeftModifiers() {
|
||||||
|
String keyName = randomAlphaOfLengthBetween(1, 10);
|
||||||
|
List<String> validModifiers = EnumSet.allOf(DissectKey.Modifier.class).stream()
|
||||||
|
.filter(m -> !m.equals(DissectKey.Modifier.NONE))
|
||||||
|
.map(DissectKey.Modifier::toString)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
String modifier1 = randomFrom(validModifiers);
|
||||||
|
String modifier2 = randomFrom(validModifiers);
|
||||||
|
DissectException e = expectThrows(DissectException.class, () -> new DissectKey(modifier1 + modifier2 + keyName));
|
||||||
|
assertThat(e.getMessage(), CoreMatchers.containsString("Unable to parse key"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSkipKey() {
|
||||||
|
String keyName = "";
|
||||||
|
DissectKey dissectKey = new DissectKey(keyName);
|
||||||
|
assertThat(dissectKey.getModifier(), equalTo(DissectKey.Modifier.NONE));
|
||||||
|
assertThat(dissectKey.skip(), is(true));
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(false));
|
||||||
|
assertThat(dissectKey.getAppendPosition(), equalTo(0));
|
||||||
|
assertThat(dissectKey.getName(), equalTo(keyName));
|
||||||
|
}
|
||||||
|
public void testNamedSkipKey() {
|
||||||
|
String keyName = "myname";
|
||||||
|
DissectKey dissectKey = new DissectKey("?" +keyName);
|
||||||
|
assertThat(dissectKey.getModifier(), equalTo(DissectKey.Modifier.NAMED_SKIP));
|
||||||
|
assertThat(dissectKey.skip(), is(true));
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(false));
|
||||||
|
assertThat(dissectKey.getAppendPosition(), equalTo(0));
|
||||||
|
assertThat(dissectKey.getName(), equalTo(keyName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSkipKeyWithPadding() {
|
||||||
|
String keyName = "";
|
||||||
|
DissectKey dissectKey = new DissectKey(keyName + "->");
|
||||||
|
assertThat(dissectKey.getModifier(), equalTo(DissectKey.Modifier.NONE));
|
||||||
|
assertThat(dissectKey.skip(), is(true));
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(true));
|
||||||
|
assertThat(dissectKey.getAppendPosition(), equalTo(0));
|
||||||
|
assertThat(dissectKey.getName(), equalTo(keyName));
|
||||||
|
}
|
||||||
|
public void testNamedEmptySkipKeyWithPadding() {
|
||||||
|
String keyName = "";
|
||||||
|
DissectKey dissectKey = new DissectKey("?" +keyName + "->");
|
||||||
|
assertThat(dissectKey.getModifier(), equalTo(DissectKey.Modifier.NAMED_SKIP));
|
||||||
|
assertThat(dissectKey.skip(), is(true));
|
||||||
|
assertThat(dissectKey.skipRightPadding(), is(true));
|
||||||
|
assertThat(dissectKey.getAppendPosition(), equalTo(0));
|
||||||
|
assertThat(dissectKey.getName(), equalTo(keyName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testInvalidModifiers() {
|
||||||
|
//should never happen due to regex
|
||||||
|
IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> DissectKey.Modifier.fromString("x"));
|
||||||
|
assertThat(e.getMessage(), CoreMatchers.containsString("invalid modifier"));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* 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.dissect;
|
||||||
|
|
||||||
|
import org.elasticsearch.common.collect.MapBuilder;
|
||||||
|
import org.elasticsearch.test.ESTestCase;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
|
|
||||||
|
public class DissectMatchTests extends ESTestCase {
|
||||||
|
|
||||||
|
public void testIllegalArgs() {
|
||||||
|
expectThrows(IllegalArgumentException.class, () -> new DissectMatch("", 0, 1, 0, 0));
|
||||||
|
expectThrows(IllegalArgumentException.class, () -> new DissectMatch("", 1, 0, 0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testValidAndFullyMatched() {
|
||||||
|
int expectedMatches = randomIntBetween(1, 26);
|
||||||
|
DissectMatch dissectMatch = new DissectMatch("", expectedMatches, expectedMatches, 0, 0);
|
||||||
|
IntStream.range(97, 97 + expectedMatches) //allow for a-z values
|
||||||
|
.forEach(i -> dissectMatch.add(new DissectKey(new String(new byte[]{(byte) i}, StandardCharsets.UTF_8)), ""));
|
||||||
|
assertThat(dissectMatch.fullyMatched(), equalTo(true));
|
||||||
|
assertThat(dissectMatch.isValid(dissectMatch.getResults()), equalTo(true));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testNotValidAndFullyMatched() {
|
||||||
|
int expectedMatches = randomIntBetween(1, 26);
|
||||||
|
DissectMatch dissectMatch = new DissectMatch("", expectedMatches, expectedMatches, 0, 0);
|
||||||
|
IntStream.range(97, 97 + expectedMatches - 1) //allow for a-z values
|
||||||
|
.forEach(i -> dissectMatch.add(new DissectKey(new String(new byte[]{(byte) i}, StandardCharsets.UTF_8)), ""));
|
||||||
|
assertThat(dissectMatch.fullyMatched(), equalTo(false));
|
||||||
|
assertThat(dissectMatch.isValid(dissectMatch.getResults()), equalTo(false));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetResultsIdempotent(){
|
||||||
|
int expectedMatches = randomIntBetween(1, 26);
|
||||||
|
DissectMatch dissectMatch = new DissectMatch("", expectedMatches, expectedMatches, 0, 0);
|
||||||
|
IntStream.range(97, 97 + expectedMatches) //allow for a-z values
|
||||||
|
.forEach(i -> dissectMatch.add(new DissectKey(new String(new byte[]{(byte) i}, StandardCharsets.UTF_8)), ""));
|
||||||
|
assertThat(dissectMatch.getResults(), equalTo(dissectMatch.getResults()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAppend(){
|
||||||
|
DissectMatch dissectMatch = new DissectMatch("-", 3, 1, 3, 0);
|
||||||
|
dissectMatch.add(new DissectKey("+a"), "x");
|
||||||
|
dissectMatch.add(new DissectKey("+a"), "y");
|
||||||
|
dissectMatch.add(new DissectKey("+a"), "z");
|
||||||
|
Map<String, String> results = dissectMatch.getResults();
|
||||||
|
assertThat(dissectMatch.isValid(results), equalTo(true));
|
||||||
|
assertThat(results, equalTo(MapBuilder.newMapBuilder().put("a", "x-y-z").map()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAppendWithOrder(){
|
||||||
|
DissectMatch dissectMatch = new DissectMatch("-", 3, 1, 3, 0);
|
||||||
|
dissectMatch.add(new DissectKey("+a/3"), "x");
|
||||||
|
dissectMatch.add(new DissectKey("+a"), "y");
|
||||||
|
dissectMatch.add(new DissectKey("+a/1"), "z");
|
||||||
|
Map<String, String> results = dissectMatch.getResults();
|
||||||
|
assertThat(dissectMatch.isValid(results), equalTo(true));
|
||||||
|
assertThat(results, equalTo(MapBuilder.newMapBuilder().put("a", "y-z-x").map()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testReference(){
|
||||||
|
DissectMatch dissectMatch = new DissectMatch("-", 2, 1, 0, 1);
|
||||||
|
dissectMatch.add(new DissectKey("&a"), "x");
|
||||||
|
dissectMatch.add(new DissectKey("*a"), "y");
|
||||||
|
Map<String, String> results = dissectMatch.getResults();
|
||||||
|
assertThat(dissectMatch.isValid(results), equalTo(true));
|
||||||
|
assertThat(results, equalTo(MapBuilder.newMapBuilder().put("y", "x").map()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,386 @@
|
|||||||
|
/*
|
||||||
|
* 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.dissect;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import org.elasticsearch.test.ESTestCase;
|
||||||
|
import org.hamcrest.CoreMatchers;
|
||||||
|
import org.hamcrest.Matchers;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static com.carrotsearch.randomizedtesting.RandomizedTest.randomAsciiAlphanumOfLengthBetween;
|
||||||
|
|
||||||
|
public class DissectParserTests extends ESTestCase {
|
||||||
|
|
||||||
|
public void testJavaDocExamples() {
|
||||||
|
assertMatch("%{a} %{b},%{c}", "foo bar,baz", Arrays.asList("a", "b", "c"), Arrays.asList("foo", "bar", "baz"));
|
||||||
|
assertMiss("%{a},%{b}:%{c}", "foo,bar,baz");
|
||||||
|
assertMatch("%{a->} %{b} %{c}", "foo bar baz", Arrays.asList("a", "b", "c"), Arrays.asList("foo", "bar", "baz"));
|
||||||
|
assertMatch("%{a} %{+a} %{+a}", "foo bar baz", Arrays.asList("a"), Arrays.asList("foobarbaz"));
|
||||||
|
assertMatch("%{a} %{+a/2} %{+a/1}", "foo bar baz", Arrays.asList("a"), Arrays.asList("foobazbar"));
|
||||||
|
assertMatch("%{*a} %{b} %{&a}", "foo bar baz", Arrays.asList("foo", "b"), Arrays.asList("baz", "bar"));
|
||||||
|
assertMatch("%{a} %{} %{c}", "foo bar baz", Arrays.asList("a", "c"), Arrays.asList("foo", "baz"));
|
||||||
|
assertMatch("%{a} %{?skipme} %{c}", "foo bar baz", Arrays.asList("a", "c"), Arrays.asList("foo", "baz"));
|
||||||
|
assertMatch("%{a},%{b},%{c},%{d}", "foo,,,", Arrays.asList("a", "b", "c", "d"), Arrays.asList("foo", "", "", ""));
|
||||||
|
assertMatch("%{a->},%{b}", "foo,,,,,,bar", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Borrowed from Logstash's test cases:
|
||||||
|
* https://github.com/logstash-plugins/logstash-filter-dissect/blob/master/src/test/java/org/logstash/dissect/DissectorTest.java
|
||||||
|
* Append Note - Logstash appends with the delimiter as the separator between values, this uses a user defined separator
|
||||||
|
*/
|
||||||
|
public void testLogstashSpecs() {
|
||||||
|
assertMatch("%{a} %{b->} %{c}", "foo bar baz", Arrays.asList("a", "b", "c"), Arrays.asList("foo", "bar", "baz"));
|
||||||
|
assertMiss("%{a}%{b} %{c}", null);
|
||||||
|
assertMiss("%{a} %{b}%{c} %{d}", "foo bar baz");
|
||||||
|
assertMiss("%{a} %{b} %{c}%{d}", "foo bar baz quux");
|
||||||
|
assertMatch("%{a} %{b->} %{c}", "foo bar baz", Arrays.asList("a", "b", "c"), Arrays.asList("foo", "bar", "baz"));
|
||||||
|
assertMatch("%{a} %{} %{c}", "foo bar baz", Arrays.asList("a", "c"), Arrays.asList("foo", "baz"));
|
||||||
|
assertMatch("%{a} %{b} %{+b} %{z}", "foo bar baz quux", Arrays.asList("a", "b", "z"), Arrays.asList("foo", "bar baz", "quux"), " ");
|
||||||
|
assertMatch("%{a}------->%{b}", "foo------->bar baz quux", Arrays.asList("a", "b"), Arrays.asList("foo", "bar baz quux"));
|
||||||
|
assertMatch("%{a}------->%{}", "foo------->bar baz quux", Arrays.asList("a"), Arrays.asList("foo"));
|
||||||
|
assertMatch("%{a} » %{b}»%{c}€%{d}", "foo » bar»baz€quux",
|
||||||
|
Arrays.asList("a", "b", "c", "d"), Arrays.asList("foo", "bar", "baz", "quux"));
|
||||||
|
assertMatch("%{a} %{b} %{+a}", "foo bar baz quux", Arrays.asList("a", "b"), Arrays.asList("foo baz quux", "bar"), " ");
|
||||||
|
//Logstash supports implicit ordering based anchored by the the key without the '+'
|
||||||
|
//This implementation will only honor implicit ordering for appending right to left else explicit order (/N) is required.
|
||||||
|
//The results of this test differ from Logstash.
|
||||||
|
assertMatch("%{+a} %{a} %{+a} %{b}", "December 31 1999 quux",
|
||||||
|
Arrays.asList("a", "b"), Arrays.asList("December 31 1999", "quux"), " ");
|
||||||
|
//Same test as above, but with same result as Logstash using explicit ordering in the pattern
|
||||||
|
assertMatch("%{+a/1} %{a} %{+a/2} %{b}", "December 31 1999 quux",
|
||||||
|
Arrays.asList("a", "b"), Arrays.asList("31 December 1999", "quux"), " ");
|
||||||
|
assertMatch("%{+a/2} %{+a/4} %{+a/1} %{+a/3}", "bar quux foo baz", Arrays.asList("a"), Arrays.asList("foo bar baz quux"), " ");
|
||||||
|
assertMatch("%{+a} %{b}", "foo bar", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
assertMatch("%{+a} %{b} %{+a} %{c}", "foo bar baz quux",
|
||||||
|
Arrays.asList("a", "b", "c"), Arrays.asList("foo baz", "bar", "quux"), " ");
|
||||||
|
assertMatch("%{} %{syslog_timestamp} %{hostname} %{rt}: %{reason} %{+reason} %{src_ip}/%{src_port}->%{dst_ip}/%{dst_port} " +
|
||||||
|
"%{polrt} %{+polrt} %{+polrt} %{from_zone} %{to_zone} %{rest}",
|
||||||
|
"42 2016-05-25T14:47:23Z host.name.com RT_FLOW - RT_FLOW_SESSION_DENY: session denied 2.2.2.20/60000->1.1.1.10/8090 None " +
|
||||||
|
"6(0) DEFAULT-DENY ZONE-UNTRUST ZONE-DMZ UNKNOWN UNKNOWN N/A(N/A) ge-0/0/0.0",
|
||||||
|
Arrays.asList("syslog_timestamp", "hostname", "rt", "reason", "src_ip", "src_port", "dst_ip", "dst_port", "polrt"
|
||||||
|
, "from_zone", "to_zone", "rest"),
|
||||||
|
Arrays.asList("2016-05-25T14:47:23Z", "host.name.com", "RT_FLOW - RT_FLOW_SESSION_DENY", "session denied", "2.2.2.20", "60000"
|
||||||
|
, "1.1.1.10", "8090", "None 6(0) DEFAULT-DENY", "ZONE-UNTRUST", "ZONE-DMZ", "UNKNOWN UNKNOWN N/A(N/A) ge-0/0/0.0"), " ");
|
||||||
|
assertBadKey("%{+/2}");
|
||||||
|
assertBadKey("%{&+a_field}");
|
||||||
|
assertMatch("%{a->} %{b->}---%{c}", "foo bar------------baz",
|
||||||
|
Arrays.asList("a", "b", "c"), Arrays.asList("foo", "bar", "baz"));
|
||||||
|
assertMatch("%{->}-%{a}", "-----666", Arrays.asList("a"), Arrays.asList("666"));
|
||||||
|
assertMatch("%{?skipme->}-%{a}", "-----666", Arrays.asList("a"), Arrays.asList("666"));
|
||||||
|
assertMatch("%{a},%{b},%{c},%{d},%{e},%{f}", "111,,333,,555,666",
|
||||||
|
Arrays.asList("a", "b", "c", "d", "e", "f"), Arrays.asList("111", "", "333", "", "555", "666"));
|
||||||
|
assertMatch("%{a}.࿏.%{b}", "⟳༒.࿏.༒⟲", Arrays.asList("a", "b"), Arrays.asList("⟳༒", "༒⟲"));
|
||||||
|
assertMatch("%{a}", "子", Arrays.asList("a"), Arrays.asList("子"));
|
||||||
|
assertMatch("%{a}{\n}%{b}", "aaa{\n}bbb", Arrays.asList("a", "b"), Arrays.asList("aaa", "bbb"));
|
||||||
|
assertMiss("MACHINE[%{a}] %{b}", "1234567890 MACHINE[foo] bar");
|
||||||
|
assertMiss("%{a} %{b} %{c}", "foo:bar:baz");
|
||||||
|
assertMatch("/var/%{key1}/log/%{key2}.log", "/var/foo/log/bar.log", Arrays.asList("key1", "key2"), Arrays.asList("foo", "bar"));
|
||||||
|
assertMatch("%{a->} %{b}-.-%{c}-%{d}-..-%{e}-%{f}-%{g}-%{h}", "foo bar-.-baz-1111-..-22-333-4444-55555",
|
||||||
|
Arrays.asList("a", "b", "c", "d", "e", "f", "g", "h"),
|
||||||
|
Arrays.asList("foo", "bar", "baz", "1111", "22", "333", "4444", "55555"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testBasicMatch() {
|
||||||
|
String valueFirstInput = "";
|
||||||
|
String keyFirstPattern = "";
|
||||||
|
String delimiterFirstInput = "";
|
||||||
|
String delimiterFirstPattern = "";
|
||||||
|
//parallel arrays
|
||||||
|
List<String> expectedKeys = Arrays.asList(generateRandomStringArray(100, 10, false, false));
|
||||||
|
List<String> expectedValues = new ArrayList<>(expectedKeys.size());
|
||||||
|
for (String key : expectedKeys) {
|
||||||
|
String value = randomAsciiAlphanumOfLengthBetween(1, 100);
|
||||||
|
String delimiter = Integer.toString(randomInt()); //int to ensures values and delimiters don't overlap, else validation can fail
|
||||||
|
keyFirstPattern += "%{" + key + "}" + delimiter;
|
||||||
|
valueFirstInput += value + delimiter;
|
||||||
|
delimiterFirstPattern += delimiter + "%{" + key + "}";
|
||||||
|
delimiterFirstInput += delimiter + value;
|
||||||
|
expectedValues.add(value);
|
||||||
|
}
|
||||||
|
assertMatch(keyFirstPattern, valueFirstInput, expectedKeys, expectedValues);
|
||||||
|
assertMatch(delimiterFirstPattern, delimiterFirstInput, expectedKeys, expectedValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testBasicMatchUnicode() {
|
||||||
|
String valueFirstInput = "";
|
||||||
|
String keyFirstPattern = "";
|
||||||
|
String delimiterFirstInput = "";
|
||||||
|
String delimiterFirstPattern = "";
|
||||||
|
//parallel arrays
|
||||||
|
List<String> expectedKeys = new ArrayList<>();
|
||||||
|
List<String> expectedValues = new ArrayList<>();
|
||||||
|
for (int i = 0; i < randomIntBetween(1, 100); i++) {
|
||||||
|
String key = randomAsciiAlphanumOfLengthBetween(1, 100);
|
||||||
|
String value = randomRealisticUnicodeOfCodepointLengthBetween(1, 100);
|
||||||
|
String delimiter = Integer.toString(randomInt()); //int to ensures values and delimiters don't overlap, else validation can fail
|
||||||
|
keyFirstPattern += "%{" + key + "}" + delimiter;
|
||||||
|
valueFirstInput += value + delimiter;
|
||||||
|
delimiterFirstPattern += delimiter + "%{" + key + "}";
|
||||||
|
delimiterFirstInput += delimiter + value;
|
||||||
|
expectedKeys.add(key);
|
||||||
|
expectedValues.add(value);
|
||||||
|
}
|
||||||
|
assertMatch(keyFirstPattern, valueFirstInput, expectedKeys, expectedValues);
|
||||||
|
assertMatch(delimiterFirstPattern, delimiterFirstInput, expectedKeys, expectedValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMatchUnicode() {
|
||||||
|
assertMatch("%{a} %{b}", "foo 子", Arrays.asList("a", "b"), Arrays.asList("foo", "子"));
|
||||||
|
assertMatch("%{a}࿏%{b} %{c}", "⟳༒࿏༒⟲ 子", Arrays.asList("a", "b", "c"), Arrays.asList("⟳༒", "༒⟲", "子"));
|
||||||
|
assertMatch("%{a}࿏%{+a} %{+a}", "⟳༒࿏༒⟲ 子", Arrays.asList("a"), Arrays.asList("⟳༒༒⟲子"));
|
||||||
|
assertMatch("%{a}࿏%{+a/2} %{+a/1}", "⟳༒࿏༒⟲ 子", Arrays.asList("a"), Arrays.asList("⟳༒子༒⟲"));
|
||||||
|
assertMatch("%{a->}࿏%{b}", "⟳༒࿏࿏࿏࿏࿏༒⟲", Arrays.asList("a", "b"), Arrays.asList("⟳༒", "༒⟲"));
|
||||||
|
assertMatch("%{*a}࿏%{&a}", "⟳༒࿏༒⟲", Arrays.asList("⟳༒"), Arrays.asList("༒⟲"));
|
||||||
|
assertMatch("%{}࿏%{a}", "⟳༒࿏༒⟲", Arrays.asList("a"), Arrays.asList("༒⟲"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMatchRemainder() {
|
||||||
|
assertMatch("%{a}", "foo bar the rest", Arrays.asList("a"), Arrays.asList("foo bar the rest"));
|
||||||
|
assertMatch("%{a} %{b}", "foo bar the rest", Arrays.asList("a", "b"), Arrays.asList("foo", "bar the rest"));
|
||||||
|
assertMatch("%{} %{b}", "foo bar the rest", Arrays.asList("b"), Arrays.asList("bar the rest"));
|
||||||
|
assertMatch("%{a} %{b->}", "foo bar the rest", Arrays.asList("a", "b"), Arrays.asList("foo", "bar the rest"));
|
||||||
|
assertMatch("%{*a} %{&a}", "foo bar the rest", Arrays.asList("foo"), Arrays.asList("bar the rest"));
|
||||||
|
assertMatch("%{a} %{+a}", "foo bar the rest", Arrays.asList("a"), Arrays.asList("foo bar the rest"), " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAppend() {
|
||||||
|
assertMatch("%{a} %{+a} %{+a}", "foo bar baz", Arrays.asList("a"), Arrays.asList("foobarbaz"));
|
||||||
|
assertMatch("%{a} %{+a} %{b} %{+b}", "foo bar baz lol", Arrays.asList("a", "b"), Arrays.asList("foobar", "bazlol"));
|
||||||
|
assertMatch("%{a} %{+a/2} %{+a/1}", "foo bar baz", Arrays.asList("a"), Arrays.asList("foobazbar"));
|
||||||
|
assertMatch("%{a} %{+a/2} %{+a/1}", "foo bar baz", Arrays.asList("a"), Arrays.asList("foo baz bar"), " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAssociate() {
|
||||||
|
assertMatch("%{*a} %{&a}", "foo bar", Arrays.asList("foo"), Arrays.asList("bar"));
|
||||||
|
assertMatch("%{&a} %{*a}", "foo bar", Arrays.asList("bar"), Arrays.asList("foo"));
|
||||||
|
assertMatch("%{*a} %{&a} %{*b} %{&b}", "foo bar baz lol", Arrays.asList("foo", "baz"), Arrays.asList("bar", "lol"));
|
||||||
|
assertMatch("%{*a} %{&a} %{c} %{*b} %{&b}", "foo bar x baz lol",
|
||||||
|
Arrays.asList("foo", "baz", "c"), Arrays.asList("bar", "lol", "x"));
|
||||||
|
assertBadPattern("%{*a} %{a}");
|
||||||
|
assertBadPattern("%{a} %{&a}");
|
||||||
|
assertMiss("%{*a} %{&a} {a} %{*b} %{&b}", "foo bar x baz lol");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAppendAndAssociate() {
|
||||||
|
assertMatch("%{a} %{+a} %{*b} %{&b}", "foo bar baz lol", Arrays.asList("a", "baz"), Arrays.asList("foobar", "lol"));
|
||||||
|
assertMatch("%{a->} %{+a/2} %{+a/1} %{*b} %{&b}", "foo bar baz lol x",
|
||||||
|
Arrays.asList("a", "lol"), Arrays.asList("foobazbar", "x"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testEmptyKey() {
|
||||||
|
assertMatch("%{} %{b}", "foo bar", Arrays.asList("b"), Arrays.asList("bar"));
|
||||||
|
assertMatch("%{a} %{}", "foo bar", Arrays.asList("a"), Arrays.asList("foo"));
|
||||||
|
assertMatch("%{->} %{b}", "foo bar", Arrays.asList("b"), Arrays.asList("bar"));
|
||||||
|
assertMatch("%{->} %{b}", " bar", Arrays.asList("b"), Arrays.asList("bar"));
|
||||||
|
assertMatch("%{a} %{->}", "foo bar ", Arrays.asList("a"), Arrays.asList("foo"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testNamedSkipKey() {
|
||||||
|
assertMatch("%{?foo} %{b}", "foo bar", Arrays.asList("b"), Arrays.asList("bar"));
|
||||||
|
assertMatch("%{?} %{b}", "foo bar", Arrays.asList("b"), Arrays.asList("bar"));
|
||||||
|
assertMatch("%{a} %{?bar}", "foo bar", Arrays.asList("a"), Arrays.asList("foo"));
|
||||||
|
assertMatch("%{?foo->} %{b}", "foo bar", Arrays.asList("b"), Arrays.asList("bar"));
|
||||||
|
assertMatch("%{?->} %{b}", "foo bar", Arrays.asList("b"), Arrays.asList("bar"));
|
||||||
|
assertMatch("%{?foo->} %{b}", " bar", Arrays.asList("b"), Arrays.asList("bar"));
|
||||||
|
assertMatch("%{a} %{->?bar}", "foo bar ", Arrays.asList("a"), Arrays.asList("foo"));
|
||||||
|
assertMatch("%{a} %{?skipme} %{?skipme}", "foo bar baz", Arrays.asList("a"), Arrays.asList("foo"));
|
||||||
|
assertMatch("%{a} %{?} %{?}", "foo bar baz", Arrays.asList("a"), Arrays.asList("foo"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testConsecutiveDelimiters() {
|
||||||
|
//leading
|
||||||
|
assertMatch("%{->},%{a}", ",,,,,foo", Arrays.asList("a"), Arrays.asList("foo"));
|
||||||
|
assertMatch("%{a->},%{b}", ",,,,,foo", Arrays.asList("a", "b"), Arrays.asList("", "foo"));
|
||||||
|
//trailing
|
||||||
|
assertMatch("%{a->},", "foo,,,,,", Arrays.asList("a"), Arrays.asList("foo"));
|
||||||
|
assertMatch("%{a} %{b},", "foo bar,,,,,", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
assertMatch("%{a} %{b->},", "foo bar,,,,,", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
//middle
|
||||||
|
assertMatch("%{a->},%{b}", "foo,,,,,bar", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
assertMatch("%{a->} %{b}", "foo bar", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
assertMatch("%{a->}x%{b}", "fooxxxxxbar", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
assertMatch("%{a->} xyz%{b}", "foo xyz xyz xyz xyz xyzbar", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
//skipped with empty values
|
||||||
|
assertMatch("%{a},%{b},%{c},%{d}", "foo,,,", Arrays.asList("a", "b", "c", "d"), Arrays.asList("foo", "", "", ""));
|
||||||
|
assertMatch("%{a},%{b},%{c},%{d}", "foo,,bar,baz", Arrays.asList("a", "b", "c", "d"), Arrays.asList("foo", "", "bar", "baz"));
|
||||||
|
assertMatch("%{a},%{b},%{c},%{d}", "foo,,,baz", Arrays.asList("a", "b", "c", "d"), Arrays.asList("foo", "", "", "baz"));
|
||||||
|
assertMatch("%{a},%{b},%{c},%{d}", ",bar,,baz", Arrays.asList("a", "b", "c", "d"), Arrays.asList("", "bar", "", "baz"));
|
||||||
|
assertMatch("%{->},%{a->},%{b}", ",,,bar,,baz", Arrays.asList("a", "b"), Arrays.asList("bar", "baz"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAppendWithConsecutiveDelimiters() {
|
||||||
|
assertMatch("%{+a/1},%{+a/3}-%{+a/2} %{b}", "foo,bar----baz lol", Arrays.asList("a", "b"), Arrays.asList("foobar", ""));
|
||||||
|
assertMatch("%{+a/1},%{+a/3->}-%{+a/2} %{b}", "foo,bar----baz lol", Arrays.asList("a", "b"), Arrays.asList("foobazbar", "lol"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSkipRightPadding() {
|
||||||
|
assertMatch("%{a->} %{b}", "foo bar", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
assertMatch("%{a->} %{b}", "foo bar", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
assertMatch("%{->} %{a}", "foo bar", Arrays.asList("a"), Arrays.asList("bar"));
|
||||||
|
assertMatch("%{a->} %{+a->} %{*b->} %{&b->} %{c}", "foo bar baz lol x",
|
||||||
|
Arrays.asList("a", "baz", "c"), Arrays.asList("foobar", "lol", "x"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testTrimmedEnd() {
|
||||||
|
assertMatch("%{a} %{b}", "foo bar", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
assertMatch("%{a} %{b->} ", "foo bar ", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
//only whitespace is trimmed in the absence of trailing characters
|
||||||
|
assertMatch("%{a} %{b->}", "foo bar,,,,,,", Arrays.asList("a", "b"), Arrays.asList("foo", "bar,,,,,,"));
|
||||||
|
//consecutive delimiters + right padding can be used to skip over the trailing delimiters
|
||||||
|
assertMatch("%{a} %{b->},", "foo bar,,,,,,", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testLeadingDelimiter() {
|
||||||
|
assertMatch(",,,%{a} %{b}", ",,,foo bar", Arrays.asList("a", "b"), Arrays.asList("foo", "bar"));
|
||||||
|
assertMatch(",%{a} %{b}", ",,foo bar", Arrays.asList("a", "b"), Arrays.asList(",foo", "bar"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runtime errors
|
||||||
|
*/
|
||||||
|
public void testMiss() {
|
||||||
|
assertMiss("%{a}%{b}", "foo");
|
||||||
|
assertMiss("%{a},%{b}", "foo bar");
|
||||||
|
assertMiss("%{a}, %{b}", "foo,bar");
|
||||||
|
assertMiss("x%{a},%{b}", "foo,bar");
|
||||||
|
assertMiss("x%{},%{b}", "foo,bar");
|
||||||
|
assertMiss("leading_delimiter_long%{a}", "foo");
|
||||||
|
assertMiss("%{a}trailing_delimiter_long", "foo");
|
||||||
|
assertMiss("leading_delimiter_long%{a}trailing_delimiter_long", "foo");
|
||||||
|
assertMiss("%{a}x", "foo");
|
||||||
|
assertMiss("%{a},%{b}x", "foo,bar");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construction errors
|
||||||
|
*/
|
||||||
|
public void testBadPatternOrKey() {
|
||||||
|
assertBadPattern("");
|
||||||
|
assertBadPattern("{}");
|
||||||
|
assertBadPattern("%{*a} %{&b}");
|
||||||
|
assertBadKey("%{*}");
|
||||||
|
assertBadKey("%{++}");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSyslog() {
|
||||||
|
assertMatch("%{timestamp} %{+timestamp} %{+timestamp} %{logsource} %{program}[%{pid}]: %{message}",
|
||||||
|
"Mar 16 00:01:25 evita postfix/smtpd[1713]: connect from camomile.cloud9.net[168.100.1.3]",
|
||||||
|
Arrays.asList("timestamp", "logsource", "program", "pid", "message"),
|
||||||
|
Arrays.asList("Mar 16 00:01:25", "evita", "postfix/smtpd", "1713", "connect from camomile.cloud9.net[168.100.1.3]"), " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testApacheLog() {
|
||||||
|
assertMatch("%{clientip} %{ident} %{auth} [%{timestamp}] \"%{verb} %{request} HTTP/%{httpversion}\" %{response} %{bytes}" +
|
||||||
|
" \"%{referrer}\" \"%{agent}\" %{->}",
|
||||||
|
"31.184.238.164 - - [24/Jul/2014:05:35:37 +0530] \"GET /logs/access.log HTTP/1.0\" 200 69849 " +
|
||||||
|
"\"http://8rursodiol.enjin.com\" \"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) " +
|
||||||
|
"Chrome/30.0.1599.12785 YaBrowser/13.12.1599.12785 Safari/537.36\" \"www.dlwindianrailways.com\"",
|
||||||
|
Arrays.asList("clientip", "ident", "auth", "timestamp", "verb", "request", "httpversion", "response", "bytes",
|
||||||
|
"referrer", "agent"),
|
||||||
|
Arrays.asList("31.184.238.164", "-", "-", "24/Jul/2014:05:35:37 +0530", "GET", "/logs/access.log", "1.0", "200", "69849",
|
||||||
|
"http://8rursodiol.enjin.com", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36" +
|
||||||
|
" (KHTML, like Gecko) Chrome/30.0.1599.12785 YaBrowser/13.12.1599.12785 Safari/537.36"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shared specification between Beats, Logstash, and Ingest node
|
||||||
|
*/
|
||||||
|
public void testJsonSpecification() throws Exception {
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
JsonNode rootNode = mapper.readTree(this.getClass().getResourceAsStream("/specification/tests.json"));
|
||||||
|
Iterator<JsonNode> tests = rootNode.elements();
|
||||||
|
while (tests.hasNext()) {
|
||||||
|
JsonNode test = tests.next();
|
||||||
|
boolean skip = test.path("skip").asBoolean();
|
||||||
|
if (!skip) {
|
||||||
|
String name = test.path("name").asText();
|
||||||
|
logger.debug("Running Json specification: " + name);
|
||||||
|
String pattern = test.path("tok").asText();
|
||||||
|
String input = test.path("msg").asText();
|
||||||
|
String append = test.path("append").asText();
|
||||||
|
boolean fail = test.path("fail").asBoolean();
|
||||||
|
Iterator<Map.Entry<String, JsonNode>> expected = test.path("expected").fields();
|
||||||
|
List<String> expectedKeys = new ArrayList<>();
|
||||||
|
List<String> expectedValues = new ArrayList<>();
|
||||||
|
expected.forEachRemaining(entry -> {
|
||||||
|
expectedKeys.add(entry.getKey());
|
||||||
|
expectedValues.add(entry.getValue().asText());
|
||||||
|
});
|
||||||
|
if (fail) {
|
||||||
|
assertFail(pattern, input);
|
||||||
|
} else {
|
||||||
|
assertMatch(pattern, input, expectedKeys, expectedValues, append);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private DissectException assertFail(String pattern, String input){
|
||||||
|
return expectThrows(DissectException.class, () -> new DissectParser(pattern, null).parse(input));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertMiss(String pattern, String input) {
|
||||||
|
DissectException e = assertFail(pattern, input);
|
||||||
|
assertThat(e.getMessage(), CoreMatchers.containsString("Unable to find match for dissect pattern"));
|
||||||
|
assertThat(e.getMessage(), CoreMatchers.containsString(pattern));
|
||||||
|
assertThat(e.getMessage(), input == null ? CoreMatchers.containsString("null") : CoreMatchers.containsString(input));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertBadPattern(String pattern) {
|
||||||
|
DissectException e = assertFail(pattern, null);
|
||||||
|
assertThat(e.getMessage(), CoreMatchers.containsString("Unable to parse pattern"));
|
||||||
|
assertThat(e.getMessage(), CoreMatchers.containsString(pattern));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertBadKey(String pattern, String key) {
|
||||||
|
DissectException e = assertFail(pattern, null);
|
||||||
|
assertThat(e.getMessage(), CoreMatchers.containsString("Unable to parse key"));
|
||||||
|
assertThat(e.getMessage(), CoreMatchers.containsString(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertBadKey(String pattern) {
|
||||||
|
assertBadKey(pattern, pattern.replace("%{", "").replace("}", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertMatch(String pattern, String input, List<String> expectedKeys, List<String> expectedValues) {
|
||||||
|
assertMatch(pattern, input, expectedKeys, expectedValues, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertMatch(String pattern, String input, List<String> expectedKeys, List<String> expectedValues, String appendSeperator) {
|
||||||
|
Map<String, String> results = new DissectParser(pattern, appendSeperator).parse(input);
|
||||||
|
List<String> foundKeys = new ArrayList<>(results.keySet());
|
||||||
|
List<String> foundValues = new ArrayList<>(results.values());
|
||||||
|
Collections.sort(foundKeys);
|
||||||
|
Collections.sort(foundValues);
|
||||||
|
Collections.sort(expectedKeys);
|
||||||
|
Collections.sort(expectedValues);
|
||||||
|
assertThat(foundKeys, Matchers.equalTo(expectedKeys));
|
||||||
|
assertThat(foundValues, Matchers.equalTo(expectedValues));
|
||||||
|
}
|
||||||
|
}
|
363
libs/dissect/src/test/resources/specification/tests.json
Normal file
363
libs/dissect/src/test/resources/specification/tests.json
Normal file
@ -0,0 +1,363 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "When all the defined fields are captured by we have remaining data",
|
||||||
|
"tok": "level=%{level} ts=%{timestamp} caller=%{caller} msg=\"%{message}\"",
|
||||||
|
"msg": "level=info ts=2018-06-27T17:19:13.036579993Z caller=main.go:222 msg=\"Starting OK\" version=\"(version=2.3.1, branch=HEAD, revision=188ca45bd85ce843071e768d855722a9d9dabe03)\"}",
|
||||||
|
"expected": {
|
||||||
|
"caller": "main.go:222",
|
||||||
|
"level": "info",
|
||||||
|
"message": "Starting OK",
|
||||||
|
"timestamp": "2018-06-27T17:19:13.036579993Z"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Complex stack trace",
|
||||||
|
"tok": "%{day}-%{month}-%{year} %{hour} %{severity} [%{thread_id}] %{origin} %{message}",
|
||||||
|
"msg": "18-Apr-2018 06:53:20.411 INFO [http-nio-8080-exec-1] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header\n Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.\n java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens\n at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:426)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:687)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)",
|
||||||
|
"expected": {
|
||||||
|
"day": "18",
|
||||||
|
"hour": "06:53:20.411",
|
||||||
|
"message": "Error parsing HTTP request header\n Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.\n java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens\n at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:426)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:687)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)",
|
||||||
|
"month": "Apr",
|
||||||
|
"origin": "org.apache.coyote.http11.Http11Processor.service",
|
||||||
|
"severity": "INFO",
|
||||||
|
"thread_id": "http-nio-8080-exec-1",
|
||||||
|
"year": "2018"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "success when delimiter found at the beginning and end of the string",
|
||||||
|
"tok": "/var/log/%{key}.log",
|
||||||
|
"msg": "/var/log/foobar.log",
|
||||||
|
"expected": {
|
||||||
|
"key": "foobar"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fails when delimiter is not found at the beginning of the string",
|
||||||
|
"tok": "/var/log/%{key}.log",
|
||||||
|
"msg": "foobar",
|
||||||
|
"expected": null,
|
||||||
|
"skip": false,
|
||||||
|
"fail": true,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fails when delimiter is not found after the key",
|
||||||
|
"tok": "/var/log/%{key}.log",
|
||||||
|
"msg": "/var/log/foobar",
|
||||||
|
"expected": null,
|
||||||
|
"skip": false,
|
||||||
|
"fail": true,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "simple dissect",
|
||||||
|
"tok": "%{key}",
|
||||||
|
"msg": "foobar",
|
||||||
|
"expected": {
|
||||||
|
"key": "foobar"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "dissect two replacement",
|
||||||
|
"tok": "%{key1} %{key2}",
|
||||||
|
"msg": "foo bar",
|
||||||
|
"expected": {
|
||||||
|
"key1": "foo",
|
||||||
|
"key2": "bar"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fail on partial match",
|
||||||
|
"tok": "%{key1} %{key2} %{key3}",
|
||||||
|
"msg": "foo bar",
|
||||||
|
"expected": null,
|
||||||
|
"skip": false,
|
||||||
|
"fail": true,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "one level dissect not end of string",
|
||||||
|
"tok": "/var/%{key}/log",
|
||||||
|
"msg": "/var/foobar/log",
|
||||||
|
"expected": {
|
||||||
|
"key": "foobar"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "one level dissect",
|
||||||
|
"tok": "/var/%{key}",
|
||||||
|
"msg": "/var/foobar/log",
|
||||||
|
"expected": {
|
||||||
|
"key": "foobar/log"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "multiple keys dissect end of string",
|
||||||
|
"tok": "/var/%{key}/log/%{key1}",
|
||||||
|
"msg": "/var/foobar/log/apache",
|
||||||
|
"expected": {
|
||||||
|
"key": "foobar",
|
||||||
|
"key1": "apache"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "multiple keys not end of string",
|
||||||
|
"tok": "/var/%{key}/log/%{key1}.log",
|
||||||
|
"msg": "/var/foobar/log/apache.log",
|
||||||
|
"expected": {
|
||||||
|
"key": "foobar",
|
||||||
|
"key1": "apache"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "append with order",
|
||||||
|
"tok": "%{+key/3} %{+key/1} %{+key/2}",
|
||||||
|
"msg": "1 2 3",
|
||||||
|
"expected": {
|
||||||
|
"key": "231"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "append with order and separator",
|
||||||
|
"tok": "%{+key/3} %{+key/1} %{+key/2}",
|
||||||
|
"msg": "1 2 3",
|
||||||
|
"expected": {
|
||||||
|
"key": "2::3::1"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": "::"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "append with order and right padding",
|
||||||
|
"tok": "%{+key/3} %{+key/1-\u003e} %{+key/2}",
|
||||||
|
"msg": "1 2 3",
|
||||||
|
"expected": {
|
||||||
|
"key": "231"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "simple append",
|
||||||
|
"tok": "%{key}-%{+key}-%{+key}",
|
||||||
|
"msg": "1-2-3",
|
||||||
|
"expected": {
|
||||||
|
"key": "123"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "simple append with separator",
|
||||||
|
"tok": "%{key}-%{+key}-%{+key}",
|
||||||
|
"msg": "1-2-3",
|
||||||
|
"expected": {
|
||||||
|
"key": "1,2,3"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "reference field",
|
||||||
|
"tok": "%{*key} %{\u0026key}",
|
||||||
|
"msg": "hello world",
|
||||||
|
"expected": {
|
||||||
|
"hello": "world"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "reference field alt order",
|
||||||
|
"tok": "%{\u0026key} %{*key}",
|
||||||
|
"msg": "hello world",
|
||||||
|
"expected": {
|
||||||
|
"world": "hello"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nameless skip field",
|
||||||
|
"tok": "%{} %{key}",
|
||||||
|
"msg": "hello world",
|
||||||
|
"expected": {
|
||||||
|
"key": "world"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "named skip field",
|
||||||
|
"tok": "%{?skipme} %{key}",
|
||||||
|
"msg": "hello world",
|
||||||
|
"expected": {
|
||||||
|
"key": "world"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "reference without pairing",
|
||||||
|
"tok": "%{key} %{\u0026key}",
|
||||||
|
"msg": "hello world",
|
||||||
|
"expected": null,
|
||||||
|
"skip": false,
|
||||||
|
"fail": true,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "missing fields (consecutive delimiters)",
|
||||||
|
"tok": "%{name},%{addr1},%{addr2},%{addr3},%{city},%{zip}",
|
||||||
|
"msg": "Jane Doe,4321 Fifth Avenue,,,New York,87432",
|
||||||
|
"expected": {
|
||||||
|
"addr1": "4321 Fifth Avenue",
|
||||||
|
"addr2": "",
|
||||||
|
"addr3": "",
|
||||||
|
"city": "New York",
|
||||||
|
"name": "Jane Doe",
|
||||||
|
"zip": "87432"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "missing fields with right padding (consecutive delimiters)",
|
||||||
|
"tok": "%{name},%{addr1-\u003e},%{city},%{zip}",
|
||||||
|
"msg": "Jane Doe,4321 Fifth Avenue,,,New York,87432",
|
||||||
|
"expected": {
|
||||||
|
"addr1": "4321 Fifth Avenue",
|
||||||
|
"city": "New York",
|
||||||
|
"name": "Jane Doe",
|
||||||
|
"zip": "87432"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ignore right padding",
|
||||||
|
"tok": "%{id} %{function-\u003e} %{server}",
|
||||||
|
"msg": "00000043 ViewReceive machine-321",
|
||||||
|
"expected": {
|
||||||
|
"function": "ViewReceive",
|
||||||
|
"id": "00000043",
|
||||||
|
"server": "machine-321"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "padding on the last key need a delimiter",
|
||||||
|
"tok": "%{id} %{function} %{server-\u003e} ",
|
||||||
|
"msg": "00000043 ViewReceive machine-321 ",
|
||||||
|
"expected": {
|
||||||
|
"function": "ViewReceive",
|
||||||
|
"id": "00000043",
|
||||||
|
"server": "machine-321"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ignore left padding",
|
||||||
|
"tok": "%{id-\u003e} %{function} %{server}",
|
||||||
|
"msg": "00000043 ViewReceive machine-321",
|
||||||
|
"expected": {
|
||||||
|
"function": "ViewReceive",
|
||||||
|
"id": "00000043",
|
||||||
|
"server": "machine-321"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "when the delimiters contains `{` and `}`",
|
||||||
|
"tok": "{%{a}}{%{b}} %{rest}",
|
||||||
|
"msg": "{c}{d} anything",
|
||||||
|
"expected": {
|
||||||
|
"a": "c",
|
||||||
|
"b": "d",
|
||||||
|
"rest": "anything"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "no keys defined",
|
||||||
|
"tok": "anything",
|
||||||
|
"msg": "anything",
|
||||||
|
"expected": null,
|
||||||
|
"skip": false,
|
||||||
|
"fail": true,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "invalid key",
|
||||||
|
"tok": "%{some?thing}",
|
||||||
|
"msg": "anything",
|
||||||
|
"expected": null,
|
||||||
|
"skip": false,
|
||||||
|
"fail": true,
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "matches non-ascii",
|
||||||
|
"tok": "%{a}࿏%{b} %{c}",
|
||||||
|
"msg": "⟳༒࿏༒⟲ 子",
|
||||||
|
"expected": {
|
||||||
|
"a": "⟳༒",
|
||||||
|
"b": "༒⟲",
|
||||||
|
"c": "子"
|
||||||
|
},
|
||||||
|
"skip": false,
|
||||||
|
"fail": false,
|
||||||
|
"append": ""
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
@ -53,7 +53,7 @@ public final class WhitelistLoader {
|
|||||||
* a Painless type name with the exception that any dollar symbols used as part of inner classes will
|
* a Painless type name with the exception that any dollar symbols used as part of inner classes will
|
||||||
* be replaced with dot symbols. </li>
|
* be replaced with dot symbols. </li>
|
||||||
* <li> short Java type name - The text after the final dot symbol of any specified Java class. A
|
* <li> short Java type name - The text after the final dot symbol of any specified Java class. A
|
||||||
* short type Java name may be excluded by using the 'only_fqn' token during Painless class parsing
|
* short type Java name may be excluded by using the 'no_import' token during Painless class parsing
|
||||||
* as described later. </li>
|
* as described later. </li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
@ -65,7 +65,7 @@ public final class WhitelistLoader {
|
|||||||
* <li> Primitive types may be specified starting with 'class' and followed by the Java type name,
|
* <li> Primitive types may be specified starting with 'class' and followed by the Java type name,
|
||||||
* an opening bracket, a newline, a closing bracket, and a final newline. </li>
|
* an opening bracket, a newline, a closing bracket, and a final newline. </li>
|
||||||
* <li> Complex types may be specified starting with 'class' and followed the fully-qualified Java
|
* <li> Complex types may be specified starting with 'class' and followed the fully-qualified Java
|
||||||
* class name, optionally followed by an 'only_fqn' token, an opening bracket, a newline,
|
* class name, optionally followed by an 'no_import' token, an opening bracket, a newline,
|
||||||
* constructor/method/field specifications, a closing bracket, and a final newline. Within a complex
|
* constructor/method/field specifications, a closing bracket, and a final newline. Within a complex
|
||||||
* type the following may be parsed:
|
* type the following may be parsed:
|
||||||
* <ul>
|
* <ul>
|
||||||
@ -109,7 +109,7 @@ public final class WhitelistLoader {
|
|||||||
*
|
*
|
||||||
* # complex types
|
* # complex types
|
||||||
*
|
*
|
||||||
* class my.package.Example only_fqn {
|
* class my.package.Example no_import {
|
||||||
* # constructors
|
* # constructors
|
||||||
* ()
|
* ()
|
||||||
* (int)
|
* (int)
|
||||||
@ -145,7 +145,7 @@ public final class WhitelistLoader {
|
|||||||
|
|
||||||
String whitelistClassOrigin = null;
|
String whitelistClassOrigin = null;
|
||||||
String javaClassName = null;
|
String javaClassName = null;
|
||||||
boolean onlyFQNJavaClassName = false;
|
boolean noImport = false;
|
||||||
List<WhitelistConstructor> whitelistConstructors = null;
|
List<WhitelistConstructor> whitelistConstructors = null;
|
||||||
List<WhitelistMethod> whitelistMethods = null;
|
List<WhitelistMethod> whitelistMethods = null;
|
||||||
List<WhitelistField> whitelistFields = null;
|
List<WhitelistField> whitelistFields = null;
|
||||||
@ -160,7 +160,7 @@ public final class WhitelistLoader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Handle a new class by resetting all the variables necessary to construct a new WhitelistClass for the whitelist.
|
// Handle a new class by resetting all the variables necessary to construct a new WhitelistClass for the whitelist.
|
||||||
// Expects the following format: 'class' ID 'only_fqn'? '{' '\n'
|
// Expects the following format: 'class' ID 'no_import'? '{' '\n'
|
||||||
if (line.startsWith("class ")) {
|
if (line.startsWith("class ")) {
|
||||||
// Ensure the final token of the line is '{'.
|
// Ensure the final token of the line is '{'.
|
||||||
if (line.endsWith("{") == false) {
|
if (line.endsWith("{") == false) {
|
||||||
@ -172,8 +172,8 @@ public final class WhitelistLoader {
|
|||||||
String[] tokens = line.substring(5, line.length() - 1).trim().split("\\s+");
|
String[] tokens = line.substring(5, line.length() - 1).trim().split("\\s+");
|
||||||
|
|
||||||
// Ensure the correct number of tokens.
|
// Ensure the correct number of tokens.
|
||||||
if (tokens.length == 2 && "only_fqn".equals(tokens[1])) {
|
if (tokens.length == 2 && "no_import".equals(tokens[1])) {
|
||||||
onlyFQNJavaClassName = true;
|
noImport = true;
|
||||||
} else if (tokens.length != 1) {
|
} else if (tokens.length != 1) {
|
||||||
throw new IllegalArgumentException("invalid class definition: failed to parse class name [" + line + "]");
|
throw new IllegalArgumentException("invalid class definition: failed to parse class name [" + line + "]");
|
||||||
}
|
}
|
||||||
@ -194,13 +194,13 @@ public final class WhitelistLoader {
|
|||||||
throw new IllegalArgumentException("invalid class definition: extraneous closing bracket");
|
throw new IllegalArgumentException("invalid class definition: extraneous closing bracket");
|
||||||
}
|
}
|
||||||
|
|
||||||
whitelistClasses.add(new WhitelistClass(whitelistClassOrigin, javaClassName, onlyFQNJavaClassName,
|
whitelistClasses.add(new WhitelistClass(whitelistClassOrigin, javaClassName, noImport,
|
||||||
whitelistConstructors, whitelistMethods, whitelistFields));
|
whitelistConstructors, whitelistMethods, whitelistFields));
|
||||||
|
|
||||||
// Set all the variables to null to ensure a new class definition is found before other parsable values.
|
// Set all the variables to null to ensure a new class definition is found before other parsable values.
|
||||||
whitelistClassOrigin = null;
|
whitelistClassOrigin = null;
|
||||||
javaClassName = null;
|
javaClassName = null;
|
||||||
onlyFQNJavaClassName = false;
|
noImport = false;
|
||||||
whitelistConstructors = null;
|
whitelistConstructors = null;
|
||||||
whitelistMethods = null;
|
whitelistMethods = null;
|
||||||
whitelistFields = null;
|
whitelistFields = null;
|
||||||
|
@ -293,7 +293,7 @@ public final class PainlessLookupBuilder {
|
|||||||
|
|
||||||
if (canonicalClassName.equals(importedCanonicalClassName)) {
|
if (canonicalClassName.equals(importedCanonicalClassName)) {
|
||||||
if (importClassName == true) {
|
if (importClassName == true) {
|
||||||
throw new IllegalArgumentException("must use only_fqn parameter on class [" + canonicalClassName + "] with no package");
|
throw new IllegalArgumentException("must use no_import parameter on class [" + canonicalClassName + "] with no package");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Class<?> importedPainlessClass = canonicalClassNamesToClasses.get(importedCanonicalClassName);
|
Class<?> importedPainlessClass = canonicalClassNamesToClasses.get(importedCanonicalClassName);
|
||||||
@ -301,7 +301,8 @@ public final class PainlessLookupBuilder {
|
|||||||
if (importedPainlessClass == null) {
|
if (importedPainlessClass == null) {
|
||||||
if (importClassName) {
|
if (importClassName) {
|
||||||
if (existingPainlessClassBuilder != null) {
|
if (existingPainlessClassBuilder != null) {
|
||||||
throw new IllegalArgumentException("inconsistent only_fqn parameters found for class [" + canonicalClassName + "]");
|
throw new IllegalArgumentException(
|
||||||
|
"inconsistent no_import parameters found for class [" + canonicalClassName + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
canonicalClassNamesToClasses.put(importedCanonicalClassName, clazz);
|
canonicalClassNamesToClasses.put(importedCanonicalClassName, clazz);
|
||||||
@ -310,7 +311,7 @@ public final class PainlessLookupBuilder {
|
|||||||
throw new IllegalArgumentException("imported class [" + importedCanonicalClassName + "] cannot represent multiple " +
|
throw new IllegalArgumentException("imported class [" + importedCanonicalClassName + "] cannot represent multiple " +
|
||||||
"classes [" + canonicalClassName + "] and [" + typeToCanonicalTypeName(importedPainlessClass) + "]");
|
"classes [" + canonicalClassName + "] and [" + typeToCanonicalTypeName(importedPainlessClass) + "]");
|
||||||
} else if (importClassName == false) {
|
} else if (importClassName == false) {
|
||||||
throw new IllegalArgumentException("inconsistent only_fqn parameters found for class [" + canonicalClassName + "]");
|
throw new IllegalArgumentException("inconsistent no_import parameters found for class [" + canonicalClassName + "]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,31 +24,31 @@
|
|||||||
|
|
||||||
#### Primitive types
|
#### Primitive types
|
||||||
|
|
||||||
class void only_fqn {
|
class void no_import {
|
||||||
}
|
}
|
||||||
|
|
||||||
class boolean only_fqn {
|
class boolean no_import {
|
||||||
}
|
}
|
||||||
|
|
||||||
class byte only_fqn {
|
class byte no_import {
|
||||||
}
|
}
|
||||||
|
|
||||||
class short only_fqn {
|
class short no_import {
|
||||||
}
|
}
|
||||||
|
|
||||||
class char only_fqn {
|
class char no_import {
|
||||||
}
|
}
|
||||||
|
|
||||||
class int only_fqn {
|
class int no_import {
|
||||||
}
|
}
|
||||||
|
|
||||||
class long only_fqn {
|
class long no_import {
|
||||||
}
|
}
|
||||||
|
|
||||||
class float only_fqn {
|
class float no_import {
|
||||||
}
|
}
|
||||||
|
|
||||||
class double only_fqn {
|
class double no_import {
|
||||||
}
|
}
|
||||||
|
|
||||||
#### Painless debugging API
|
#### Painless debugging API
|
||||||
@ -134,7 +134,7 @@ class org.elasticsearch.index.mapper.IpFieldMapper$IpFieldType$IpScriptDocValues
|
|||||||
|
|
||||||
# for testing.
|
# for testing.
|
||||||
# currently FeatureTest exposes overloaded constructor, field load store, and overloaded static methods
|
# currently FeatureTest exposes overloaded constructor, field load store, and overloaded static methods
|
||||||
class org.elasticsearch.painless.FeatureTest only_fqn {
|
class org.elasticsearch.painless.FeatureTest no_import {
|
||||||
int z
|
int z
|
||||||
()
|
()
|
||||||
(int,int)
|
(int,int)
|
||||||
|
@ -20,9 +20,9 @@
|
|||||||
package org.elasticsearch.repositories.url;
|
package org.elasticsearch.repositories.url;
|
||||||
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.Client;
|
import org.elasticsearch.client.Client;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.unit.ByteSizeUnit;
|
import org.elasticsearch.common.unit.ByteSizeUnit;
|
||||||
@ -120,7 +120,7 @@ public class URLSnapshotRestoreTests extends ESIntegTestCase {
|
|||||||
assertThat(getSnapshotsResponse.getSnapshots().size(), equalTo(1));
|
assertThat(getSnapshotsResponse.getSnapshots().size(), equalTo(1));
|
||||||
|
|
||||||
logger.info("--> delete snapshot");
|
logger.info("--> delete snapshot");
|
||||||
DeleteSnapshotResponse deleteSnapshotResponse = client.admin().cluster().prepareDeleteSnapshot("test-repo", "test-snap").get();
|
AcknowledgedResponse deleteSnapshotResponse = client.admin().cluster().prepareDeleteSnapshot("test-repo", "test-snap").get();
|
||||||
assertAcked(deleteSnapshotResponse);
|
assertAcked(deleteSnapshotResponse);
|
||||||
|
|
||||||
logger.info("--> list available shapshot again, no snapshots should be returned");
|
logger.info("--> list available shapshot again, no snapshots should be returned");
|
||||||
|
@ -54,7 +54,6 @@ import org.elasticsearch.common.util.concurrent.EsExecutors;
|
|||||||
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TcpTransport;
|
import org.elasticsearch.transport.TcpTransport;
|
||||||
import org.elasticsearch.transport.TransportRequestOptions;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
@ -147,7 +146,6 @@ public class Netty4Transport extends TcpTransport {
|
|||||||
|
|
||||||
bootstrap.handler(getClientChannelInitializer());
|
bootstrap.handler(getClientChannelInitializer());
|
||||||
|
|
||||||
bootstrap.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, Math.toIntExact(defaultConnectionProfile.getConnectTimeout().millis()));
|
|
||||||
bootstrap.option(ChannelOption.TCP_NODELAY, TCP_NO_DELAY.get(settings));
|
bootstrap.option(ChannelOption.TCP_NODELAY, TCP_NO_DELAY.get(settings));
|
||||||
bootstrap.option(ChannelOption.SO_KEEPALIVE, TCP_KEEP_ALIVE.get(settings));
|
bootstrap.option(ChannelOption.SO_KEEPALIVE, TCP_KEEP_ALIVE.get(settings));
|
||||||
|
|
||||||
@ -175,14 +173,8 @@ public class Netty4Transport extends TcpTransport {
|
|||||||
String name = profileSettings.profileName;
|
String name = profileSettings.profileName;
|
||||||
if (logger.isDebugEnabled()) {
|
if (logger.isDebugEnabled()) {
|
||||||
logger.debug("using profile[{}], worker_count[{}], port[{}], bind_host[{}], publish_host[{}], compress[{}], "
|
logger.debug("using profile[{}], worker_count[{}], port[{}], bind_host[{}], publish_host[{}], compress[{}], "
|
||||||
+ "connect_timeout[{}], connections_per_node[{}/{}/{}/{}/{}], receive_predictor[{}->{}]",
|
+ "receive_predictor[{}->{}]",
|
||||||
name, workerCount, profileSettings.portOrRange, profileSettings.bindHosts, profileSettings.publishHosts, compress,
|
name, workerCount, profileSettings.portOrRange, profileSettings.bindHosts, profileSettings.publishHosts, compress,
|
||||||
defaultConnectionProfile.getConnectTimeout(),
|
|
||||||
defaultConnectionProfile.getNumConnectionsPerType(TransportRequestOptions.Type.RECOVERY),
|
|
||||||
defaultConnectionProfile.getNumConnectionsPerType(TransportRequestOptions.Type.BULK),
|
|
||||||
defaultConnectionProfile.getNumConnectionsPerType(TransportRequestOptions.Type.REG),
|
|
||||||
defaultConnectionProfile.getNumConnectionsPerType(TransportRequestOptions.Type.STATE),
|
|
||||||
defaultConnectionProfile.getNumConnectionsPerType(TransportRequestOptions.Type.PING),
|
|
||||||
receivePredictorMin, receivePredictorMax);
|
receivePredictorMin, receivePredictorMax);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
package org.elasticsearch.index.mapper.size;
|
package org.elasticsearch.index.mapper.size;
|
||||||
|
|
||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
|
|
||||||
import org.elasticsearch.action.get.GetResponse;
|
import org.elasticsearch.action.get.GetResponse;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
import org.elasticsearch.plugin.mapper.MapperSizePlugin;
|
import org.elasticsearch.plugin.mapper.MapperSizePlugin;
|
||||||
@ -62,7 +62,7 @@ public class SizeMappingIT extends ESIntegTestCase {
|
|||||||
XContentBuilder updateMappingBuilder =
|
XContentBuilder updateMappingBuilder =
|
||||||
jsonBuilder().startObject().startObject("properties").startObject("otherField").field("type", "text")
|
jsonBuilder().startObject().startObject("properties").startObject("otherField").field("type", "text")
|
||||||
.endObject().endObject().endObject();
|
.endObject().endObject().endObject();
|
||||||
PutMappingResponse putMappingResponse =
|
AcknowledgedResponse putMappingResponse =
|
||||||
client().admin().indices().preparePutMapping(index).setType(type).setSource(updateMappingBuilder).get();
|
client().admin().indices().preparePutMapping(index).setType(type).setSource(updateMappingBuilder).get();
|
||||||
assertAcked(putMappingResponse);
|
assertAcked(putMappingResponse);
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ public class SizeMappingIT extends ESIntegTestCase {
|
|||||||
// update some field in the mapping
|
// update some field in the mapping
|
||||||
XContentBuilder updateMappingBuilder =
|
XContentBuilder updateMappingBuilder =
|
||||||
jsonBuilder().startObject().startObject("_size").field("enabled", false).endObject().endObject();
|
jsonBuilder().startObject().startObject("_size").field("enabled", false).endObject().endObject();
|
||||||
PutMappingResponse putMappingResponse =
|
AcknowledgedResponse putMappingResponse =
|
||||||
client().admin().indices().preparePutMapping(index).setType(type).setSource(updateMappingBuilder).get();
|
client().admin().indices().preparePutMapping(index).setType(type).setSource(updateMappingBuilder).get();
|
||||||
assertAcked(putMappingResponse);
|
assertAcked(putMappingResponse);
|
||||||
|
|
||||||
|
@ -19,9 +19,9 @@
|
|||||||
package org.elasticsearch.repositories.hdfs;
|
package org.elasticsearch.repositories.hdfs;
|
||||||
|
|
||||||
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
|
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.bootstrap.JavaVersion;
|
import org.elasticsearch.bootstrap.JavaVersion;
|
||||||
import org.elasticsearch.client.Client;
|
import org.elasticsearch.client.Client;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
@ -48,7 +48,7 @@ public class HdfsTests extends ESSingleNodeTestCase {
|
|||||||
assumeFalse("https://github.com/elastic/elasticsearch/issues/31498", JavaVersion.current().equals(JavaVersion.parse("11")));
|
assumeFalse("https://github.com/elastic/elasticsearch/issues/31498", JavaVersion.current().equals(JavaVersion.parse("11")));
|
||||||
Client client = client();
|
Client client = client();
|
||||||
|
|
||||||
PutRepositoryResponse putRepositoryResponse = client.admin().cluster().preparePutRepository("test-repo")
|
AcknowledgedResponse putRepositoryResponse = client.admin().cluster().preparePutRepository("test-repo")
|
||||||
.setType("hdfs")
|
.setType("hdfs")
|
||||||
.setSettings(Settings.builder()
|
.setSettings(Settings.builder()
|
||||||
.put("uri", "hdfs:///")
|
.put("uri", "hdfs:///")
|
||||||
|
@ -20,11 +20,12 @@
|
|||||||
package org.elasticsearch.action.admin.cluster.repositories.delete;
|
package org.elasticsearch.action.admin.cluster.repositories.delete;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unregister repository action
|
* Unregister repository action
|
||||||
*/
|
*/
|
||||||
public class DeleteRepositoryAction extends Action<DeleteRepositoryResponse> {
|
public class DeleteRepositoryAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final DeleteRepositoryAction INSTANCE = new DeleteRepositoryAction();
|
public static final DeleteRepositoryAction INSTANCE = new DeleteRepositoryAction();
|
||||||
public static final String NAME = "cluster:admin/repository/delete";
|
public static final String NAME = "cluster:admin/repository/delete";
|
||||||
@ -34,8 +35,8 @@ public class DeleteRepositoryAction extends Action<DeleteRepositoryResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DeleteRepositoryResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new DeleteRepositoryResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,12 +20,13 @@
|
|||||||
package org.elasticsearch.action.admin.cluster.repositories.delete;
|
package org.elasticsearch.action.admin.cluster.repositories.delete;
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builder for unregister repository request
|
* Builder for unregister repository request
|
||||||
*/
|
*/
|
||||||
public class DeleteRepositoryRequestBuilder extends AcknowledgedRequestBuilder<DeleteRepositoryRequest, DeleteRepositoryResponse, DeleteRepositoryRequestBuilder> {
|
public class DeleteRepositoryRequestBuilder extends AcknowledgedRequestBuilder<DeleteRepositoryRequest, AcknowledgedResponse, DeleteRepositoryRequestBuilder> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs unregister repository request builder
|
* Constructs unregister repository request builder
|
||||||
|
@ -1,40 +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.cluster.repositories.delete;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unregister repository response
|
|
||||||
*/
|
|
||||||
public class DeleteRepositoryResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
DeleteRepositoryResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
DeleteRepositoryResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DeleteRepositoryResponse fromXContent(XContentParser parser) {
|
|
||||||
return new DeleteRepositoryResponse(parseAcknowledged(parser));
|
|
||||||
}
|
|
||||||
}
|
|
@ -21,6 +21,7 @@ package org.elasticsearch.action.admin.cluster.repositories.delete;
|
|||||||
|
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
||||||
@ -37,7 +38,7 @@ import org.elasticsearch.transport.TransportService;
|
|||||||
/**
|
/**
|
||||||
* Transport action for unregister repository operation
|
* Transport action for unregister repository operation
|
||||||
*/
|
*/
|
||||||
public class TransportDeleteRepositoryAction extends TransportMasterNodeAction<DeleteRepositoryRequest, DeleteRepositoryResponse> {
|
public class TransportDeleteRepositoryAction extends TransportMasterNodeAction<DeleteRepositoryRequest, AcknowledgedResponse> {
|
||||||
|
|
||||||
private final RepositoriesService repositoriesService;
|
private final RepositoriesService repositoriesService;
|
||||||
|
|
||||||
@ -55,8 +56,8 @@ public class TransportDeleteRepositoryAction extends TransportMasterNodeAction<D
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DeleteRepositoryResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new DeleteRepositoryResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -65,14 +66,14 @@ public class TransportDeleteRepositoryAction extends TransportMasterNodeAction<D
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(final DeleteRepositoryRequest request, ClusterState state, final ActionListener<DeleteRepositoryResponse> listener) {
|
protected void masterOperation(final DeleteRepositoryRequest request, ClusterState state, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
repositoriesService.unregisterRepository(
|
repositoriesService.unregisterRepository(
|
||||||
new RepositoriesService.UnregisterRepositoryRequest("delete_repository [" + request.name() + "]", request.name())
|
new RepositoriesService.UnregisterRepositoryRequest("delete_repository [" + request.name() + "]", request.name())
|
||||||
.masterNodeTimeout(request.masterNodeTimeout()).ackTimeout(request.timeout()),
|
.masterNodeTimeout(request.masterNodeTimeout()).ackTimeout(request.timeout()),
|
||||||
new ActionListener<ClusterStateUpdateResponse>() {
|
new ActionListener<ClusterStateUpdateResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(ClusterStateUpdateResponse unregisterRepositoryResponse) {
|
public void onResponse(ClusterStateUpdateResponse unregisterRepositoryResponse) {
|
||||||
listener.onResponse(new DeleteRepositoryResponse(unregisterRepositoryResponse.isAcknowledged()));
|
listener.onResponse(new AcknowledgedResponse(unregisterRepositoryResponse.isAcknowledged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,11 +20,12 @@
|
|||||||
package org.elasticsearch.action.admin.cluster.repositories.put;
|
package org.elasticsearch.action.admin.cluster.repositories.put;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register repository action
|
* Register repository action
|
||||||
*/
|
*/
|
||||||
public class PutRepositoryAction extends Action<PutRepositoryResponse> {
|
public class PutRepositoryAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final PutRepositoryAction INSTANCE = new PutRepositoryAction();
|
public static final PutRepositoryAction INSTANCE = new PutRepositoryAction();
|
||||||
public static final String NAME = "cluster:admin/repository/put";
|
public static final String NAME = "cluster:admin/repository/put";
|
||||||
@ -34,8 +35,8 @@ public class PutRepositoryAction extends Action<PutRepositoryResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PutRepositoryResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new PutRepositoryResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
package org.elasticsearch.action.admin.cluster.repositories.put;
|
package org.elasticsearch.action.admin.cluster.repositories.put;
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
@ -29,7 +30,7 @@ import java.util.Map;
|
|||||||
/**
|
/**
|
||||||
* Register repository request builder
|
* Register repository request builder
|
||||||
*/
|
*/
|
||||||
public class PutRepositoryRequestBuilder extends AcknowledgedRequestBuilder<PutRepositoryRequest, PutRepositoryResponse, PutRepositoryRequestBuilder> {
|
public class PutRepositoryRequestBuilder extends AcknowledgedRequestBuilder<PutRepositoryRequest, AcknowledgedResponse, PutRepositoryRequestBuilder> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs register repository request
|
* Constructs register repository request
|
||||||
|
@ -1,40 +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.cluster.repositories.put;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register repository response
|
|
||||||
*/
|
|
||||||
public class PutRepositoryResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
PutRepositoryResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
PutRepositoryResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static PutRepositoryResponse fromXContent(XContentParser parser) {
|
|
||||||
return new PutRepositoryResponse(parseAcknowledged(parser));
|
|
||||||
}
|
|
||||||
}
|
|
@ -21,6 +21,7 @@ package org.elasticsearch.action.admin.cluster.repositories.put;
|
|||||||
|
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
||||||
@ -37,7 +38,7 @@ import org.elasticsearch.transport.TransportService;
|
|||||||
/**
|
/**
|
||||||
* Transport action for register repository operation
|
* Transport action for register repository operation
|
||||||
*/
|
*/
|
||||||
public class TransportPutRepositoryAction extends TransportMasterNodeAction<PutRepositoryRequest, PutRepositoryResponse> {
|
public class TransportPutRepositoryAction extends TransportMasterNodeAction<PutRepositoryRequest, AcknowledgedResponse> {
|
||||||
|
|
||||||
private final RepositoriesService repositoriesService;
|
private final RepositoriesService repositoriesService;
|
||||||
|
|
||||||
@ -55,8 +56,8 @@ public class TransportPutRepositoryAction extends TransportMasterNodeAction<PutR
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PutRepositoryResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new PutRepositoryResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -65,7 +66,7 @@ public class TransportPutRepositoryAction extends TransportMasterNodeAction<PutR
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(final PutRepositoryRequest request, ClusterState state, final ActionListener<PutRepositoryResponse> listener) {
|
protected void masterOperation(final PutRepositoryRequest request, ClusterState state, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
|
|
||||||
repositoriesService.registerRepository(
|
repositoriesService.registerRepository(
|
||||||
new RepositoriesService.RegisterRepositoryRequest("put_repository [" + request.name() + "]",
|
new RepositoriesService.RegisterRepositoryRequest("put_repository [" + request.name() + "]",
|
||||||
@ -76,7 +77,7 @@ public class TransportPutRepositoryAction extends TransportMasterNodeAction<PutR
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(ClusterStateUpdateResponse response) {
|
public void onResponse(ClusterStateUpdateResponse response) {
|
||||||
listener.onResponse(new PutRepositoryResponse(response.isAcknowledged()));
|
listener.onResponse(new AcknowledgedResponse(response.isAcknowledged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,11 +20,12 @@
|
|||||||
package org.elasticsearch.action.admin.cluster.snapshots.delete;
|
package org.elasticsearch.action.admin.cluster.snapshots.delete;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete snapshot action
|
* Delete snapshot action
|
||||||
*/
|
*/
|
||||||
public class DeleteSnapshotAction extends Action<DeleteSnapshotResponse> {
|
public class DeleteSnapshotAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final DeleteSnapshotAction INSTANCE = new DeleteSnapshotAction();
|
public static final DeleteSnapshotAction INSTANCE = new DeleteSnapshotAction();
|
||||||
public static final String NAME = "cluster:admin/snapshot/delete";
|
public static final String NAME = "cluster:admin/snapshot/delete";
|
||||||
@ -34,8 +35,8 @@ public class DeleteSnapshotAction extends Action<DeleteSnapshotResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DeleteSnapshotResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new DeleteSnapshotResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,13 +19,14 @@
|
|||||||
|
|
||||||
package org.elasticsearch.action.admin.cluster.snapshots.delete;
|
package org.elasticsearch.action.admin.cluster.snapshots.delete;
|
||||||
|
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.MasterNodeOperationRequestBuilder;
|
import org.elasticsearch.action.support.master.MasterNodeOperationRequestBuilder;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete snapshot request builder
|
* Delete snapshot request builder
|
||||||
*/
|
*/
|
||||||
public class DeleteSnapshotRequestBuilder extends MasterNodeOperationRequestBuilder<DeleteSnapshotRequest, DeleteSnapshotResponse, DeleteSnapshotRequestBuilder> {
|
public class DeleteSnapshotRequestBuilder extends MasterNodeOperationRequestBuilder<DeleteSnapshotRequest, AcknowledgedResponse, DeleteSnapshotRequestBuilder> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs delete snapshot request builder
|
* Constructs delete snapshot request builder
|
||||||
|
@ -1,41 +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.cluster.snapshots.delete;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Delete snapshot response
|
|
||||||
*/
|
|
||||||
public class DeleteSnapshotResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
DeleteSnapshotResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
DeleteSnapshotResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DeleteSnapshotResponse fromXContent(XContentParser parser) {
|
|
||||||
return new DeleteSnapshotResponse(parseAcknowledged(parser));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -21,6 +21,7 @@ package org.elasticsearch.action.admin.cluster.snapshots.delete;
|
|||||||
|
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.block.ClusterBlockException;
|
import org.elasticsearch.cluster.block.ClusterBlockException;
|
||||||
@ -36,7 +37,7 @@ import org.elasticsearch.transport.TransportService;
|
|||||||
/**
|
/**
|
||||||
* Transport action for delete snapshot operation
|
* Transport action for delete snapshot operation
|
||||||
*/
|
*/
|
||||||
public class TransportDeleteSnapshotAction extends TransportMasterNodeAction<DeleteSnapshotRequest, DeleteSnapshotResponse> {
|
public class TransportDeleteSnapshotAction extends TransportMasterNodeAction<DeleteSnapshotRequest, AcknowledgedResponse> {
|
||||||
private final SnapshotsService snapshotsService;
|
private final SnapshotsService snapshotsService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@ -53,8 +54,8 @@ public class TransportDeleteSnapshotAction extends TransportMasterNodeAction<Del
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DeleteSnapshotResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new DeleteSnapshotResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -64,11 +65,11 @@ public class TransportDeleteSnapshotAction extends TransportMasterNodeAction<Del
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(final DeleteSnapshotRequest request, ClusterState state, final ActionListener<DeleteSnapshotResponse> listener) {
|
protected void masterOperation(final DeleteSnapshotRequest request, ClusterState state, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
snapshotsService.deleteSnapshot(request.repository(), request.snapshot(), new SnapshotsService.DeleteSnapshotListener() {
|
snapshotsService.deleteSnapshot(request.repository(), request.snapshot(), new SnapshotsService.DeleteSnapshotListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse() {
|
public void onResponse() {
|
||||||
listener.onResponse(new DeleteSnapshotResponse(true));
|
listener.onResponse(new AcknowledgedResponse(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,8 +20,9 @@
|
|||||||
package org.elasticsearch.action.admin.cluster.storedscripts;
|
package org.elasticsearch.action.admin.cluster.storedscripts;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
public class DeleteStoredScriptAction extends Action<DeleteStoredScriptResponse> {
|
public class DeleteStoredScriptAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final DeleteStoredScriptAction INSTANCE = new DeleteStoredScriptAction();
|
public static final DeleteStoredScriptAction INSTANCE = new DeleteStoredScriptAction();
|
||||||
public static final String NAME = "cluster:admin/script/delete";
|
public static final String NAME = "cluster:admin/script/delete";
|
||||||
@ -31,7 +32,7 @@ public class DeleteStoredScriptAction extends Action<DeleteStoredScriptResponse>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DeleteStoredScriptResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new DeleteStoredScriptResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,10 +20,11 @@
|
|||||||
package org.elasticsearch.action.admin.cluster.storedscripts;
|
package org.elasticsearch.action.admin.cluster.storedscripts;
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
|
|
||||||
public class DeleteStoredScriptRequestBuilder extends AcknowledgedRequestBuilder<DeleteStoredScriptRequest,
|
public class DeleteStoredScriptRequestBuilder extends AcknowledgedRequestBuilder<DeleteStoredScriptRequest,
|
||||||
DeleteStoredScriptResponse, DeleteStoredScriptRequestBuilder> {
|
AcknowledgedResponse, DeleteStoredScriptRequestBuilder> {
|
||||||
|
|
||||||
public DeleteStoredScriptRequestBuilder(ElasticsearchClient client, DeleteStoredScriptAction action) {
|
public DeleteStoredScriptRequestBuilder(ElasticsearchClient client, DeleteStoredScriptAction action) {
|
||||||
super(client, action, new DeleteStoredScriptRequest());
|
super(client, action, new DeleteStoredScriptRequest());
|
||||||
|
@ -1,37 +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.cluster.storedscripts;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
|
||||||
|
|
||||||
public class DeleteStoredScriptResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
DeleteStoredScriptResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public DeleteStoredScriptResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DeleteStoredScriptResponse fromXContent(XContentParser parser) {
|
|
||||||
return new DeleteStoredScriptResponse(parseAcknowledged(parser));
|
|
||||||
}
|
|
||||||
}
|
|
@ -20,9 +20,10 @@
|
|||||||
package org.elasticsearch.action.admin.cluster.storedscripts;
|
package org.elasticsearch.action.admin.cluster.storedscripts;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
|
|
||||||
public class PutStoredScriptAction extends Action<PutStoredScriptResponse> {
|
public class PutStoredScriptAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final PutStoredScriptAction INSTANCE = new PutStoredScriptAction();
|
public static final PutStoredScriptAction INSTANCE = new PutStoredScriptAction();
|
||||||
public static final String NAME = "cluster:admin/script/put";
|
public static final String NAME = "cluster:admin/script/put";
|
||||||
@ -34,7 +35,7 @@ public class PutStoredScriptAction extends Action<PutStoredScriptResponse> {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PutStoredScriptResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new PutStoredScriptResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,13 @@
|
|||||||
package org.elasticsearch.action.admin.cluster.storedscripts;
|
package org.elasticsearch.action.admin.cluster.storedscripts;
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
import org.elasticsearch.common.bytes.BytesReference;
|
import org.elasticsearch.common.bytes.BytesReference;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
|
|
||||||
public class PutStoredScriptRequestBuilder extends AcknowledgedRequestBuilder<PutStoredScriptRequest,
|
public class PutStoredScriptRequestBuilder extends AcknowledgedRequestBuilder<PutStoredScriptRequest,
|
||||||
PutStoredScriptResponse, PutStoredScriptRequestBuilder> {
|
AcknowledgedResponse, PutStoredScriptRequestBuilder> {
|
||||||
|
|
||||||
public PutStoredScriptRequestBuilder(ElasticsearchClient client, PutStoredScriptAction action) {
|
public PutStoredScriptRequestBuilder(ElasticsearchClient client, PutStoredScriptAction action) {
|
||||||
super(client, action, new PutStoredScriptRequest());
|
super(client, action, new PutStoredScriptRequest());
|
||||||
|
@ -1,33 +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.cluster.storedscripts;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
|
|
||||||
public class PutStoredScriptResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
PutStoredScriptResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public PutStoredScriptResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -21,6 +21,7 @@ package org.elasticsearch.action.admin.cluster.storedscripts;
|
|||||||
|
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.block.ClusterBlockException;
|
import org.elasticsearch.cluster.block.ClusterBlockException;
|
||||||
@ -33,8 +34,7 @@ import org.elasticsearch.script.ScriptService;
|
|||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
||||||
public class TransportDeleteStoredScriptAction extends TransportMasterNodeAction<DeleteStoredScriptRequest,
|
public class TransportDeleteStoredScriptAction extends TransportMasterNodeAction<DeleteStoredScriptRequest, AcknowledgedResponse> {
|
||||||
DeleteStoredScriptResponse> {
|
|
||||||
|
|
||||||
private final ScriptService scriptService;
|
private final ScriptService scriptService;
|
||||||
|
|
||||||
@ -53,13 +53,13 @@ public class TransportDeleteStoredScriptAction extends TransportMasterNodeAction
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DeleteStoredScriptResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new DeleteStoredScriptResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(DeleteStoredScriptRequest request, ClusterState state,
|
protected void masterOperation(DeleteStoredScriptRequest request, ClusterState state,
|
||||||
ActionListener<DeleteStoredScriptResponse> listener) throws Exception {
|
ActionListener<AcknowledgedResponse> listener) throws Exception {
|
||||||
scriptService.deleteStoredScript(clusterService, request, listener);
|
scriptService.deleteStoredScript(clusterService, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ package org.elasticsearch.action.admin.cluster.storedscripts;
|
|||||||
|
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.block.ClusterBlockException;
|
import org.elasticsearch.cluster.block.ClusterBlockException;
|
||||||
@ -33,7 +34,7 @@ import org.elasticsearch.script.ScriptService;
|
|||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
||||||
public class TransportPutStoredScriptAction extends TransportMasterNodeAction<PutStoredScriptRequest, PutStoredScriptResponse> {
|
public class TransportPutStoredScriptAction extends TransportMasterNodeAction<PutStoredScriptRequest, AcknowledgedResponse> {
|
||||||
|
|
||||||
private final ScriptService scriptService;
|
private final ScriptService scriptService;
|
||||||
|
|
||||||
@ -52,13 +53,13 @@ public class TransportPutStoredScriptAction extends TransportMasterNodeAction<Pu
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PutStoredScriptResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new PutStoredScriptResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(PutStoredScriptRequest request, ClusterState state,
|
protected void masterOperation(PutStoredScriptRequest request, ClusterState state,
|
||||||
ActionListener<PutStoredScriptResponse> listener) throws Exception {
|
ActionListener<AcknowledgedResponse> listener) throws Exception {
|
||||||
scriptService.putStoredScript(clusterService, request, listener);
|
scriptService.putStoredScript(clusterService, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,8 +20,9 @@
|
|||||||
package org.elasticsearch.action.admin.indices.alias;
|
package org.elasticsearch.action.admin.indices.alias;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
public class IndicesAliasesAction extends Action<IndicesAliasesResponse> {
|
public class IndicesAliasesAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final IndicesAliasesAction INSTANCE = new IndicesAliasesAction();
|
public static final IndicesAliasesAction INSTANCE = new IndicesAliasesAction();
|
||||||
public static final String NAME = "indices:admin/aliases";
|
public static final String NAME = "indices:admin/aliases";
|
||||||
@ -31,7 +32,7 @@ public class IndicesAliasesAction extends Action<IndicesAliasesResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IndicesAliasesResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new IndicesAliasesResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ package org.elasticsearch.action.admin.indices.alias;
|
|||||||
|
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions;
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
import org.elasticsearch.index.query.QueryBuilder;
|
import org.elasticsearch.index.query.QueryBuilder;
|
||||||
|
|
||||||
@ -30,7 +31,7 @@ import java.util.Map;
|
|||||||
* Builder for request to modify many aliases at once.
|
* Builder for request to modify many aliases at once.
|
||||||
*/
|
*/
|
||||||
public class IndicesAliasesRequestBuilder
|
public class IndicesAliasesRequestBuilder
|
||||||
extends AcknowledgedRequestBuilder<IndicesAliasesRequest, IndicesAliasesResponse, IndicesAliasesRequestBuilder> {
|
extends AcknowledgedRequestBuilder<IndicesAliasesRequest, AcknowledgedResponse, IndicesAliasesRequestBuilder> {
|
||||||
|
|
||||||
public IndicesAliasesRequestBuilder(ElasticsearchClient client, IndicesAliasesAction action) {
|
public IndicesAliasesRequestBuilder(ElasticsearchClient client, IndicesAliasesAction action) {
|
||||||
super(client, action, new IndicesAliasesRequest());
|
super(client, action, new IndicesAliasesRequest());
|
||||||
|
@ -1,47 +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.alias;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A response for a add/remove alias action.
|
|
||||||
*/
|
|
||||||
public class IndicesAliasesResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
private static final ConstructingObjectParser<IndicesAliasesResponse, Void> PARSER = new ConstructingObjectParser<>("indices_aliases",
|
|
||||||
true, args -> new IndicesAliasesResponse((boolean) args[0]));
|
|
||||||
static {
|
|
||||||
declareAcknowledgedField(PARSER);
|
|
||||||
}
|
|
||||||
|
|
||||||
IndicesAliasesResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
IndicesAliasesResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IndicesAliasesResponse fromXContent(XContentParser parser) {
|
|
||||||
return new IndicesAliasesResponse(parseAcknowledged(parser));
|
|
||||||
}
|
|
||||||
}
|
|
@ -23,6 +23,7 @@ import com.carrotsearch.hppc.cursors.ObjectCursor;
|
|||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
||||||
@ -52,7 +53,7 @@ import static java.util.Collections.unmodifiableList;
|
|||||||
/**
|
/**
|
||||||
* Add/remove aliases action
|
* Add/remove aliases action
|
||||||
*/
|
*/
|
||||||
public class TransportIndicesAliasesAction extends TransportMasterNodeAction<IndicesAliasesRequest, IndicesAliasesResponse> {
|
public class TransportIndicesAliasesAction extends TransportMasterNodeAction<IndicesAliasesRequest, AcknowledgedResponse> {
|
||||||
|
|
||||||
private final MetaDataIndexAliasesService indexAliasesService;
|
private final MetaDataIndexAliasesService indexAliasesService;
|
||||||
|
|
||||||
@ -71,8 +72,8 @@ public class TransportIndicesAliasesAction extends TransportMasterNodeAction<Ind
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected IndicesAliasesResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new IndicesAliasesResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -85,7 +86,7 @@ public class TransportIndicesAliasesAction extends TransportMasterNodeAction<Ind
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(final IndicesAliasesRequest request, final ClusterState state, final ActionListener<IndicesAliasesResponse> listener) {
|
protected void masterOperation(final IndicesAliasesRequest request, final ClusterState state, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
|
|
||||||
//Expand the indices names
|
//Expand the indices names
|
||||||
List<AliasActions> actions = request.aliasActions();
|
List<AliasActions> actions = request.aliasActions();
|
||||||
@ -127,7 +128,7 @@ public class TransportIndicesAliasesAction extends TransportMasterNodeAction<Ind
|
|||||||
indexAliasesService.indicesAliases(updateRequest, new ActionListener<ClusterStateUpdateResponse>() {
|
indexAliasesService.indicesAliases(updateRequest, new ActionListener<ClusterStateUpdateResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(ClusterStateUpdateResponse response) {
|
public void onResponse(ClusterStateUpdateResponse response) {
|
||||||
listener.onResponse(new IndicesAliasesResponse(response.isAcknowledged()));
|
listener.onResponse(new AcknowledgedResponse(response.isAcknowledged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,8 +20,9 @@
|
|||||||
package org.elasticsearch.action.admin.indices.close;
|
package org.elasticsearch.action.admin.indices.close;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
public class CloseIndexAction extends Action<CloseIndexResponse> {
|
public class CloseIndexAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final CloseIndexAction INSTANCE = new CloseIndexAction();
|
public static final CloseIndexAction INSTANCE = new CloseIndexAction();
|
||||||
public static final String NAME = "indices:admin/close";
|
public static final String NAME = "indices:admin/close";
|
||||||
@ -31,7 +32,7 @@ public class CloseIndexAction extends Action<CloseIndexResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CloseIndexResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new CloseIndexResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,12 +21,14 @@ package org.elasticsearch.action.admin.indices.close;
|
|||||||
|
|
||||||
import org.elasticsearch.action.support.IndicesOptions;
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builder for close index request
|
* Builder for close index request
|
||||||
*/
|
*/
|
||||||
public class CloseIndexRequestBuilder extends AcknowledgedRequestBuilder<CloseIndexRequest, CloseIndexResponse, CloseIndexRequestBuilder> {
|
public class CloseIndexRequestBuilder
|
||||||
|
extends AcknowledgedRequestBuilder<CloseIndexRequest, AcknowledgedResponse, CloseIndexRequestBuilder> {
|
||||||
|
|
||||||
public CloseIndexRequestBuilder(ElasticsearchClient client, CloseIndexAction action) {
|
public CloseIndexRequestBuilder(ElasticsearchClient client, CloseIndexAction action) {
|
||||||
super(client, action, new CloseIndexRequest());
|
super(client, action, new CloseIndexRequest());
|
||||||
|
@ -1,39 +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.close;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A response for a close index action.
|
|
||||||
*/
|
|
||||||
public class CloseIndexResponse extends AcknowledgedResponse {
|
|
||||||
CloseIndexResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
CloseIndexResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CloseIndexResponse fromXContent(XContentParser parser) {
|
|
||||||
return new CloseIndexResponse(parseAcknowledged(parser));
|
|
||||||
}
|
|
||||||
}
|
|
@ -23,6 +23,7 @@ import org.apache.logging.log4j.message.ParameterizedMessage;
|
|||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
import org.elasticsearch.action.support.DestructiveOperations;
|
import org.elasticsearch.action.support.DestructiveOperations;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
||||||
@ -44,7 +45,7 @@ import org.elasticsearch.transport.TransportService;
|
|||||||
/**
|
/**
|
||||||
* Close index action
|
* Close index action
|
||||||
*/
|
*/
|
||||||
public class TransportCloseIndexAction extends TransportMasterNodeAction<CloseIndexRequest, CloseIndexResponse> {
|
public class TransportCloseIndexAction extends TransportMasterNodeAction<CloseIndexRequest, AcknowledgedResponse> {
|
||||||
|
|
||||||
private final MetaDataIndexStateService indexStateService;
|
private final MetaDataIndexStateService indexStateService;
|
||||||
private final DestructiveOperations destructiveOperations;
|
private final DestructiveOperations destructiveOperations;
|
||||||
@ -75,12 +76,12 @@ public class TransportCloseIndexAction extends TransportMasterNodeAction<CloseIn
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected CloseIndexResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new CloseIndexResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doExecute(Task task, CloseIndexRequest request, ActionListener<CloseIndexResponse> listener) {
|
protected void doExecute(Task task, CloseIndexRequest request, ActionListener<AcknowledgedResponse> listener) {
|
||||||
destructiveOperations.failDestructive(request.indices());
|
destructiveOperations.failDestructive(request.indices());
|
||||||
if (closeIndexEnabled == false) {
|
if (closeIndexEnabled == false) {
|
||||||
throw new IllegalStateException("closing indices is disabled - set [" + CLUSTER_INDICES_CLOSE_ENABLE_SETTING.getKey() + ": true] to enable it. NOTE: closed indices still consume a significant amount of diskspace");
|
throw new IllegalStateException("closing indices is disabled - set [" + CLUSTER_INDICES_CLOSE_ENABLE_SETTING.getKey() + ": true] to enable it. NOTE: closed indices still consume a significant amount of diskspace");
|
||||||
@ -94,10 +95,10 @@ public class TransportCloseIndexAction extends TransportMasterNodeAction<CloseIn
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(final CloseIndexRequest request, final ClusterState state, final ActionListener<CloseIndexResponse> listener) {
|
protected void masterOperation(final CloseIndexRequest request, final ClusterState state, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
final Index[] concreteIndices = indexNameExpressionResolver.concreteIndices(state, request);
|
final Index[] concreteIndices = indexNameExpressionResolver.concreteIndices(state, request);
|
||||||
if (concreteIndices == null || concreteIndices.length == 0) {
|
if (concreteIndices == null || concreteIndices.length == 0) {
|
||||||
listener.onResponse(new CloseIndexResponse(true));
|
listener.onResponse(new AcknowledgedResponse(true));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CloseIndexClusterStateUpdateRequest updateRequest = new CloseIndexClusterStateUpdateRequest()
|
CloseIndexClusterStateUpdateRequest updateRequest = new CloseIndexClusterStateUpdateRequest()
|
||||||
@ -108,7 +109,7 @@ public class TransportCloseIndexAction extends TransportMasterNodeAction<CloseIn
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(ClusterStateUpdateResponse response) {
|
public void onResponse(ClusterStateUpdateResponse response) {
|
||||||
listener.onResponse(new CloseIndexResponse(response.isAcknowledged()));
|
listener.onResponse(new AcknowledgedResponse(response.isAcknowledged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,8 +20,9 @@
|
|||||||
package org.elasticsearch.action.admin.indices.delete;
|
package org.elasticsearch.action.admin.indices.delete;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
public class DeleteIndexAction extends Action<DeleteIndexResponse> {
|
public class DeleteIndexAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final DeleteIndexAction INSTANCE = new DeleteIndexAction();
|
public static final DeleteIndexAction INSTANCE = new DeleteIndexAction();
|
||||||
public static final String NAME = "indices:admin/delete";
|
public static final String NAME = "indices:admin/delete";
|
||||||
@ -31,7 +32,7 @@ public class DeleteIndexAction extends Action<DeleteIndexResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DeleteIndexResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new DeleteIndexResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,10 @@ package org.elasticsearch.action.admin.indices.delete;
|
|||||||
|
|
||||||
import org.elasticsearch.action.support.IndicesOptions;
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
|
|
||||||
public class DeleteIndexRequestBuilder extends AcknowledgedRequestBuilder<DeleteIndexRequest, DeleteIndexResponse, DeleteIndexRequestBuilder> {
|
public class DeleteIndexRequestBuilder extends AcknowledgedRequestBuilder<DeleteIndexRequest, AcknowledgedResponse, DeleteIndexRequestBuilder> {
|
||||||
|
|
||||||
public DeleteIndexRequestBuilder(ElasticsearchClient client, DeleteIndexAction action, String... indices) {
|
public DeleteIndexRequestBuilder(ElasticsearchClient client, DeleteIndexAction action, String... indices) {
|
||||||
super(client, action, new DeleteIndexRequest(indices));
|
super(client, action, new DeleteIndexRequest(indices));
|
||||||
|
@ -1,40 +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.delete;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A response for a delete index action.
|
|
||||||
*/
|
|
||||||
public class DeleteIndexResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
DeleteIndexResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
DeleteIndexResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DeleteIndexResponse fromXContent(XContentParser parser) {
|
|
||||||
return new DeleteIndexResponse(parseAcknowledged(parser));
|
|
||||||
}
|
|
||||||
}
|
|
@ -23,6 +23,7 @@ import org.apache.logging.log4j.message.ParameterizedMessage;
|
|||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
import org.elasticsearch.action.support.DestructiveOperations;
|
import org.elasticsearch.action.support.DestructiveOperations;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
||||||
@ -44,7 +45,7 @@ import java.util.Set;
|
|||||||
/**
|
/**
|
||||||
* Delete index action.
|
* Delete index action.
|
||||||
*/
|
*/
|
||||||
public class TransportDeleteIndexAction extends TransportMasterNodeAction<DeleteIndexRequest, DeleteIndexResponse> {
|
public class TransportDeleteIndexAction extends TransportMasterNodeAction<DeleteIndexRequest, AcknowledgedResponse> {
|
||||||
|
|
||||||
private final MetaDataDeleteIndexService deleteIndexService;
|
private final MetaDataDeleteIndexService deleteIndexService;
|
||||||
private final DestructiveOperations destructiveOperations;
|
private final DestructiveOperations destructiveOperations;
|
||||||
@ -64,12 +65,12 @@ public class TransportDeleteIndexAction extends TransportMasterNodeAction<Delete
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DeleteIndexResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new DeleteIndexResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doExecute(Task task, DeleteIndexRequest request, ActionListener<DeleteIndexResponse> listener) {
|
protected void doExecute(Task task, DeleteIndexRequest request, ActionListener<AcknowledgedResponse> listener) {
|
||||||
destructiveOperations.failDestructive(request.indices());
|
destructiveOperations.failDestructive(request.indices());
|
||||||
super.doExecute(task, request, listener);
|
super.doExecute(task, request, listener);
|
||||||
}
|
}
|
||||||
@ -80,10 +81,10 @@ public class TransportDeleteIndexAction extends TransportMasterNodeAction<Delete
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(final DeleteIndexRequest request, final ClusterState state, final ActionListener<DeleteIndexResponse> listener) {
|
protected void masterOperation(final DeleteIndexRequest request, final ClusterState state, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
final Set<Index> concreteIndices = new HashSet<>(Arrays.asList(indexNameExpressionResolver.concreteIndices(state, request)));
|
final Set<Index> concreteIndices = new HashSet<>(Arrays.asList(indexNameExpressionResolver.concreteIndices(state, request)));
|
||||||
if (concreteIndices.isEmpty()) {
|
if (concreteIndices.isEmpty()) {
|
||||||
listener.onResponse(new DeleteIndexResponse(true));
|
listener.onResponse(new AcknowledgedResponse(true));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,7 +96,7 @@ public class TransportDeleteIndexAction extends TransportMasterNodeAction<Delete
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(ClusterStateUpdateResponse response) {
|
public void onResponse(ClusterStateUpdateResponse response) {
|
||||||
listener.onResponse(new DeleteIndexResponse(response.isAcknowledged()));
|
listener.onResponse(new AcknowledgedResponse(response.isAcknowledged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,8 +20,9 @@
|
|||||||
package org.elasticsearch.action.admin.indices.mapping.put;
|
package org.elasticsearch.action.admin.indices.mapping.put;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
public class PutMappingAction extends Action<PutMappingResponse> {
|
public class PutMappingAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final PutMappingAction INSTANCE = new PutMappingAction();
|
public static final PutMappingAction INSTANCE = new PutMappingAction();
|
||||||
public static final String NAME = "indices:admin/mapping/put";
|
public static final String NAME = "indices:admin/mapping/put";
|
||||||
@ -31,7 +32,7 @@ public class PutMappingAction extends Action<PutMappingResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PutMappingResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new PutMappingResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ import org.elasticsearch.action.ActionRequestValidationException;
|
|||||||
import org.elasticsearch.action.IndicesRequest;
|
import org.elasticsearch.action.IndicesRequest;
|
||||||
import org.elasticsearch.action.support.IndicesOptions;
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedRequest;
|
import org.elasticsearch.action.support.master.AcknowledgedRequest;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.common.Strings;
|
import org.elasticsearch.common.Strings;
|
||||||
import org.elasticsearch.common.bytes.BytesArray;
|
import org.elasticsearch.common.bytes.BytesArray;
|
||||||
import org.elasticsearch.common.bytes.BytesReference;
|
import org.elasticsearch.common.bytes.BytesReference;
|
||||||
@ -57,7 +58,7 @@ import static org.elasticsearch.action.ValidateActions.addValidationError;
|
|||||||
*
|
*
|
||||||
* @see org.elasticsearch.client.Requests#putMappingRequest(String...)
|
* @see org.elasticsearch.client.Requests#putMappingRequest(String...)
|
||||||
* @see org.elasticsearch.client.IndicesAdminClient#putMapping(PutMappingRequest)
|
* @see org.elasticsearch.client.IndicesAdminClient#putMapping(PutMappingRequest)
|
||||||
* @see PutMappingResponse
|
* @see AcknowledgedResponse
|
||||||
*/
|
*/
|
||||||
public class PutMappingRequest extends AcknowledgedRequest<PutMappingRequest> implements IndicesRequest.Replaceable, ToXContentObject {
|
public class PutMappingRequest extends AcknowledgedRequest<PutMappingRequest> implements IndicesRequest.Replaceable, ToXContentObject {
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ package org.elasticsearch.action.admin.indices.mapping.put;
|
|||||||
|
|
||||||
import org.elasticsearch.action.support.IndicesOptions;
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
@ -31,7 +32,8 @@ import java.util.Map;
|
|||||||
/**
|
/**
|
||||||
* Builder for a put mapping request
|
* Builder for a put mapping request
|
||||||
*/
|
*/
|
||||||
public class PutMappingRequestBuilder extends AcknowledgedRequestBuilder<PutMappingRequest, PutMappingResponse, PutMappingRequestBuilder> {
|
public class PutMappingRequestBuilder
|
||||||
|
extends AcknowledgedRequestBuilder<PutMappingRequest, AcknowledgedResponse, PutMappingRequestBuilder> {
|
||||||
|
|
||||||
public PutMappingRequestBuilder(ElasticsearchClient client, PutMappingAction action) {
|
public PutMappingRequestBuilder(ElasticsearchClient client, PutMappingAction action) {
|
||||||
super(client, action, new PutMappingRequest());
|
super(client, action, new PutMappingRequest());
|
||||||
|
@ -1,40 +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.mapping.put;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The response of put mapping operation.
|
|
||||||
*/
|
|
||||||
public class PutMappingResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
protected PutMappingResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
protected PutMappingResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static PutMappingResponse fromXContent(XContentParser parser) {
|
|
||||||
return new PutMappingResponse(parseAcknowledged(parser));
|
|
||||||
}
|
|
||||||
}
|
|
@ -22,6 +22,7 @@ package org.elasticsearch.action.admin.indices.mapping.put;
|
|||||||
import org.apache.logging.log4j.message.ParameterizedMessage;
|
import org.apache.logging.log4j.message.ParameterizedMessage;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
||||||
@ -40,7 +41,7 @@ import org.elasticsearch.transport.TransportService;
|
|||||||
/**
|
/**
|
||||||
* Put mapping action.
|
* Put mapping action.
|
||||||
*/
|
*/
|
||||||
public class TransportPutMappingAction extends TransportMasterNodeAction<PutMappingRequest, PutMappingResponse> {
|
public class TransportPutMappingAction extends TransportMasterNodeAction<PutMappingRequest, AcknowledgedResponse> {
|
||||||
|
|
||||||
private final MetaDataMappingService metaDataMappingService;
|
private final MetaDataMappingService metaDataMappingService;
|
||||||
|
|
||||||
@ -59,8 +60,8 @@ public class TransportPutMappingAction extends TransportMasterNodeAction<PutMapp
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PutMappingResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new PutMappingResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -75,7 +76,7 @@ public class TransportPutMappingAction extends TransportMasterNodeAction<PutMapp
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(final PutMappingRequest request, final ClusterState state, final ActionListener<PutMappingResponse> listener) {
|
protected void masterOperation(final PutMappingRequest request, final ClusterState state, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
try {
|
try {
|
||||||
final Index[] concreteIndices = request.getConcreteIndex() == null ? indexNameExpressionResolver.concreteIndices(state, request) : new Index[] {request.getConcreteIndex()};
|
final Index[] concreteIndices = request.getConcreteIndex() == null ? indexNameExpressionResolver.concreteIndices(state, request) : new Index[] {request.getConcreteIndex()};
|
||||||
PutMappingClusterStateUpdateRequest updateRequest = new PutMappingClusterStateUpdateRequest()
|
PutMappingClusterStateUpdateRequest updateRequest = new PutMappingClusterStateUpdateRequest()
|
||||||
@ -87,7 +88,7 @@ public class TransportPutMappingAction extends TransportMasterNodeAction<PutMapp
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(ClusterStateUpdateResponse response) {
|
public void onResponse(ClusterStateUpdateResponse response) {
|
||||||
listener.onResponse(new PutMappingResponse(response.isAcknowledged()));
|
listener.onResponse(new AcknowledgedResponse(response.isAcknowledged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -22,6 +22,7 @@ package org.elasticsearch.action.admin.indices.settings.put;
|
|||||||
import org.apache.logging.log4j.message.ParameterizedMessage;
|
import org.apache.logging.log4j.message.ParameterizedMessage;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
||||||
@ -37,7 +38,7 @@ import org.elasticsearch.index.Index;
|
|||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
||||||
public class TransportUpdateSettingsAction extends TransportMasterNodeAction<UpdateSettingsRequest, UpdateSettingsResponse> {
|
public class TransportUpdateSettingsAction extends TransportMasterNodeAction<UpdateSettingsRequest, AcknowledgedResponse> {
|
||||||
|
|
||||||
private final MetaDataUpdateSettingsService updateSettingsService;
|
private final MetaDataUpdateSettingsService updateSettingsService;
|
||||||
|
|
||||||
@ -71,12 +72,12 @@ public class TransportUpdateSettingsAction extends TransportMasterNodeAction<Upd
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected UpdateSettingsResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new UpdateSettingsResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(final UpdateSettingsRequest request, final ClusterState state, final ActionListener<UpdateSettingsResponse> listener) {
|
protected void masterOperation(final UpdateSettingsRequest request, final ClusterState state, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
final Index[] concreteIndices = indexNameExpressionResolver.concreteIndices(state, request);
|
final Index[] concreteIndices = indexNameExpressionResolver.concreteIndices(state, request);
|
||||||
UpdateSettingsClusterStateUpdateRequest clusterStateUpdateRequest = new UpdateSettingsClusterStateUpdateRequest()
|
UpdateSettingsClusterStateUpdateRequest clusterStateUpdateRequest = new UpdateSettingsClusterStateUpdateRequest()
|
||||||
.indices(concreteIndices)
|
.indices(concreteIndices)
|
||||||
@ -88,7 +89,7 @@ public class TransportUpdateSettingsAction extends TransportMasterNodeAction<Upd
|
|||||||
updateSettingsService.updateSettings(clusterStateUpdateRequest, new ActionListener<ClusterStateUpdateResponse>() {
|
updateSettingsService.updateSettings(clusterStateUpdateRequest, new ActionListener<ClusterStateUpdateResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(ClusterStateUpdateResponse response) {
|
public void onResponse(ClusterStateUpdateResponse response) {
|
||||||
listener.onResponse(new UpdateSettingsResponse(response.isAcknowledged()));
|
listener.onResponse(new AcknowledgedResponse(response.isAcknowledged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,8 +20,9 @@
|
|||||||
package org.elasticsearch.action.admin.indices.settings.put;
|
package org.elasticsearch.action.admin.indices.settings.put;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
public class UpdateSettingsAction extends Action<UpdateSettingsResponse> {
|
public class UpdateSettingsAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final UpdateSettingsAction INSTANCE = new UpdateSettingsAction();
|
public static final UpdateSettingsAction INSTANCE = new UpdateSettingsAction();
|
||||||
public static final String NAME = "indices:admin/settings/update";
|
public static final String NAME = "indices:admin/settings/update";
|
||||||
@ -31,7 +32,7 @@ public class UpdateSettingsAction extends Action<UpdateSettingsResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UpdateSettingsResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new UpdateSettingsResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ package org.elasticsearch.action.admin.indices.settings.put;
|
|||||||
|
|
||||||
import org.elasticsearch.action.support.IndicesOptions;
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
@ -30,7 +31,7 @@ import java.util.Map;
|
|||||||
/**
|
/**
|
||||||
* Builder for an update index settings request
|
* Builder for an update index settings request
|
||||||
*/
|
*/
|
||||||
public class UpdateSettingsRequestBuilder extends AcknowledgedRequestBuilder<UpdateSettingsRequest, UpdateSettingsResponse, UpdateSettingsRequestBuilder> {
|
public class UpdateSettingsRequestBuilder extends AcknowledgedRequestBuilder<UpdateSettingsRequest, AcknowledgedResponse, UpdateSettingsRequestBuilder> {
|
||||||
|
|
||||||
public UpdateSettingsRequestBuilder(ElasticsearchClient client, UpdateSettingsAction action, String... indices) {
|
public UpdateSettingsRequestBuilder(ElasticsearchClient client, UpdateSettingsAction action, String... indices) {
|
||||||
super(client, action, new UpdateSettingsRequest(indices));
|
super(client, action, new UpdateSettingsRequest(indices));
|
||||||
|
@ -1,40 +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.settings.put;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A response for an update index settings action
|
|
||||||
*/
|
|
||||||
public class UpdateSettingsResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
UpdateSettingsResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateSettingsResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static UpdateSettingsResponse fromXContent(XContentParser parser) {
|
|
||||||
return new UpdateSettingsResponse(parseAcknowledged(parser));
|
|
||||||
}
|
|
||||||
}
|
|
@ -20,8 +20,9 @@
|
|||||||
package org.elasticsearch.action.admin.indices.template.delete;
|
package org.elasticsearch.action.admin.indices.template.delete;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
public class DeleteIndexTemplateAction extends Action<DeleteIndexTemplateResponse> {
|
public class DeleteIndexTemplateAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final DeleteIndexTemplateAction INSTANCE = new DeleteIndexTemplateAction();
|
public static final DeleteIndexTemplateAction INSTANCE = new DeleteIndexTemplateAction();
|
||||||
public static final String NAME = "indices:admin/template/delete";
|
public static final String NAME = "indices:admin/template/delete";
|
||||||
@ -31,7 +32,7 @@ public class DeleteIndexTemplateAction extends Action<DeleteIndexTemplateRespons
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DeleteIndexTemplateResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new DeleteIndexTemplateResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,10 +18,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.elasticsearch.action.admin.indices.template.delete;
|
package org.elasticsearch.action.admin.indices.template.delete;
|
||||||
|
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.MasterNodeOperationRequestBuilder;
|
import org.elasticsearch.action.support.master.MasterNodeOperationRequestBuilder;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
|
|
||||||
public class DeleteIndexTemplateRequestBuilder extends MasterNodeOperationRequestBuilder<DeleteIndexTemplateRequest, DeleteIndexTemplateResponse, DeleteIndexTemplateRequestBuilder> {
|
public class DeleteIndexTemplateRequestBuilder extends MasterNodeOperationRequestBuilder<DeleteIndexTemplateRequest, AcknowledgedResponse, DeleteIndexTemplateRequestBuilder> {
|
||||||
|
|
||||||
public DeleteIndexTemplateRequestBuilder(ElasticsearchClient client, DeleteIndexTemplateAction action) {
|
public DeleteIndexTemplateRequestBuilder(ElasticsearchClient client, DeleteIndexTemplateAction action) {
|
||||||
super(client, action, new DeleteIndexTemplateRequest());
|
super(client, action, new DeleteIndexTemplateRequest());
|
||||||
|
@ -1,34 +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.template.delete;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A response for a delete index template.
|
|
||||||
*/
|
|
||||||
public class DeleteIndexTemplateResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
DeleteIndexTemplateResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
protected DeleteIndexTemplateResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
}
|
|
@ -21,6 +21,7 @@ package org.elasticsearch.action.admin.indices.template.delete;
|
|||||||
import org.apache.logging.log4j.message.ParameterizedMessage;
|
import org.apache.logging.log4j.message.ParameterizedMessage;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.block.ClusterBlockException;
|
import org.elasticsearch.cluster.block.ClusterBlockException;
|
||||||
@ -36,7 +37,7 @@ import org.elasticsearch.transport.TransportService;
|
|||||||
/**
|
/**
|
||||||
* Delete index action.
|
* Delete index action.
|
||||||
*/
|
*/
|
||||||
public class TransportDeleteIndexTemplateAction extends TransportMasterNodeAction<DeleteIndexTemplateRequest, DeleteIndexTemplateResponse> {
|
public class TransportDeleteIndexTemplateAction extends TransportMasterNodeAction<DeleteIndexTemplateRequest, AcknowledgedResponse> {
|
||||||
|
|
||||||
private final MetaDataIndexTemplateService indexTemplateService;
|
private final MetaDataIndexTemplateService indexTemplateService;
|
||||||
|
|
||||||
@ -55,8 +56,8 @@ public class TransportDeleteIndexTemplateAction extends TransportMasterNodeActio
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DeleteIndexTemplateResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new DeleteIndexTemplateResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -65,11 +66,11 @@ public class TransportDeleteIndexTemplateAction extends TransportMasterNodeActio
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(final DeleteIndexTemplateRequest request, final ClusterState state, final ActionListener<DeleteIndexTemplateResponse> listener) {
|
protected void masterOperation(final DeleteIndexTemplateRequest request, final ClusterState state, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
indexTemplateService.removeTemplates(new MetaDataIndexTemplateService.RemoveRequest(request.name()).masterTimeout(request.masterNodeTimeout()), new MetaDataIndexTemplateService.RemoveListener() {
|
indexTemplateService.removeTemplates(new MetaDataIndexTemplateService.RemoveRequest(request.name()).masterTimeout(request.masterNodeTimeout()), new MetaDataIndexTemplateService.RemoveListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(MetaDataIndexTemplateService.RemoveResponse response) {
|
public void onResponse(MetaDataIndexTemplateService.RemoveResponse response) {
|
||||||
listener.onResponse(new DeleteIndexTemplateResponse(response.acknowledged()));
|
listener.onResponse(new AcknowledgedResponse(response.acknowledged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,8 +20,9 @@
|
|||||||
package org.elasticsearch.action.admin.indices.template.put;
|
package org.elasticsearch.action.admin.indices.template.put;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
public class PutIndexTemplateAction extends Action<PutIndexTemplateResponse> {
|
public class PutIndexTemplateAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final PutIndexTemplateAction INSTANCE = new PutIndexTemplateAction();
|
public static final PutIndexTemplateAction INSTANCE = new PutIndexTemplateAction();
|
||||||
public static final String NAME = "indices:admin/template/put";
|
public static final String NAME = "indices:admin/template/put";
|
||||||
@ -31,7 +32,7 @@ public class PutIndexTemplateAction extends Action<PutIndexTemplateResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PutIndexTemplateResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new PutIndexTemplateResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
package org.elasticsearch.action.admin.indices.template.put;
|
package org.elasticsearch.action.admin.indices.template.put;
|
||||||
|
|
||||||
import org.elasticsearch.action.admin.indices.alias.Alias;
|
import org.elasticsearch.action.admin.indices.alias.Alias;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.MasterNodeOperationRequestBuilder;
|
import org.elasticsearch.action.support.master.MasterNodeOperationRequestBuilder;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
import org.elasticsearch.common.bytes.BytesReference;
|
import org.elasticsearch.common.bytes.BytesReference;
|
||||||
@ -31,7 +32,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class PutIndexTemplateRequestBuilder
|
public class PutIndexTemplateRequestBuilder
|
||||||
extends MasterNodeOperationRequestBuilder<PutIndexTemplateRequest, PutIndexTemplateResponse, PutIndexTemplateRequestBuilder> {
|
extends MasterNodeOperationRequestBuilder<PutIndexTemplateRequest, AcknowledgedResponse, PutIndexTemplateRequestBuilder> {
|
||||||
|
|
||||||
public PutIndexTemplateRequestBuilder(ElasticsearchClient client, PutIndexTemplateAction action) {
|
public PutIndexTemplateRequestBuilder(ElasticsearchClient client, PutIndexTemplateAction action) {
|
||||||
super(client, action, new PutIndexTemplateRequest());
|
super(client, action, new PutIndexTemplateRequest());
|
||||||
|
@ -1,39 +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.template.put;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A response for a put index template action.
|
|
||||||
*/
|
|
||||||
public class PutIndexTemplateResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
protected PutIndexTemplateResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
protected PutIndexTemplateResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static PutIndexTemplateResponse fromXContent(XContentParser parser) {
|
|
||||||
return new PutIndexTemplateResponse(parseAcknowledged(parser));
|
|
||||||
}
|
|
||||||
}
|
|
@ -21,6 +21,7 @@ package org.elasticsearch.action.admin.indices.template.put;
|
|||||||
import org.apache.logging.log4j.message.ParameterizedMessage;
|
import org.apache.logging.log4j.message.ParameterizedMessage;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.block.ClusterBlockException;
|
import org.elasticsearch.cluster.block.ClusterBlockException;
|
||||||
@ -38,7 +39,7 @@ import org.elasticsearch.transport.TransportService;
|
|||||||
/**
|
/**
|
||||||
* Put index template action.
|
* Put index template action.
|
||||||
*/
|
*/
|
||||||
public class TransportPutIndexTemplateAction extends TransportMasterNodeAction<PutIndexTemplateRequest, PutIndexTemplateResponse> {
|
public class TransportPutIndexTemplateAction extends TransportMasterNodeAction<PutIndexTemplateRequest, AcknowledgedResponse> {
|
||||||
|
|
||||||
private final MetaDataIndexTemplateService indexTemplateService;
|
private final MetaDataIndexTemplateService indexTemplateService;
|
||||||
private final IndexScopedSettings indexScopedSettings;
|
private final IndexScopedSettings indexScopedSettings;
|
||||||
@ -59,8 +60,8 @@ public class TransportPutIndexTemplateAction extends TransportMasterNodeAction<P
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PutIndexTemplateResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new PutIndexTemplateResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -69,7 +70,7 @@ public class TransportPutIndexTemplateAction extends TransportMasterNodeAction<P
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(final PutIndexTemplateRequest request, final ClusterState state, final ActionListener<PutIndexTemplateResponse> listener) {
|
protected void masterOperation(final PutIndexTemplateRequest request, final ClusterState state, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
String cause = request.cause();
|
String cause = request.cause();
|
||||||
if (cause.length() == 0) {
|
if (cause.length() == 0) {
|
||||||
cause = "api";
|
cause = "api";
|
||||||
@ -91,7 +92,7 @@ public class TransportPutIndexTemplateAction extends TransportMasterNodeAction<P
|
|||||||
new MetaDataIndexTemplateService.PutListener() {
|
new MetaDataIndexTemplateService.PutListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(MetaDataIndexTemplateService.PutResponse response) {
|
public void onResponse(MetaDataIndexTemplateService.PutResponse response) {
|
||||||
listener.onResponse(new PutIndexTemplateResponse(response.acknowledged()));
|
listener.onResponse(new AcknowledgedResponse(response.acknowledged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -25,6 +25,7 @@ import org.elasticsearch.action.PrimaryMissingActionException;
|
|||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
import org.elasticsearch.action.support.DefaultShardOperationFailedException;
|
import org.elasticsearch.action.support.DefaultShardOperationFailedException;
|
||||||
import org.elasticsearch.action.support.broadcast.node.TransportBroadcastByNodeAction;
|
import org.elasticsearch.action.support.broadcast.node.TransportBroadcastByNodeAction;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.node.NodeClient;
|
import org.elasticsearch.client.node.NodeClient;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.block.ClusterBlockException;
|
import org.elasticsearch.cluster.block.ClusterBlockException;
|
||||||
@ -205,9 +206,9 @@ public class TransportUpgradeAction extends TransportBroadcastByNodeAction<Upgra
|
|||||||
|
|
||||||
private void updateSettings(final UpgradeResponse upgradeResponse, final ActionListener<UpgradeResponse> listener) {
|
private void updateSettings(final UpgradeResponse upgradeResponse, final ActionListener<UpgradeResponse> listener) {
|
||||||
UpgradeSettingsRequest upgradeSettingsRequest = new UpgradeSettingsRequest(upgradeResponse.versions());
|
UpgradeSettingsRequest upgradeSettingsRequest = new UpgradeSettingsRequest(upgradeResponse.versions());
|
||||||
client.executeLocally(UpgradeSettingsAction.INSTANCE, upgradeSettingsRequest, new ActionListener<UpgradeSettingsResponse>() {
|
client.executeLocally(UpgradeSettingsAction.INSTANCE, upgradeSettingsRequest, new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(UpgradeSettingsResponse updateSettingsResponse) {
|
public void onResponse(AcknowledgedResponse updateSettingsResponse) {
|
||||||
listener.onResponse(upgradeResponse);
|
listener.onResponse(upgradeResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ package org.elasticsearch.action.admin.indices.upgrade.post;
|
|||||||
import org.apache.logging.log4j.message.ParameterizedMessage;
|
import org.apache.logging.log4j.message.ParameterizedMessage;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.support.ActionFilters;
|
import org.elasticsearch.action.support.ActionFilters;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
import org.elasticsearch.cluster.ack.ClusterStateUpdateResponse;
|
||||||
@ -35,7 +36,7 @@ import org.elasticsearch.common.settings.Settings;
|
|||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
||||||
public class TransportUpgradeSettingsAction extends TransportMasterNodeAction<UpgradeSettingsRequest, UpgradeSettingsResponse> {
|
public class TransportUpgradeSettingsAction extends TransportMasterNodeAction<UpgradeSettingsRequest, AcknowledgedResponse> {
|
||||||
|
|
||||||
private final MetaDataUpdateSettingsService updateSettingsService;
|
private final MetaDataUpdateSettingsService updateSettingsService;
|
||||||
|
|
||||||
@ -58,12 +59,12 @@ public class TransportUpgradeSettingsAction extends TransportMasterNodeAction<Up
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected UpgradeSettingsResponse newResponse() {
|
protected AcknowledgedResponse newResponse() {
|
||||||
return new UpgradeSettingsResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void masterOperation(final UpgradeSettingsRequest request, final ClusterState state, final ActionListener<UpgradeSettingsResponse> listener) {
|
protected void masterOperation(final UpgradeSettingsRequest request, final ClusterState state, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
UpgradeSettingsClusterStateUpdateRequest clusterStateUpdateRequest = new UpgradeSettingsClusterStateUpdateRequest()
|
UpgradeSettingsClusterStateUpdateRequest clusterStateUpdateRequest = new UpgradeSettingsClusterStateUpdateRequest()
|
||||||
.ackTimeout(request.timeout())
|
.ackTimeout(request.timeout())
|
||||||
.versions(request.versions())
|
.versions(request.versions())
|
||||||
@ -72,7 +73,7 @@ public class TransportUpgradeSettingsAction extends TransportMasterNodeAction<Up
|
|||||||
updateSettingsService.upgradeIndexSettings(clusterStateUpdateRequest, new ActionListener<ClusterStateUpdateResponse>() {
|
updateSettingsService.upgradeIndexSettings(clusterStateUpdateRequest, new ActionListener<ClusterStateUpdateResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(ClusterStateUpdateResponse response) {
|
public void onResponse(ClusterStateUpdateResponse response) {
|
||||||
listener.onResponse(new UpgradeSettingsResponse(response.isAcknowledged()));
|
listener.onResponse(new AcknowledgedResponse(response.isAcknowledged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,8 +20,9 @@
|
|||||||
package org.elasticsearch.action.admin.indices.upgrade.post;
|
package org.elasticsearch.action.admin.indices.upgrade.post;
|
||||||
|
|
||||||
import org.elasticsearch.action.Action;
|
import org.elasticsearch.action.Action;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
|
|
||||||
public class UpgradeSettingsAction extends Action<UpgradeSettingsResponse> {
|
public class UpgradeSettingsAction extends Action<AcknowledgedResponse> {
|
||||||
|
|
||||||
public static final UpgradeSettingsAction INSTANCE = new UpgradeSettingsAction();
|
public static final UpgradeSettingsAction INSTANCE = new UpgradeSettingsAction();
|
||||||
public static final String NAME = "internal:indices/admin/upgrade";
|
public static final String NAME = "internal:indices/admin/upgrade";
|
||||||
@ -31,7 +32,7 @@ public class UpgradeSettingsAction extends Action<UpgradeSettingsResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UpgradeSettingsResponse newResponse() {
|
public AcknowledgedResponse newResponse() {
|
||||||
return new UpgradeSettingsResponse();
|
return new AcknowledgedResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ package org.elasticsearch.action.admin.indices.upgrade.post;
|
|||||||
|
|
||||||
import org.elasticsearch.Version;
|
import org.elasticsearch.Version;
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
import org.elasticsearch.action.support.master.AcknowledgedRequestBuilder;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
import org.elasticsearch.common.collect.Tuple;
|
import org.elasticsearch.common.collect.Tuple;
|
||||||
|
|
||||||
@ -29,7 +30,7 @@ import java.util.Map;
|
|||||||
/**
|
/**
|
||||||
* Builder for an update index settings request
|
* Builder for an update index settings request
|
||||||
*/
|
*/
|
||||||
public class UpgradeSettingsRequestBuilder extends AcknowledgedRequestBuilder<UpgradeSettingsRequest, UpgradeSettingsResponse, UpgradeSettingsRequestBuilder> {
|
public class UpgradeSettingsRequestBuilder extends AcknowledgedRequestBuilder<UpgradeSettingsRequest, AcknowledgedResponse, UpgradeSettingsRequestBuilder> {
|
||||||
|
|
||||||
public UpgradeSettingsRequestBuilder(ElasticsearchClient client, UpgradeSettingsAction action) {
|
public UpgradeSettingsRequestBuilder(ElasticsearchClient client, UpgradeSettingsAction action) {
|
||||||
super(client, action, new UpgradeSettingsRequest());
|
super(client, action, new UpgradeSettingsRequest());
|
||||||
|
@ -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.upgrade.post;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A response for an update index settings action
|
|
||||||
*/
|
|
||||||
public class UpgradeSettingsResponse extends AcknowledgedResponse {
|
|
||||||
|
|
||||||
UpgradeSettingsResponse() {
|
|
||||||
}
|
|
||||||
|
|
||||||
UpgradeSettingsResponse(boolean acknowledged) {
|
|
||||||
super(acknowledged);
|
|
||||||
}
|
|
||||||
}
|
|
@ -98,11 +98,6 @@ public class AcknowledgedResponse extends ActionResponse implements ToXContentOb
|
|||||||
ObjectParser.ValueType.BOOLEAN);
|
ObjectParser.ValueType.BOOLEAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public static boolean parseAcknowledged(XContentParser parser) {
|
|
||||||
return ACKNOWLEDGED_FLAG_PARSER.apply(parser, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static AcknowledgedResponse fromXContent(XContentParser parser) throws IOException {
|
public static AcknowledgedResponse fromXContent(XContentParser parser) throws IOException {
|
||||||
return new AcknowledgedResponse(ACKNOWLEDGED_FLAG_PARSER.apply(parser, null));
|
return new AcknowledgedResponse(ACKNOWLEDGED_FLAG_PARSER.apply(parser, null));
|
||||||
}
|
}
|
||||||
|
@ -51,13 +51,11 @@ import org.elasticsearch.action.admin.cluster.node.usage.NodesUsageRequestBuilde
|
|||||||
import org.elasticsearch.action.admin.cluster.node.usage.NodesUsageResponse;
|
import org.elasticsearch.action.admin.cluster.node.usage.NodesUsageResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesResponse;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryResponse;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryResponse;
|
||||||
@ -75,7 +73,6 @@ import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotReq
|
|||||||
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse;
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse;
|
||||||
@ -93,13 +90,11 @@ import org.elasticsearch.action.admin.cluster.stats.ClusterStatsRequestBuilder;
|
|||||||
import org.elasticsearch.action.admin.cluster.stats.ClusterStatsResponse;
|
import org.elasticsearch.action.admin.cluster.stats.ClusterStatsResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptResponse;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptResponse;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksRequest;
|
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksResponse;
|
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksResponse;
|
||||||
@ -416,12 +411,12 @@ public interface ClusterAdminClient extends ElasticsearchClient {
|
|||||||
/**
|
/**
|
||||||
* Registers a snapshot repository.
|
* Registers a snapshot repository.
|
||||||
*/
|
*/
|
||||||
ActionFuture<PutRepositoryResponse> putRepository(PutRepositoryRequest request);
|
ActionFuture<AcknowledgedResponse> putRepository(PutRepositoryRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a snapshot repository.
|
* Registers a snapshot repository.
|
||||||
*/
|
*/
|
||||||
void putRepository(PutRepositoryRequest request, ActionListener<PutRepositoryResponse> listener);
|
void putRepository(PutRepositoryRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a snapshot repository.
|
* Registers a snapshot repository.
|
||||||
@ -431,12 +426,12 @@ public interface ClusterAdminClient extends ElasticsearchClient {
|
|||||||
/**
|
/**
|
||||||
* Unregisters a repository.
|
* Unregisters a repository.
|
||||||
*/
|
*/
|
||||||
ActionFuture<DeleteRepositoryResponse> deleteRepository(DeleteRepositoryRequest request);
|
ActionFuture<AcknowledgedResponse> deleteRepository(DeleteRepositoryRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unregisters a repository.
|
* Unregisters a repository.
|
||||||
*/
|
*/
|
||||||
void deleteRepository(DeleteRepositoryRequest request, ActionListener<DeleteRepositoryResponse> listener);
|
void deleteRepository(DeleteRepositoryRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unregisters a repository.
|
* Unregisters a repository.
|
||||||
@ -506,12 +501,12 @@ public interface ClusterAdminClient extends ElasticsearchClient {
|
|||||||
/**
|
/**
|
||||||
* Delete snapshot.
|
* Delete snapshot.
|
||||||
*/
|
*/
|
||||||
ActionFuture<DeleteSnapshotResponse> deleteSnapshot(DeleteSnapshotRequest request);
|
ActionFuture<AcknowledgedResponse> deleteSnapshot(DeleteSnapshotRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete snapshot.
|
* Delete snapshot.
|
||||||
*/
|
*/
|
||||||
void deleteSnapshot(DeleteSnapshotRequest request, ActionListener<DeleteSnapshotResponse> listener);
|
void deleteSnapshot(DeleteSnapshotRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete snapshot.
|
* Delete snapshot.
|
||||||
@ -672,12 +667,12 @@ public interface ClusterAdminClient extends ElasticsearchClient {
|
|||||||
/**
|
/**
|
||||||
* Delete a script from the cluster state
|
* Delete a script from the cluster state
|
||||||
*/
|
*/
|
||||||
void deleteStoredScript(DeleteStoredScriptRequest request, ActionListener<DeleteStoredScriptResponse> listener);
|
void deleteStoredScript(DeleteStoredScriptRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a script from the cluster state
|
* Delete a script from the cluster state
|
||||||
*/
|
*/
|
||||||
ActionFuture<DeleteStoredScriptResponse> deleteStoredScript(DeleteStoredScriptRequest request);
|
ActionFuture<AcknowledgedResponse> deleteStoredScript(DeleteStoredScriptRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a script from the cluster state
|
* Delete a script from the cluster state
|
||||||
@ -692,12 +687,12 @@ public interface ClusterAdminClient extends ElasticsearchClient {
|
|||||||
/**
|
/**
|
||||||
* Store a script in the cluster state
|
* Store a script in the cluster state
|
||||||
*/
|
*/
|
||||||
void putStoredScript(PutStoredScriptRequest request, ActionListener<PutStoredScriptResponse> listener);
|
void putStoredScript(PutStoredScriptRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store a script in the cluster state
|
* Store a script in the cluster state
|
||||||
*/
|
*/
|
||||||
ActionFuture<PutStoredScriptResponse> putStoredScript(PutStoredScriptRequest request);
|
ActionFuture<AcknowledgedResponse> putStoredScript(PutStoredScriptRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a script from the cluster state
|
* Get a script from the cluster state
|
||||||
|
@ -23,7 +23,6 @@ import org.elasticsearch.action.ActionFuture;
|
|||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequestBuilder;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.alias.exists.AliasesExistRequestBuilder;
|
import org.elasticsearch.action.admin.indices.alias.exists.AliasesExistRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.alias.exists.AliasesExistResponse;
|
import org.elasticsearch.action.admin.indices.alias.exists.AliasesExistResponse;
|
||||||
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
|
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
|
||||||
@ -37,13 +36,11 @@ import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheReque
|
|||||||
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheResponse;
|
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheResponse;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
|
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexRequestBuilder;
|
import org.elasticsearch.action.admin.indices.close.CloseIndexRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequestBuilder;
|
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
|
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequestBuilder;
|
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
|
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
|
||||||
@ -70,7 +67,6 @@ import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequestBuil
|
|||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequestBuilder;
|
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexRequestBuilder;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexResponse;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexResponse;
|
||||||
@ -91,7 +87,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.settings.get.GetSettingsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequestBuilder;
|
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoreRequestBuilder;
|
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoreRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoresRequest;
|
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoresRequest;
|
||||||
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoresResponse;
|
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoresResponse;
|
||||||
@ -103,13 +98,11 @@ import org.elasticsearch.action.admin.indices.stats.IndicesStatsRequestBuilder;
|
|||||||
import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse;
|
import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest;
|
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequestBuilder;
|
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequestBuilder;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequestBuilder;
|
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusRequest;
|
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusRequest;
|
||||||
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusRequestBuilder;
|
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusResponse;
|
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusResponse;
|
||||||
@ -119,6 +112,7 @@ 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.ValidateQueryRequest;
|
||||||
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequestBuilder;
|
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse;
|
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.common.Nullable;
|
import org.elasticsearch.common.Nullable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -281,7 +275,7 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
* @return The result future
|
* @return The result future
|
||||||
* @see org.elasticsearch.client.Requests#deleteIndexRequest(String)
|
* @see org.elasticsearch.client.Requests#deleteIndexRequest(String)
|
||||||
*/
|
*/
|
||||||
ActionFuture<DeleteIndexResponse> delete(DeleteIndexRequest request);
|
ActionFuture<AcknowledgedResponse> delete(DeleteIndexRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes an index based on the index name.
|
* Deletes an index based on the index name.
|
||||||
@ -290,7 +284,7 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
* @param listener A listener to be notified with a result
|
* @param listener A listener to be notified with a result
|
||||||
* @see org.elasticsearch.client.Requests#deleteIndexRequest(String)
|
* @see org.elasticsearch.client.Requests#deleteIndexRequest(String)
|
||||||
*/
|
*/
|
||||||
void delete(DeleteIndexRequest request, ActionListener<DeleteIndexResponse> listener);
|
void delete(DeleteIndexRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes an index based on the index name.
|
* Deletes an index based on the index name.
|
||||||
@ -306,7 +300,7 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
* @return The result future
|
* @return The result future
|
||||||
* @see org.elasticsearch.client.Requests#closeIndexRequest(String)
|
* @see org.elasticsearch.client.Requests#closeIndexRequest(String)
|
||||||
*/
|
*/
|
||||||
ActionFuture<CloseIndexResponse> close(CloseIndexRequest request);
|
ActionFuture<AcknowledgedResponse> close(CloseIndexRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Closes an index based on the index name.
|
* Closes an index based on the index name.
|
||||||
@ -315,7 +309,7 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
* @param listener A listener to be notified with a result
|
* @param listener A listener to be notified with a result
|
||||||
* @see org.elasticsearch.client.Requests#closeIndexRequest(String)
|
* @see org.elasticsearch.client.Requests#closeIndexRequest(String)
|
||||||
*/
|
*/
|
||||||
void close(CloseIndexRequest request, ActionListener<CloseIndexResponse> listener);
|
void close(CloseIndexRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Closes one or more indices based on their index name.
|
* Closes one or more indices based on their index name.
|
||||||
@ -524,7 +518,7 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
* @return A result future
|
* @return A result future
|
||||||
* @see org.elasticsearch.client.Requests#putMappingRequest(String...)
|
* @see org.elasticsearch.client.Requests#putMappingRequest(String...)
|
||||||
*/
|
*/
|
||||||
ActionFuture<PutMappingResponse> putMapping(PutMappingRequest request);
|
ActionFuture<AcknowledgedResponse> putMapping(PutMappingRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add mapping definition for a type into one or more indices.
|
* Add mapping definition for a type into one or more indices.
|
||||||
@ -533,7 +527,7 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
* @param listener A listener to be notified with a result
|
* @param listener A listener to be notified with a result
|
||||||
* @see org.elasticsearch.client.Requests#putMappingRequest(String...)
|
* @see org.elasticsearch.client.Requests#putMappingRequest(String...)
|
||||||
*/
|
*/
|
||||||
void putMapping(PutMappingRequest request, ActionListener<PutMappingResponse> listener);
|
void putMapping(PutMappingRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add mapping definition for a type into one or more indices.
|
* Add mapping definition for a type into one or more indices.
|
||||||
@ -547,7 +541,7 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
* @return The result future
|
* @return The result future
|
||||||
* @see Requests#indexAliasesRequest()
|
* @see Requests#indexAliasesRequest()
|
||||||
*/
|
*/
|
||||||
ActionFuture<IndicesAliasesResponse> aliases(IndicesAliasesRequest request);
|
ActionFuture<AcknowledgedResponse> aliases(IndicesAliasesRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows to add/remove aliases from indices.
|
* Allows to add/remove aliases from indices.
|
||||||
@ -556,7 +550,7 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
* @param listener A listener to be notified with a result
|
* @param listener A listener to be notified with a result
|
||||||
* @see Requests#indexAliasesRequest()
|
* @see Requests#indexAliasesRequest()
|
||||||
*/
|
*/
|
||||||
void aliases(IndicesAliasesRequest request, ActionListener<IndicesAliasesResponse> listener);
|
void aliases(IndicesAliasesRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows to add/remove aliases from indices.
|
* Allows to add/remove aliases from indices.
|
||||||
@ -652,7 +646,7 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
* @param request the update settings request
|
* @param request the update settings request
|
||||||
* @return The result future
|
* @return The result future
|
||||||
*/
|
*/
|
||||||
ActionFuture<UpdateSettingsResponse> updateSettings(UpdateSettingsRequest request);
|
ActionFuture<AcknowledgedResponse> updateSettings(UpdateSettingsRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates settings of one or more indices.
|
* Updates settings of one or more indices.
|
||||||
@ -660,7 +654,7 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
* @param request the update settings request
|
* @param request the update settings request
|
||||||
* @param listener A listener to be notified with the response
|
* @param listener A listener to be notified with the response
|
||||||
*/
|
*/
|
||||||
void updateSettings(UpdateSettingsRequest request, ActionListener<UpdateSettingsResponse> listener);
|
void updateSettings(UpdateSettingsRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update indices settings.
|
* Update indices settings.
|
||||||
@ -701,12 +695,12 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
/**
|
/**
|
||||||
* Puts an index template.
|
* Puts an index template.
|
||||||
*/
|
*/
|
||||||
ActionFuture<PutIndexTemplateResponse> putTemplate(PutIndexTemplateRequest request);
|
ActionFuture<AcknowledgedResponse> putTemplate(PutIndexTemplateRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Puts an index template.
|
* Puts an index template.
|
||||||
*/
|
*/
|
||||||
void putTemplate(PutIndexTemplateRequest request, ActionListener<PutIndexTemplateResponse> listener);
|
void putTemplate(PutIndexTemplateRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Puts an index template.
|
* Puts an index template.
|
||||||
@ -718,12 +712,12 @@ public interface IndicesAdminClient extends ElasticsearchClient {
|
|||||||
/**
|
/**
|
||||||
* Deletes index template.
|
* Deletes index template.
|
||||||
*/
|
*/
|
||||||
ActionFuture<DeleteIndexTemplateResponse> deleteTemplate(DeleteIndexTemplateRequest request);
|
ActionFuture<AcknowledgedResponse> deleteTemplate(DeleteIndexTemplateRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes an index template.
|
* Deletes an index template.
|
||||||
*/
|
*/
|
||||||
void deleteTemplate(DeleteIndexTemplateRequest request, ActionListener<DeleteIndexTemplateResponse> listener);
|
void deleteTemplate(DeleteIndexTemplateRequest request, ActionListener<AcknowledgedResponse> listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes an index template.
|
* Deletes an index template.
|
||||||
|
@ -65,7 +65,6 @@ import org.elasticsearch.action.admin.cluster.node.usage.NodesUsageResponse;
|
|||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryAction;
|
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryAction;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesAction;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesAction;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequestBuilder;
|
||||||
@ -73,7 +72,6 @@ import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRe
|
|||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryAction;
|
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryAction;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryAction;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryAction;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequestBuilder;
|
||||||
@ -97,7 +95,6 @@ import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotRes
|
|||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotAction;
|
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotAction;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsAction;
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsAction;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequestBuilder;
|
||||||
@ -121,7 +118,6 @@ import org.elasticsearch.action.admin.cluster.stats.ClusterStatsResponse;
|
|||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptAction;
|
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptAction;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptAction;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptAction;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequestBuilder;
|
||||||
@ -129,7 +125,6 @@ import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRespo
|
|||||||
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptAction;
|
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptAction;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksAction;
|
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksAction;
|
||||||
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksRequest;
|
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksRequestBuilder;
|
import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksRequestBuilder;
|
||||||
@ -137,7 +132,6 @@ import org.elasticsearch.action.admin.cluster.tasks.PendingClusterTasksResponse;
|
|||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesAction;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesAction;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequestBuilder;
|
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.alias.exists.AliasesExistAction;
|
import org.elasticsearch.action.admin.indices.alias.exists.AliasesExistAction;
|
||||||
import org.elasticsearch.action.admin.indices.alias.exists.AliasesExistRequestBuilder;
|
import org.elasticsearch.action.admin.indices.alias.exists.AliasesExistRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.alias.exists.AliasesExistResponse;
|
import org.elasticsearch.action.admin.indices.alias.exists.AliasesExistResponse;
|
||||||
@ -156,7 +150,6 @@ import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRespo
|
|||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexAction;
|
import org.elasticsearch.action.admin.indices.close.CloseIndexAction;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
|
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexRequestBuilder;
|
import org.elasticsearch.action.admin.indices.close.CloseIndexRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.close.CloseIndexResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexAction;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexAction;
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
|
||||||
@ -164,7 +157,6 @@ import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
|||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexAction;
|
import org.elasticsearch.action.admin.indices.delete.DeleteIndexAction;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequestBuilder;
|
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsAction;
|
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsAction;
|
||||||
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
|
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequestBuilder;
|
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequestBuilder;
|
||||||
@ -200,7 +192,6 @@ import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
|||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingAction;
|
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingAction;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequestBuilder;
|
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexAction;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexAction;
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.open.OpenIndexRequestBuilder;
|
import org.elasticsearch.action.admin.indices.open.OpenIndexRequestBuilder;
|
||||||
@ -228,7 +219,6 @@ import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
|
|||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsAction;
|
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsAction;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequestBuilder;
|
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoreRequestBuilder;
|
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoreRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoresAction;
|
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoresAction;
|
||||||
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoresRequest;
|
import org.elasticsearch.action.admin.indices.shards.IndicesShardStoresRequest;
|
||||||
@ -244,7 +234,6 @@ import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse;
|
|||||||
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateAction;
|
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateAction;
|
||||||
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest;
|
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequestBuilder;
|
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesAction;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesAction;
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequestBuilder;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequestBuilder;
|
||||||
@ -252,7 +241,6 @@ import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResp
|
|||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateAction;
|
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateAction;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequestBuilder;
|
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusAction;
|
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusAction;
|
||||||
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusRequest;
|
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusRequest;
|
||||||
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusRequestBuilder;
|
import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusRequestBuilder;
|
||||||
@ -939,12 +927,12 @@ public abstract class AbstractClient extends AbstractComponent implements Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<PutRepositoryResponse> putRepository(PutRepositoryRequest request) {
|
public ActionFuture<AcknowledgedResponse> putRepository(PutRepositoryRequest request) {
|
||||||
return execute(PutRepositoryAction.INSTANCE, request);
|
return execute(PutRepositoryAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void putRepository(PutRepositoryRequest request, ActionListener<PutRepositoryResponse> listener) {
|
public void putRepository(PutRepositoryRequest request, ActionListener<AcknowledgedResponse> listener) {
|
||||||
execute(PutRepositoryAction.INSTANCE, request, listener);
|
execute(PutRepositoryAction.INSTANCE, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -985,12 +973,12 @@ public abstract class AbstractClient extends AbstractComponent implements Client
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<DeleteSnapshotResponse> deleteSnapshot(DeleteSnapshotRequest request) {
|
public ActionFuture<AcknowledgedResponse> deleteSnapshot(DeleteSnapshotRequest request) {
|
||||||
return execute(DeleteSnapshotAction.INSTANCE, request);
|
return execute(DeleteSnapshotAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteSnapshot(DeleteSnapshotRequest request, ActionListener<DeleteSnapshotResponse> listener) {
|
public void deleteSnapshot(DeleteSnapshotRequest request, ActionListener<AcknowledgedResponse> listener) {
|
||||||
execute(DeleteSnapshotAction.INSTANCE, request, listener);
|
execute(DeleteSnapshotAction.INSTANCE, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1001,12 +989,12 @@ public abstract class AbstractClient extends AbstractComponent implements Client
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<DeleteRepositoryResponse> deleteRepository(DeleteRepositoryRequest request) {
|
public ActionFuture<AcknowledgedResponse> deleteRepository(DeleteRepositoryRequest request) {
|
||||||
return execute(DeleteRepositoryAction.INSTANCE, request);
|
return execute(DeleteRepositoryAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteRepository(DeleteRepositoryRequest request, ActionListener<DeleteRepositoryResponse> listener) {
|
public void deleteRepository(DeleteRepositoryRequest request, ActionListener<AcknowledgedResponse> listener) {
|
||||||
execute(DeleteRepositoryAction.INSTANCE, request, listener);
|
execute(DeleteRepositoryAction.INSTANCE, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1197,23 +1185,23 @@ public abstract class AbstractClient extends AbstractComponent implements Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void putStoredScript(final PutStoredScriptRequest request, ActionListener<PutStoredScriptResponse> listener){
|
public void putStoredScript(final PutStoredScriptRequest request, ActionListener<AcknowledgedResponse> listener){
|
||||||
execute(PutStoredScriptAction.INSTANCE, request, listener);
|
execute(PutStoredScriptAction.INSTANCE, request, listener);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<PutStoredScriptResponse> putStoredScript(final PutStoredScriptRequest request){
|
public ActionFuture<AcknowledgedResponse> putStoredScript(final PutStoredScriptRequest request){
|
||||||
return execute(PutStoredScriptAction.INSTANCE, request);
|
return execute(PutStoredScriptAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteStoredScript(DeleteStoredScriptRequest request, ActionListener<DeleteStoredScriptResponse> listener){
|
public void deleteStoredScript(DeleteStoredScriptRequest request, ActionListener<AcknowledgedResponse> listener){
|
||||||
execute(DeleteStoredScriptAction.INSTANCE, request, listener);
|
execute(DeleteStoredScriptAction.INSTANCE, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<DeleteStoredScriptResponse> deleteStoredScript(DeleteStoredScriptRequest request){
|
public ActionFuture<AcknowledgedResponse> deleteStoredScript(DeleteStoredScriptRequest request){
|
||||||
return execute(DeleteStoredScriptAction.INSTANCE, request);
|
return execute(DeleteStoredScriptAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1284,12 +1272,12 @@ public abstract class AbstractClient extends AbstractComponent implements Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<IndicesAliasesResponse> aliases(final IndicesAliasesRequest request) {
|
public ActionFuture<AcknowledgedResponse> aliases(final IndicesAliasesRequest request) {
|
||||||
return execute(IndicesAliasesAction.INSTANCE, request);
|
return execute(IndicesAliasesAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void aliases(final IndicesAliasesRequest request, final ActionListener<IndicesAliasesResponse> listener) {
|
public void aliases(final IndicesAliasesRequest request, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
execute(IndicesAliasesAction.INSTANCE, request, listener);
|
execute(IndicesAliasesAction.INSTANCE, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1374,12 +1362,12 @@ public abstract class AbstractClient extends AbstractComponent implements Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<DeleteIndexResponse> delete(final DeleteIndexRequest request) {
|
public ActionFuture<AcknowledgedResponse> delete(final DeleteIndexRequest request) {
|
||||||
return execute(DeleteIndexAction.INSTANCE, request);
|
return execute(DeleteIndexAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(final DeleteIndexRequest request, final ActionListener<DeleteIndexResponse> listener) {
|
public void delete(final DeleteIndexRequest request, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
execute(DeleteIndexAction.INSTANCE, request, listener);
|
execute(DeleteIndexAction.INSTANCE, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1389,12 +1377,12 @@ public abstract class AbstractClient extends AbstractComponent implements Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<CloseIndexResponse> close(final CloseIndexRequest request) {
|
public ActionFuture<AcknowledgedResponse> close(final CloseIndexRequest request) {
|
||||||
return execute(CloseIndexAction.INSTANCE, request);
|
return execute(CloseIndexAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close(final CloseIndexRequest request, final ActionListener<CloseIndexResponse> listener) {
|
public void close(final CloseIndexRequest request, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
execute(CloseIndexAction.INSTANCE, request, listener);
|
execute(CloseIndexAction.INSTANCE, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1479,12 +1467,12 @@ public abstract class AbstractClient extends AbstractComponent implements Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<PutMappingResponse> putMapping(final PutMappingRequest request) {
|
public ActionFuture<AcknowledgedResponse> putMapping(final PutMappingRequest request) {
|
||||||
return execute(PutMappingAction.INSTANCE, request);
|
return execute(PutMappingAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void putMapping(final PutMappingRequest request, final ActionListener<PutMappingResponse> listener) {
|
public void putMapping(final PutMappingRequest request, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
execute(PutMappingAction.INSTANCE, request, listener);
|
execute(PutMappingAction.INSTANCE, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1614,12 +1602,12 @@ public abstract class AbstractClient extends AbstractComponent implements Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<UpdateSettingsResponse> updateSettings(final UpdateSettingsRequest request) {
|
public ActionFuture<AcknowledgedResponse> updateSettings(final UpdateSettingsRequest request) {
|
||||||
return execute(UpdateSettingsAction.INSTANCE, request);
|
return execute(UpdateSettingsAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateSettings(final UpdateSettingsRequest request, final ActionListener<UpdateSettingsResponse> listener) {
|
public void updateSettings(final UpdateSettingsRequest request, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
execute(UpdateSettingsAction.INSTANCE, request, listener);
|
execute(UpdateSettingsAction.INSTANCE, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1654,12 +1642,12 @@ public abstract class AbstractClient extends AbstractComponent implements Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<PutIndexTemplateResponse> putTemplate(final PutIndexTemplateRequest request) {
|
public ActionFuture<AcknowledgedResponse> putTemplate(final PutIndexTemplateRequest request) {
|
||||||
return execute(PutIndexTemplateAction.INSTANCE, request);
|
return execute(PutIndexTemplateAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void putTemplate(final PutIndexTemplateRequest request, final ActionListener<PutIndexTemplateResponse> listener) {
|
public void putTemplate(final PutIndexTemplateRequest request, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
execute(PutIndexTemplateAction.INSTANCE, request, listener);
|
execute(PutIndexTemplateAction.INSTANCE, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1684,12 +1672,12 @@ public abstract class AbstractClient extends AbstractComponent implements Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionFuture<DeleteIndexTemplateResponse> deleteTemplate(final DeleteIndexTemplateRequest request) {
|
public ActionFuture<AcknowledgedResponse> deleteTemplate(final DeleteIndexTemplateRequest request) {
|
||||||
return execute(DeleteIndexTemplateAction.INSTANCE, request);
|
return execute(DeleteIndexTemplateAction.INSTANCE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteTemplate(final DeleteIndexTemplateRequest request, final ActionListener<DeleteIndexTemplateResponse> listener) {
|
public void deleteTemplate(final DeleteIndexTemplateRequest request, final ActionListener<AcknowledgedResponse> listener) {
|
||||||
execute(DeleteIndexTemplateAction.INSTANCE, request, listener);
|
execute(DeleteIndexTemplateAction.INSTANCE, request, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,9 +24,8 @@ import org.apache.logging.log4j.message.ParameterizedMessage;
|
|||||||
import org.elasticsearch.Version;
|
import org.elasticsearch.Version;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest;
|
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateResponse;
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.Client;
|
import org.elasticsearch.client.Client;
|
||||||
import org.elasticsearch.cluster.ClusterChangedEvent;
|
import org.elasticsearch.cluster.ClusterChangedEvent;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
@ -147,9 +146,9 @@ public class TemplateUpgradeService extends AbstractComponent implements Cluster
|
|||||||
PutIndexTemplateRequest request =
|
PutIndexTemplateRequest request =
|
||||||
new PutIndexTemplateRequest(change.getKey()).source(change.getValue(), XContentType.JSON);
|
new PutIndexTemplateRequest(change.getKey()).source(change.getValue(), XContentType.JSON);
|
||||||
request.masterNodeTimeout(TimeValue.timeValueMinutes(1));
|
request.masterNodeTimeout(TimeValue.timeValueMinutes(1));
|
||||||
client.admin().indices().putTemplate(request, new ActionListener<PutIndexTemplateResponse>() {
|
client.admin().indices().putTemplate(request, new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(PutIndexTemplateResponse response) {
|
public void onResponse(AcknowledgedResponse response) {
|
||||||
if (response.isAcknowledged() == false) {
|
if (response.isAcknowledged() == false) {
|
||||||
anyUpgradeFailed.set(true);
|
anyUpgradeFailed.set(true);
|
||||||
logger.warn("Error updating template [{}], request was not acknowledged", change.getKey());
|
logger.warn("Error updating template [{}], request was not acknowledged", change.getKey());
|
||||||
@ -169,9 +168,9 @@ public class TemplateUpgradeService extends AbstractComponent implements Cluster
|
|||||||
for (String template : deletions) {
|
for (String template : deletions) {
|
||||||
DeleteIndexTemplateRequest request = new DeleteIndexTemplateRequest(template);
|
DeleteIndexTemplateRequest request = new DeleteIndexTemplateRequest(template);
|
||||||
request.masterNodeTimeout(TimeValue.timeValueMinutes(1));
|
request.masterNodeTimeout(TimeValue.timeValueMinutes(1));
|
||||||
client.admin().indices().deleteTemplate(request, new ActionListener<DeleteIndexTemplateResponse>() {
|
client.admin().indices().deleteTemplate(request, new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(DeleteIndexTemplateResponse response) {
|
public void onResponse(AcknowledgedResponse response) {
|
||||||
if (response.isAcknowledged() == false) {
|
if (response.isAcknowledged() == false) {
|
||||||
anyUpgradeFailed.set(true);
|
anyUpgradeFailed.set(true);
|
||||||
logger.warn("Error deleting template [{}], request was not acknowledged", template);
|
logger.warn("Error deleting template [{}], request was not acknowledged", template);
|
||||||
|
@ -297,13 +297,13 @@ public final class ClusterSettings extends AbstractScopedSettings {
|
|||||||
TcpTransport.TCP_REUSE_ADDRESS_PROFILE,
|
TcpTransport.TCP_REUSE_ADDRESS_PROFILE,
|
||||||
TcpTransport.TCP_SEND_BUFFER_SIZE_PROFILE,
|
TcpTransport.TCP_SEND_BUFFER_SIZE_PROFILE,
|
||||||
TcpTransport.TCP_RECEIVE_BUFFER_SIZE_PROFILE,
|
TcpTransport.TCP_RECEIVE_BUFFER_SIZE_PROFILE,
|
||||||
TcpTransport.CONNECTIONS_PER_NODE_RECOVERY,
|
TransportService.CONNECTIONS_PER_NODE_RECOVERY,
|
||||||
TcpTransport.CONNECTIONS_PER_NODE_BULK,
|
TransportService.CONNECTIONS_PER_NODE_BULK,
|
||||||
TcpTransport.CONNECTIONS_PER_NODE_REG,
|
TransportService.CONNECTIONS_PER_NODE_REG,
|
||||||
TcpTransport.CONNECTIONS_PER_NODE_STATE,
|
TransportService.CONNECTIONS_PER_NODE_STATE,
|
||||||
TcpTransport.CONNECTIONS_PER_NODE_PING,
|
TransportService.CONNECTIONS_PER_NODE_PING,
|
||||||
|
TransportService.TCP_CONNECT_TIMEOUT,
|
||||||
TcpTransport.PING_SCHEDULE,
|
TcpTransport.PING_SCHEDULE,
|
||||||
TcpTransport.TCP_CONNECT_TIMEOUT,
|
|
||||||
NetworkService.NETWORK_SERVER,
|
NetworkService.NETWORK_SERVER,
|
||||||
TcpTransport.TCP_NO_DELAY,
|
TcpTransport.TCP_NO_DELAY,
|
||||||
TcpTransport.TCP_KEEP_ALIVE,
|
TcpTransport.TCP_KEEP_ALIVE,
|
||||||
|
@ -0,0 +1,166 @@
|
|||||||
|
/*
|
||||||
|
* 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.index.shard;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
import org.apache.logging.log4j.message.ParameterizedMessage;
|
||||||
|
|
||||||
|
import java.io.Closeable;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
|
import static org.elasticsearch.index.seqno.SequenceNumbers.NO_OPS_PERFORMED;
|
||||||
|
import static org.elasticsearch.index.seqno.SequenceNumbers.UNASSIGNED_SEQ_NO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a collection of global checkpoint listeners. This collection can be added to, and all listeners present at the time of an
|
||||||
|
* update will be notified together. All listeners will be notified when the shard is closed.
|
||||||
|
*/
|
||||||
|
public class GlobalCheckpointListeners implements Closeable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A global checkpoint listener consisting of a callback that is notified when the global checkpoint is updated or the shard is closed.
|
||||||
|
*/
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface GlobalCheckpointListener {
|
||||||
|
/**
|
||||||
|
* Callback when the global checkpoint is updated or the shard is closed. If the shard is closed, the value of the global checkpoint
|
||||||
|
* will be set to {@link org.elasticsearch.index.seqno.SequenceNumbers#UNASSIGNED_SEQ_NO} and the exception will be non-null. If the
|
||||||
|
* global checkpoint is updated, the exception will be null.
|
||||||
|
*
|
||||||
|
* @param globalCheckpoint the updated global checkpoint
|
||||||
|
* @param e if non-null, the shard is closed
|
||||||
|
*/
|
||||||
|
void accept(long globalCheckpoint, IndexShardClosedException e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// guarded by this
|
||||||
|
private boolean closed;
|
||||||
|
private volatile List<GlobalCheckpointListener> listeners;
|
||||||
|
private long lastKnownGlobalCheckpoint = UNASSIGNED_SEQ_NO;
|
||||||
|
|
||||||
|
private final ShardId shardId;
|
||||||
|
private final Executor executor;
|
||||||
|
private final Logger logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a global checkpoint listeners collection.
|
||||||
|
*
|
||||||
|
* @param shardId the shard ID on which global checkpoint updates can be listened to
|
||||||
|
* @param executor the executor for listener notifications
|
||||||
|
* @param logger a shard-level logger
|
||||||
|
*/
|
||||||
|
GlobalCheckpointListeners(
|
||||||
|
final ShardId shardId,
|
||||||
|
final Executor executor,
|
||||||
|
final Logger logger) {
|
||||||
|
this.shardId = Objects.requireNonNull(shardId);
|
||||||
|
this.executor = Objects.requireNonNull(executor);
|
||||||
|
this.logger = Objects.requireNonNull(logger);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a global checkpoint listener. If the global checkpoint is above the current global checkpoint known to the listener then the
|
||||||
|
* listener will be asynchronously notified on the executor used to construct this collection of global checkpoint listeners. If the
|
||||||
|
* shard is closed then the listener will be asynchronously notified on the executor used to construct this collection of global
|
||||||
|
* checkpoint listeners. The listener will only be notified of at most one event, either the global checkpoint is updated or the shard
|
||||||
|
* is closed. A listener must re-register after one of these events to receive subsequent events.
|
||||||
|
*
|
||||||
|
* @param currentGlobalCheckpoint the current global checkpoint known to the listener
|
||||||
|
* @param listener the listener
|
||||||
|
*/
|
||||||
|
synchronized void add(final long currentGlobalCheckpoint, final GlobalCheckpointListener listener) {
|
||||||
|
if (closed) {
|
||||||
|
executor.execute(() -> notifyListener(listener, UNASSIGNED_SEQ_NO, new IndexShardClosedException(shardId)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (lastKnownGlobalCheckpoint > currentGlobalCheckpoint) {
|
||||||
|
// notify directly
|
||||||
|
executor.execute(() -> notifyListener(listener, lastKnownGlobalCheckpoint, null));
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
if (listeners == null) {
|
||||||
|
listeners = new ArrayList<>();
|
||||||
|
}
|
||||||
|
listeners.add(listener);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void close() throws IOException {
|
||||||
|
closed = true;
|
||||||
|
notifyListeners(UNASSIGNED_SEQ_NO, new IndexShardClosedException(shardId));
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized int pendingListeners() {
|
||||||
|
return listeners == null ? 0 : listeners.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invoke to notify all registered listeners of an updated global checkpoint.
|
||||||
|
*
|
||||||
|
* @param globalCheckpoint the updated global checkpoint
|
||||||
|
*/
|
||||||
|
synchronized void globalCheckpointUpdated(final long globalCheckpoint) {
|
||||||
|
assert globalCheckpoint >= NO_OPS_PERFORMED;
|
||||||
|
assert globalCheckpoint > lastKnownGlobalCheckpoint
|
||||||
|
: "updated global checkpoint [" + globalCheckpoint + "]"
|
||||||
|
+ " is not more than the last known global checkpoint [" + lastKnownGlobalCheckpoint + "]";
|
||||||
|
lastKnownGlobalCheckpoint = globalCheckpoint;
|
||||||
|
notifyListeners(globalCheckpoint, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void notifyListeners(final long globalCheckpoint, final IndexShardClosedException e) {
|
||||||
|
assert Thread.holdsLock(this);
|
||||||
|
assert (globalCheckpoint == UNASSIGNED_SEQ_NO && e != null) || (globalCheckpoint >= NO_OPS_PERFORMED && e == null);
|
||||||
|
if (listeners != null) {
|
||||||
|
// capture the current listeners
|
||||||
|
final List<GlobalCheckpointListener> currentListeners = listeners;
|
||||||
|
listeners = null;
|
||||||
|
if (currentListeners != null) {
|
||||||
|
executor.execute(() -> {
|
||||||
|
for (final GlobalCheckpointListener listener : currentListeners) {
|
||||||
|
notifyListener(listener, globalCheckpoint, e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void notifyListener(final GlobalCheckpointListener listener, final long globalCheckpoint, final IndexShardClosedException e) {
|
||||||
|
try {
|
||||||
|
listener.accept(globalCheckpoint, e);
|
||||||
|
} catch (final Exception caught) {
|
||||||
|
if (globalCheckpoint != UNASSIGNED_SEQ_NO) {
|
||||||
|
logger.warn(
|
||||||
|
new ParameterizedMessage(
|
||||||
|
"error notifying global checkpoint listener of updated global checkpoint [{}]",
|
||||||
|
globalCheckpoint),
|
||||||
|
caught);
|
||||||
|
} else {
|
||||||
|
logger.warn("error notifying global checkpoint listener of closed shard", caught);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -163,6 +163,8 @@ import java.util.stream.Collectors;
|
|||||||
import java.util.stream.StreamSupport;
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
import static org.elasticsearch.index.mapper.SourceToParse.source;
|
import static org.elasticsearch.index.mapper.SourceToParse.source;
|
||||||
|
import static org.elasticsearch.index.seqno.SequenceNumbers.NO_OPS_PERFORMED;
|
||||||
|
import static org.elasticsearch.index.seqno.SequenceNumbers.UNASSIGNED_SEQ_NO;
|
||||||
|
|
||||||
public class IndexShard extends AbstractIndexShardComponent implements IndicesClusterStateService.Shard {
|
public class IndexShard extends AbstractIndexShardComponent implements IndicesClusterStateService.Shard {
|
||||||
|
|
||||||
@ -191,6 +193,7 @@ public class IndexShard extends AbstractIndexShardComponent implements IndicesCl
|
|||||||
|
|
||||||
private final SearchOperationListener searchOperationListener;
|
private final SearchOperationListener searchOperationListener;
|
||||||
|
|
||||||
|
private final GlobalCheckpointListeners globalCheckpointListeners;
|
||||||
private final ReplicationTracker replicationTracker;
|
private final ReplicationTracker replicationTracker;
|
||||||
|
|
||||||
protected volatile ShardRouting shardRouting;
|
protected volatile ShardRouting shardRouting;
|
||||||
@ -300,8 +303,10 @@ public class IndexShard extends AbstractIndexShardComponent implements IndicesCl
|
|||||||
this.checkIndexOnStartup = indexSettings.getValue(IndexSettings.INDEX_CHECK_ON_STARTUP);
|
this.checkIndexOnStartup = indexSettings.getValue(IndexSettings.INDEX_CHECK_ON_STARTUP);
|
||||||
this.translogConfig = new TranslogConfig(shardId, shardPath().resolveTranslog(), indexSettings, bigArrays);
|
this.translogConfig = new TranslogConfig(shardId, shardPath().resolveTranslog(), indexSettings, bigArrays);
|
||||||
final String aId = shardRouting.allocationId().getId();
|
final String aId = shardRouting.allocationId().getId();
|
||||||
|
this.globalCheckpointListeners = new GlobalCheckpointListeners(shardId, threadPool.executor(ThreadPool.Names.LISTENER), logger);
|
||||||
this.replicationTracker =
|
this.replicationTracker =
|
||||||
new ReplicationTracker(shardId, aId, indexSettings, SequenceNumbers.UNASSIGNED_SEQ_NO, globalCheckpoint -> {});
|
new ReplicationTracker(shardId, aId, indexSettings, UNASSIGNED_SEQ_NO, globalCheckpointListeners::globalCheckpointUpdated);
|
||||||
|
|
||||||
// the query cache is a node-level thing, however we want the most popular filters
|
// the query cache is a node-level thing, however we want the most popular filters
|
||||||
// to be computed on a per-shard basis
|
// to be computed on a per-shard basis
|
||||||
if (IndexModule.INDEX_QUERY_CACHE_EVERYTHING_SETTING.get(settings)) {
|
if (IndexModule.INDEX_QUERY_CACHE_EVERYTHING_SETTING.get(settings)) {
|
||||||
@ -671,7 +676,7 @@ public class IndexShard extends AbstractIndexShardComponent implements IndicesCl
|
|||||||
public Engine.IndexResult applyIndexOperationOnPrimary(long version, VersionType versionType, SourceToParse sourceToParse,
|
public Engine.IndexResult applyIndexOperationOnPrimary(long version, VersionType versionType, SourceToParse sourceToParse,
|
||||||
long autoGeneratedTimestamp, boolean isRetry) throws IOException {
|
long autoGeneratedTimestamp, boolean isRetry) throws IOException {
|
||||||
assert versionType.validateVersionForWrites(version);
|
assert versionType.validateVersionForWrites(version);
|
||||||
return applyIndexOperation(SequenceNumbers.UNASSIGNED_SEQ_NO, operationPrimaryTerm, version, versionType, autoGeneratedTimestamp,
|
return applyIndexOperation(UNASSIGNED_SEQ_NO, operationPrimaryTerm, version, versionType, autoGeneratedTimestamp,
|
||||||
isRetry, Engine.Operation.Origin.PRIMARY, sourceToParse);
|
isRetry, Engine.Operation.Origin.PRIMARY, sourceToParse);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -772,7 +777,7 @@ public class IndexShard extends AbstractIndexShardComponent implements IndicesCl
|
|||||||
public Engine.DeleteResult applyDeleteOperationOnPrimary(long version, String type, String id, VersionType versionType)
|
public Engine.DeleteResult applyDeleteOperationOnPrimary(long version, String type, String id, VersionType versionType)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
assert versionType.validateVersionForWrites(version);
|
assert versionType.validateVersionForWrites(version);
|
||||||
return applyDeleteOperation(SequenceNumbers.UNASSIGNED_SEQ_NO, operationPrimaryTerm, version, type, id, versionType,
|
return applyDeleteOperation(UNASSIGNED_SEQ_NO, operationPrimaryTerm, version, type, id, versionType,
|
||||||
Engine.Operation.Origin.PRIMARY);
|
Engine.Operation.Origin.PRIMARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1199,7 +1204,7 @@ public class IndexShard extends AbstractIndexShardComponent implements IndicesCl
|
|||||||
} finally {
|
} finally {
|
||||||
// playing safe here and close the engine even if the above succeeds - close can be called multiple times
|
// playing safe here and close the engine even if the above succeeds - close can be called multiple times
|
||||||
// Also closing refreshListeners to prevent us from accumulating any more listeners
|
// Also closing refreshListeners to prevent us from accumulating any more listeners
|
||||||
IOUtils.close(engine, refreshListeners);
|
IOUtils.close(engine, globalCheckpointListeners, refreshListeners);
|
||||||
indexShardOperationPermits.close();
|
indexShardOperationPermits.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1771,6 +1776,19 @@ public class IndexShard extends AbstractIndexShardComponent implements IndicesCl
|
|||||||
replicationTracker.updateGlobalCheckpointForShard(allocationId, globalCheckpoint);
|
replicationTracker.updateGlobalCheckpointForShard(allocationId, globalCheckpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a global checkpoint listener. If the global checkpoint is above the current global checkpoint known to the listener then the
|
||||||
|
* listener will fire immediately on the calling thread.
|
||||||
|
*
|
||||||
|
* @param currentGlobalCheckpoint the current global checkpoint known to the listener
|
||||||
|
* @param listener the listener
|
||||||
|
*/
|
||||||
|
public void addGlobalCheckpointListener(
|
||||||
|
final long currentGlobalCheckpoint,
|
||||||
|
final GlobalCheckpointListeners.GlobalCheckpointListener listener) {
|
||||||
|
this.globalCheckpointListeners.add(currentGlobalCheckpoint, listener);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Waits for all operations up to the provided sequence number to complete.
|
* Waits for all operations up to the provided sequence number to complete.
|
||||||
*
|
*
|
||||||
@ -2315,8 +2333,8 @@ public class IndexShard extends AbstractIndexShardComponent implements IndicesCl
|
|||||||
updateGlobalCheckpointOnReplica(globalCheckpoint, "primary term transition");
|
updateGlobalCheckpointOnReplica(globalCheckpoint, "primary term transition");
|
||||||
final long currentGlobalCheckpoint = getGlobalCheckpoint();
|
final long currentGlobalCheckpoint = getGlobalCheckpoint();
|
||||||
final long localCheckpoint;
|
final long localCheckpoint;
|
||||||
if (currentGlobalCheckpoint == SequenceNumbers.UNASSIGNED_SEQ_NO) {
|
if (currentGlobalCheckpoint == UNASSIGNED_SEQ_NO) {
|
||||||
localCheckpoint = SequenceNumbers.NO_OPS_PERFORMED;
|
localCheckpoint = NO_OPS_PERFORMED;
|
||||||
} else {
|
} else {
|
||||||
localCheckpoint = currentGlobalCheckpoint;
|
localCheckpoint = currentGlobalCheckpoint;
|
||||||
}
|
}
|
||||||
|
@ -19,14 +19,12 @@
|
|||||||
|
|
||||||
package org.elasticsearch.script;
|
package org.elasticsearch.script;
|
||||||
|
|
||||||
import org.elasticsearch.core.internal.io.IOUtils;
|
|
||||||
import org.elasticsearch.ResourceNotFoundException;
|
import org.elasticsearch.ResourceNotFoundException;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.DeleteStoredScriptResponse;
|
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptRequest;
|
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptRequest;
|
||||||
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptResponse;
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.cluster.AckedClusterStateUpdateTask;
|
import org.elasticsearch.cluster.AckedClusterStateUpdateTask;
|
||||||
import org.elasticsearch.cluster.ClusterChangedEvent;
|
import org.elasticsearch.cluster.ClusterChangedEvent;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
@ -46,6 +44,7 @@ import org.elasticsearch.common.settings.Setting;
|
|||||||
import org.elasticsearch.common.settings.Setting.Property;
|
import org.elasticsearch.common.settings.Setting.Property;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.unit.TimeValue;
|
import org.elasticsearch.common.unit.TimeValue;
|
||||||
|
import org.elasticsearch.core.internal.io.IOUtils;
|
||||||
|
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -417,7 +416,7 @@ public class ScriptService extends AbstractComponent implements Closeable, Clust
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void putStoredScript(ClusterService clusterService, PutStoredScriptRequest request,
|
public void putStoredScript(ClusterService clusterService, PutStoredScriptRequest request,
|
||||||
ActionListener<PutStoredScriptResponse> listener) {
|
ActionListener<AcknowledgedResponse> listener) {
|
||||||
int max = SCRIPT_MAX_SIZE_IN_BYTES.get(settings);
|
int max = SCRIPT_MAX_SIZE_IN_BYTES.get(settings);
|
||||||
|
|
||||||
if (request.content().length() > max) {
|
if (request.content().length() > max) {
|
||||||
@ -454,11 +453,11 @@ public class ScriptService extends AbstractComponent implements Closeable, Clust
|
|||||||
}
|
}
|
||||||
|
|
||||||
clusterService.submitStateUpdateTask("put-script-" + request.id(),
|
clusterService.submitStateUpdateTask("put-script-" + request.id(),
|
||||||
new AckedClusterStateUpdateTask<PutStoredScriptResponse>(request, listener) {
|
new AckedClusterStateUpdateTask<AcknowledgedResponse>(request, listener) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PutStoredScriptResponse newResponse(boolean acknowledged) {
|
protected AcknowledgedResponse newResponse(boolean acknowledged) {
|
||||||
return new PutStoredScriptResponse(acknowledged);
|
return new AcknowledgedResponse(acknowledged);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -473,13 +472,13 @@ public class ScriptService extends AbstractComponent implements Closeable, Clust
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void deleteStoredScript(ClusterService clusterService, DeleteStoredScriptRequest request,
|
public void deleteStoredScript(ClusterService clusterService, DeleteStoredScriptRequest request,
|
||||||
ActionListener<DeleteStoredScriptResponse> listener) {
|
ActionListener<AcknowledgedResponse> listener) {
|
||||||
clusterService.submitStateUpdateTask("delete-script-" + request.id(),
|
clusterService.submitStateUpdateTask("delete-script-" + request.id(),
|
||||||
new AckedClusterStateUpdateTask<DeleteStoredScriptResponse>(request, listener) {
|
new AckedClusterStateUpdateTask<AcknowledgedResponse>(request, listener) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DeleteStoredScriptResponse newResponse(boolean acknowledged) {
|
protected AcknowledgedResponse newResponse(boolean acknowledged) {
|
||||||
return new DeleteStoredScriptResponse(acknowledged);
|
return new AcknowledgedResponse(acknowledged);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -25,9 +25,9 @@ import org.elasticsearch.ResourceAlreadyExistsException;
|
|||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
|
|
||||||
import org.elasticsearch.action.index.IndexRequestBuilder;
|
import org.elasticsearch.action.index.IndexRequestBuilder;
|
||||||
import org.elasticsearch.action.index.IndexResponse;
|
import org.elasticsearch.action.index.IndexResponse;
|
||||||
|
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||||
import org.elasticsearch.client.Client;
|
import org.elasticsearch.client.Client;
|
||||||
import org.elasticsearch.client.Requests;
|
import org.elasticsearch.client.Requests;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
@ -113,9 +113,9 @@ public class TaskResultsService extends AbstractComponent {
|
|||||||
// The index already exists but doesn't have our mapping
|
// The index already exists but doesn't have our mapping
|
||||||
client.admin().indices().preparePutMapping(TASK_INDEX).setType(TASK_TYPE)
|
client.admin().indices().preparePutMapping(TASK_INDEX).setType(TASK_TYPE)
|
||||||
.setSource(taskResultIndexMapping(), XContentType.JSON)
|
.setSource(taskResultIndexMapping(), XContentType.JSON)
|
||||||
.execute(new ActionListener<PutMappingResponse>() {
|
.execute(new ActionListener<AcknowledgedResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(PutMappingResponse putMappingResponse) {
|
public void onResponse(AcknowledgedResponse putMappingResponse) {
|
||||||
doStoreResult(taskResult, listener);
|
doStoreResult(taskResult, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,15 +60,21 @@ public class ConnectionManager implements Closeable {
|
|||||||
private final Transport transport;
|
private final Transport transport;
|
||||||
private final ThreadPool threadPool;
|
private final ThreadPool threadPool;
|
||||||
private final TimeValue pingSchedule;
|
private final TimeValue pingSchedule;
|
||||||
|
private final ConnectionProfile defaultProfile;
|
||||||
private final Lifecycle lifecycle = new Lifecycle();
|
private final Lifecycle lifecycle = new Lifecycle();
|
||||||
private final ReadWriteLock closeLock = new ReentrantReadWriteLock();
|
private final ReadWriteLock closeLock = new ReentrantReadWriteLock();
|
||||||
private final DelegatingNodeConnectionListener connectionListener = new DelegatingNodeConnectionListener();
|
private final DelegatingNodeConnectionListener connectionListener = new DelegatingNodeConnectionListener();
|
||||||
|
|
||||||
public ConnectionManager(Settings settings, Transport transport, ThreadPool threadPool) {
|
public ConnectionManager(Settings settings, Transport transport, ThreadPool threadPool) {
|
||||||
|
this(settings, transport, threadPool, buildDefaultConnectionProfile(settings));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConnectionManager(Settings settings, Transport transport, ThreadPool threadPool, ConnectionProfile defaultProfile) {
|
||||||
this.logger = Loggers.getLogger(getClass(), settings);
|
this.logger = Loggers.getLogger(getClass(), settings);
|
||||||
this.transport = transport;
|
this.transport = transport;
|
||||||
this.threadPool = threadPool;
|
this.threadPool = threadPool;
|
||||||
this.pingSchedule = TcpTransport.PING_SCHEDULE.get(settings);
|
this.pingSchedule = TcpTransport.PING_SCHEDULE.get(settings);
|
||||||
|
this.defaultProfile = defaultProfile;
|
||||||
this.lifecycle.moveToStarted();
|
this.lifecycle.moveToStarted();
|
||||||
|
|
||||||
if (pingSchedule.millis() > 0) {
|
if (pingSchedule.millis() > 0) {
|
||||||
@ -84,6 +90,10 @@ public class ConnectionManager implements Closeable {
|
|||||||
this.connectionListener.listeners.remove(listener);
|
this.connectionListener.listeners.remove(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Transport.Connection openConnection(DiscoveryNode node, ConnectionProfile connectionProfile) {
|
||||||
|
return transport.openConnection(node, ConnectionProfile.resolveConnectionProfile(connectionProfile, defaultProfile));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connects to a node with the given connection profile. If the node is already connected this method has no effect.
|
* Connects to a node with the given connection profile. If the node is already connected this method has no effect.
|
||||||
* Once a successful is established, it can be validated before being exposed.
|
* Once a successful is established, it can be validated before being exposed.
|
||||||
@ -91,6 +101,7 @@ public class ConnectionManager implements Closeable {
|
|||||||
public void connectToNode(DiscoveryNode node, ConnectionProfile connectionProfile,
|
public void connectToNode(DiscoveryNode node, ConnectionProfile connectionProfile,
|
||||||
CheckedBiConsumer<Transport.Connection, ConnectionProfile, IOException> connectionValidator)
|
CheckedBiConsumer<Transport.Connection, ConnectionProfile, IOException> connectionValidator)
|
||||||
throws ConnectTransportException {
|
throws ConnectTransportException {
|
||||||
|
ConnectionProfile resolvedProfile = ConnectionProfile.resolveConnectionProfile(connectionProfile, defaultProfile);
|
||||||
if (node == null) {
|
if (node == null) {
|
||||||
throw new ConnectTransportException(null, "can't connect to a null node");
|
throw new ConnectTransportException(null, "can't connect to a null node");
|
||||||
}
|
}
|
||||||
@ -104,8 +115,8 @@ public class ConnectionManager implements Closeable {
|
|||||||
}
|
}
|
||||||
boolean success = false;
|
boolean success = false;
|
||||||
try {
|
try {
|
||||||
connection = transport.openConnection(node, connectionProfile);
|
connection = transport.openConnection(node, resolvedProfile);
|
||||||
connectionValidator.accept(connection, connectionProfile);
|
connectionValidator.accept(connection, resolvedProfile);
|
||||||
// we acquire a connection lock, so no way there is an existing connection
|
// we acquire a connection lock, so no way there is an existing connection
|
||||||
connectedNodes.put(node, connection);
|
connectedNodes.put(node, connection);
|
||||||
if (logger.isDebugEnabled()) {
|
if (logger.isDebugEnabled()) {
|
||||||
@ -279,4 +290,23 @@ public class ConnectionManager implements Closeable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ConnectionProfile buildDefaultConnectionProfile(Settings settings) {
|
||||||
|
int connectionsPerNodeRecovery = TransportService.CONNECTIONS_PER_NODE_RECOVERY.get(settings);
|
||||||
|
int connectionsPerNodeBulk = TransportService.CONNECTIONS_PER_NODE_BULK.get(settings);
|
||||||
|
int connectionsPerNodeReg = TransportService.CONNECTIONS_PER_NODE_REG.get(settings);
|
||||||
|
int connectionsPerNodeState = TransportService.CONNECTIONS_PER_NODE_STATE.get(settings);
|
||||||
|
int connectionsPerNodePing = TransportService.CONNECTIONS_PER_NODE_PING.get(settings);
|
||||||
|
ConnectionProfile.Builder builder = new ConnectionProfile.Builder();
|
||||||
|
builder.setConnectTimeout(TransportService.TCP_CONNECT_TIMEOUT.get(settings));
|
||||||
|
builder.setHandshakeTimeout(TransportService.TCP_CONNECT_TIMEOUT.get(settings));
|
||||||
|
builder.addConnections(connectionsPerNodeBulk, TransportRequestOptions.Type.BULK);
|
||||||
|
builder.addConnections(connectionsPerNodePing, TransportRequestOptions.Type.PING);
|
||||||
|
// if we are not master eligible we don't need a dedicated channel to publish the state
|
||||||
|
builder.addConnections(DiscoveryNode.isMasterNode(settings) ? connectionsPerNodeState : 0, TransportRequestOptions.Type.STATE);
|
||||||
|
// if we are not a data-node we don't need any dedicated channels for recovery
|
||||||
|
builder.addConnections(DiscoveryNode.isDataNode(settings) ? connectionsPerNodeRecovery : 0, TransportRequestOptions.Type.RECOVERY);
|
||||||
|
builder.addConnections(connectionsPerNodeReg, TransportRequestOptions.Type.REG);
|
||||||
|
return builder.build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ import java.util.Arrays;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
@ -61,14 +62,35 @@ public final class ConnectionProfile {
|
|||||||
private final TimeValue connectTimeout;
|
private final TimeValue connectTimeout;
|
||||||
private final TimeValue handshakeTimeout;
|
private final TimeValue handshakeTimeout;
|
||||||
|
|
||||||
private ConnectionProfile(List<ConnectionTypeHandle> handles, int numConnections, TimeValue connectTimeout, TimeValue handshakeTimeout)
|
private ConnectionProfile(List<ConnectionTypeHandle> handles, int numConnections, TimeValue connectTimeout,
|
||||||
{
|
TimeValue handshakeTimeout) {
|
||||||
this.handles = handles;
|
this.handles = handles;
|
||||||
this.numConnections = numConnections;
|
this.numConnections = numConnections;
|
||||||
this.connectTimeout = connectTimeout;
|
this.connectTimeout = connectTimeout;
|
||||||
this.handshakeTimeout = handshakeTimeout;
|
this.handshakeTimeout = handshakeTimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* takes a {@link ConnectionProfile} resolves it to a fully specified (i.e., no nulls) profile
|
||||||
|
*/
|
||||||
|
public static ConnectionProfile resolveConnectionProfile(@Nullable ConnectionProfile profile, ConnectionProfile fallbackProfile) {
|
||||||
|
Objects.requireNonNull(fallbackProfile);
|
||||||
|
if (profile == null) {
|
||||||
|
return fallbackProfile;
|
||||||
|
} else if (profile.getConnectTimeout() != null && profile.getHandshakeTimeout() != null) {
|
||||||
|
return profile;
|
||||||
|
} else {
|
||||||
|
ConnectionProfile.Builder builder = new ConnectionProfile.Builder(profile);
|
||||||
|
if (profile.getConnectTimeout() == null) {
|
||||||
|
builder.setConnectTimeout(fallbackProfile.getConnectTimeout());
|
||||||
|
}
|
||||||
|
if (profile.getHandshakeTimeout() == null) {
|
||||||
|
builder.setHandshakeTimeout(fallbackProfile.getHandshakeTimeout());
|
||||||
|
}
|
||||||
|
return builder.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A builder to build a new {@link ConnectionProfile}
|
* A builder to build a new {@link ConnectionProfile}
|
||||||
*/
|
*/
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user