rename create mapping to put mapping

This commit is contained in:
kimchy 2010-02-21 16:49:42 +02:00
parent 2201839091
commit 0e55c876a4
15 changed files with 207 additions and 251 deletions

View File

@ -33,7 +33,7 @@ import org.elasticsearch.action.admin.indices.flush.TransportFlushAction;
import org.elasticsearch.action.admin.indices.gateway.snapshot.TransportGatewaySnapshotAction;
import org.elasticsearch.action.admin.indices.gateway.snapshot.TransportIndexGatewaySnapshotAction;
import org.elasticsearch.action.admin.indices.gateway.snapshot.TransportShardGatewaySnapshotAction;
import org.elasticsearch.action.admin.indices.mapping.create.TransportCreateMappingAction;
import org.elasticsearch.action.admin.indices.mapping.put.TransportPutMappingAction;
import org.elasticsearch.action.admin.indices.optimize.TransportOptimizeAction;
import org.elasticsearch.action.admin.indices.refresh.TransportRefreshAction;
import org.elasticsearch.action.admin.indices.status.TransportIndicesStatusAction;
@ -67,7 +67,7 @@ public class TransportActionModule extends AbstractModule {
bind(TransportIndicesStatusAction.class).asEagerSingleton();
bind(TransportCreateIndexAction.class).asEagerSingleton();
bind(TransportCreateMappingAction.class).asEagerSingleton();
bind(TransportPutMappingAction.class).asEagerSingleton();
bind(TransportDeleteIndexAction.class).asEagerSingleton();
bind(TransportShardGatewaySnapshotAction.class).asEagerSingleton();

View File

@ -20,7 +20,7 @@
package org.elasticsearch.action;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class TransportActions {
@ -55,7 +55,7 @@ public class TransportActions {
}
public static class Mapping {
public static final String CREATE = "indices/createMapping";
public static final String PUT = "indices/mapping/put";
}
}

View File

@ -1,162 +0,0 @@
/*
* Licensed to Elastic Search and Shay Banon under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. Elastic Search 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.create;
import com.google.inject.Inject;
import org.elasticsearch.ExceptionsHelper;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.Actions;
import org.elasticsearch.action.TransportActions;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.admin.indices.create.TransportCreateIndexAction;
import org.elasticsearch.action.support.BaseAction;
import org.elasticsearch.cluster.ClusterService;
import org.elasticsearch.cluster.metadata.MetaDataService;
import org.elasticsearch.indices.IndexAlreadyExistsException;
import org.elasticsearch.threadpool.ThreadPool;
import org.elasticsearch.transport.*;
import org.elasticsearch.util.io.VoidStreamable;
import org.elasticsearch.util.settings.Settings;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
/**
* @author kimchy (Shay Banon)
*/
public class TransportCreateMappingAction extends BaseAction<CreateMappingRequest, CreateMappingResponse> {
private final TransportService transportService;
private final ClusterService clusterService;
private final MetaDataService metaDataService;
private final TransportCreateIndexAction createIndexAction;
private final ThreadPool threadPool;
private final boolean autoCreateIndex;
@Inject public TransportCreateMappingAction(Settings settings, TransportService transportService, ClusterService clusterService,
ThreadPool threadPool, MetaDataService metaDataService, TransportCreateIndexAction createIndexAction) {
super(settings);
this.transportService = transportService;
this.clusterService = clusterService;
this.threadPool = threadPool;
this.metaDataService = metaDataService;
this.createIndexAction = createIndexAction;
this.autoCreateIndex = settings.getAsBoolean("action.autoCreateIndex", true);
transportService.registerHandler(TransportActions.Admin.Indices.Mapping.CREATE, new TransportHandler());
}
@Override protected void doExecute(final CreateMappingRequest request, final ActionListener<CreateMappingResponse> listener) {
final String[] indices = Actions.processIndices(clusterService.state(), request.indices());
if (autoCreateIndex) {
final CountDownLatch latch = new CountDownLatch(indices.length);
for (String index : indices) {
if (!clusterService.state().metaData().hasIndex(index)) {
createIndexAction.execute(new CreateIndexRequest(index), new ActionListener<CreateIndexResponse>() {
@Override public void onResponse(CreateIndexResponse result) {
latch.countDown();
}
@Override public void onFailure(Throwable e) {
if (ExceptionsHelper.unwrapCause(e) instanceof IndexAlreadyExistsException) {
latch.countDown();
} else {
listener.onFailure(e);
}
}
});
} else {
latch.countDown();
}
}
try {
latch.await(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
// ignore
}
}
if (clusterService.state().nodes().localNodeMaster()) {
threadPool.execute(new Runnable() {
@Override public void run() {
try {
metaDataService.addMapping(indices, request.type(), request.mappingSource(), request.timeout());
listener.onResponse(new CreateMappingResponse());
} catch (Exception e) {
listener.onFailure(e);
}
}
});
} else {
transportService.sendRequest(clusterService.state().nodes().masterNode(), TransportActions.Admin.Indices.Mapping.CREATE, request,
new VoidTransportResponseHandler() {
@Override public void handleResponse(VoidStreamable response) {
listener.onResponse(new CreateMappingResponse());
}
@Override public void handleException(RemoteTransportException exp) {
listener.onFailure(exp);
}
});
}
}
private class TransportHandler extends BaseTransportRequestHandler<CreateMappingRequest> {
@Override public CreateMappingRequest newInstance() {
return new CreateMappingRequest();
}
@Override public void messageReceived(final CreateMappingRequest request, final TransportChannel channel) throws Exception {
String[] indices = Actions.processIndices(clusterService.state(), request.indices());
if (clusterService.state().nodes().localNodeMaster()) {
// handle the actual creation of a new index
metaDataService.addMapping(indices, request.type(), request.mappingSource(), request.timeout());
channel.sendResponse(VoidStreamable.INSTANCE);
} else {
transportService.sendRequest(clusterService.state().nodes().masterNode(), TransportActions.Admin.Indices.Mapping.CREATE, request, new VoidTransportResponseHandler() {
@Override public void handleResponse(VoidStreamable response) {
try {
channel.sendResponse(response);
} catch (IOException e) {
logger.error("Failed to send response", e);
}
}
@Override public void handleException(RemoteTransportException exp) {
try {
channel.sendResponse(exp);
} catch (IOException e) {
logger.error("Failed to send response", e);
}
}
});
}
}
}
}

View File

@ -17,13 +17,12 @@
* under the License.
*/
package org.elasticsearch.action.admin.indices.mapping.create;
package org.elasticsearch.action.admin.indices.mapping.put;
import org.elasticsearch.action.ActionRequest;
import org.elasticsearch.action.ActionRequestValidationException;
import org.elasticsearch.action.support.master.MasterNodeOperationRequest;
import org.elasticsearch.util.Required;
import org.elasticsearch.util.TimeValue;
import org.elasticsearch.util.io.Streamable;
import java.io.DataInput;
import java.io.DataOutput;
@ -36,7 +35,7 @@ import static org.elasticsearch.util.TimeValue.*;
/**
* @author kimchy (Shay Banon)
*/
public class CreateMappingRequest implements ActionRequest, Streamable {
public class PutMappingRequest extends MasterNodeOperationRequest {
private String[] indices;
@ -46,18 +45,18 @@ public class CreateMappingRequest implements ActionRequest, Streamable {
private TimeValue timeout = new TimeValue(10, TimeUnit.SECONDS);
CreateMappingRequest() {
PutMappingRequest() {
}
public CreateMappingRequest(String... indices) {
public PutMappingRequest(String... indices) {
this.indices = indices;
}
public CreateMappingRequest(String index, String mappingType, String mappingSource) {
public PutMappingRequest(String index, String mappingType, String mappingSource) {
this(new String[]{index}, mappingType, mappingSource);
}
public CreateMappingRequest(String[] indices, String mappingType, String mappingSource) {
public PutMappingRequest(String[] indices, String mappingType, String mappingSource) {
this.indices = indices;
this.mappingType = mappingType;
this.mappingSource = mappingSource;
@ -71,12 +70,7 @@ public class CreateMappingRequest implements ActionRequest, Streamable {
return validationException;
}
@Override public boolean listenerThreaded() {
// we don't really care about this...
return true;
}
@Override public CreateMappingRequest listenerThreaded(boolean threadedListener) {
@Override public PutMappingRequest listenerThreaded(boolean threadedListener) {
return this;
}
@ -92,7 +86,7 @@ public class CreateMappingRequest implements ActionRequest, Streamable {
* The type of the mappings. Not required since it can be defined explicitly within the mapping source.
* If it is not defined within the mapping source, then it is required.
*/
public CreateMappingRequest type(String mappingType) {
public PutMappingRequest type(String mappingType) {
this.mappingType = mappingType;
return this;
}
@ -101,7 +95,7 @@ public class CreateMappingRequest implements ActionRequest, Streamable {
return mappingSource;
}
@Required public CreateMappingRequest mappingSource(String mappingSource) {
@Required public PutMappingRequest mappingSource(String mappingSource) {
this.mappingSource = mappingSource;
return this;
}
@ -110,12 +104,13 @@ public class CreateMappingRequest implements ActionRequest, Streamable {
return timeout;
}
public CreateMappingRequest timeout(TimeValue timeout) {
public PutMappingRequest timeout(TimeValue timeout) {
this.timeout = timeout;
return this;
}
@Override public void readFrom(DataInput in) throws IOException, ClassNotFoundException {
super.readFrom(in);
indices = new String[in.readInt()];
for (int i = 0; i < indices.length; i++) {
indices[i] = in.readUTF();
@ -128,6 +123,7 @@ public class CreateMappingRequest implements ActionRequest, Streamable {
}
@Override public void writeTo(DataOutput out) throws IOException {
super.writeTo(out);
if (indices == null) {
out.writeInt(0);
} else {

View File

@ -17,7 +17,7 @@
* under the License.
*/
package org.elasticsearch.action.admin.indices.mapping.create;
package org.elasticsearch.action.admin.indices.mapping.put;
import org.elasticsearch.action.ActionResponse;
import org.elasticsearch.util.io.Streamable;
@ -27,9 +27,9 @@ import java.io.DataOutput;
import java.io.IOException;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class CreateMappingResponse implements ActionResponse, Streamable {
public class PutMappingResponse implements ActionResponse, Streamable {
@Override public void readFrom(DataInput in) throws IOException, ClassNotFoundException {
}

View File

@ -0,0 +1,112 @@
/*
* Licensed to Elastic Search and Shay Banon under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. Elastic Search 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 com.google.inject.Inject;
import org.elasticsearch.ElasticSearchException;
import org.elasticsearch.ExceptionsHelper;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.TransportActions;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.admin.indices.create.TransportCreateIndexAction;
import org.elasticsearch.action.support.master.TransportMasterNodeOperationAction;
import org.elasticsearch.cluster.ClusterService;
import org.elasticsearch.cluster.metadata.MetaDataService;
import org.elasticsearch.indices.IndexAlreadyExistsException;
import org.elasticsearch.threadpool.ThreadPool;
import org.elasticsearch.transport.TransportService;
import org.elasticsearch.util.settings.Settings;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import static org.elasticsearch.action.Actions.*;
/**
* @author kimchy (Shay Banon)
*/
public class TransportPutMappingAction extends TransportMasterNodeOperationAction<PutMappingRequest, PutMappingResponse> {
private final MetaDataService metaDataService;
private final TransportCreateIndexAction createIndexAction;
private final boolean autoCreateIndex;
@Inject public TransportPutMappingAction(Settings settings, TransportService transportService, ClusterService clusterService,
ThreadPool threadPool, MetaDataService metaDataService, TransportCreateIndexAction createIndexAction) {
super(settings, transportService, clusterService, threadPool);
this.metaDataService = metaDataService;
this.createIndexAction = createIndexAction;
this.autoCreateIndex = settings.getAsBoolean("action.autoCreateIndex", true);
}
@Override protected String transportAction() {
return TransportActions.Admin.Indices.Mapping.PUT;
}
@Override protected PutMappingRequest newRequest() {
return new PutMappingRequest();
}
@Override protected PutMappingResponse newResponse() {
return new PutMappingResponse();
}
@Override protected PutMappingResponse masterOperation(PutMappingRequest request) throws ElasticSearchException {
final String[] indices = processIndices(clusterService.state(), request.indices());
metaDataService.addMapping(indices, request.type(), request.mappingSource(), request.timeout());
return new PutMappingResponse();
}
@Override protected void doExecute(final PutMappingRequest request, final ActionListener<PutMappingResponse> listener) {
final String[] indices = processIndices(clusterService.state(), request.indices());
if (autoCreateIndex) {
final CountDownLatch latch = new CountDownLatch(indices.length);
for (String index : indices) {
if (!clusterService.state().metaData().hasIndex(index)) {
createIndexAction.execute(new CreateIndexRequest(index), new ActionListener<CreateIndexResponse>() {
@Override public void onResponse(CreateIndexResponse response) {
latch.countDown();
}
@Override public void onFailure(Throwable e) {
if (ExceptionsHelper.unwrapCause(e) instanceof IndexAlreadyExistsException) {
latch.countDown();
} else {
listener.onFailure(e);
}
}
});
} else {
latch.countDown();
}
}
try {
latch.await(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
// ignore
}
}
super.doExecute(request, listener);
}
}

View File

@ -21,6 +21,10 @@ package org.elasticsearch.action.support.master;
import org.elasticsearch.action.ActionRequest;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
/**
* @author kimchy (Shay Banon)
*/
@ -35,4 +39,10 @@ public abstract class MasterNodeOperationRequest implements ActionRequest {
// really, does not mean anything in this case
return this;
}
@Override public void readFrom(DataInput in) throws IOException, ClassNotFoundException {
}
@Override public void writeTo(DataOutput out) throws IOException {
}
}

View File

@ -29,8 +29,8 @@ import org.elasticsearch.action.admin.indices.flush.FlushRequest;
import org.elasticsearch.action.admin.indices.flush.FlushResponse;
import org.elasticsearch.action.admin.indices.gateway.snapshot.GatewaySnapshotRequest;
import org.elasticsearch.action.admin.indices.gateway.snapshot.GatewaySnapshotResponse;
import org.elasticsearch.action.admin.indices.mapping.create.CreateMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.create.CreateMappingResponse;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
import org.elasticsearch.action.admin.indices.optimize.OptimizeRequest;
import org.elasticsearch.action.admin.indices.optimize.OptimizeResponse;
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
@ -41,7 +41,7 @@ import org.elasticsearch.action.admin.indices.status.IndicesStatusResponse;
/**
* Administrative actions/operations against indices.
*
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
* @see AdminClient#indices()
*/
public interface IndicesAdminClient {
@ -219,9 +219,9 @@ public interface IndicesAdminClient {
*
* @param request The create mapping request
* @return A result future
* @see org.elasticsearch.client.Requests#createMappingRequest(String...)
* @see org.elasticsearch.client.Requests#putMappingRequest(String...)
*/
ActionFuture<CreateMappingResponse> createMapping(CreateMappingRequest request);
ActionFuture<PutMappingResponse> putMapping(PutMappingRequest request);
/**
* Add mapping definition for a type into one or more indices.
@ -229,18 +229,18 @@ public interface IndicesAdminClient {
* @param request The create mapping request
* @param listener A listener to be notified with a result
* @return A result future
* @see org.elasticsearch.client.Requests#createMappingRequest(String...)
* @see org.elasticsearch.client.Requests#putMappingRequest(String...)
*/
ActionFuture<CreateMappingResponse> createMapping(CreateMappingRequest request, ActionListener<CreateMappingResponse> listener);
ActionFuture<PutMappingResponse> putMapping(PutMappingRequest request, ActionListener<PutMappingResponse> listener);
/**
* Add mapping definition for a type into one or more indices.
*
* @param request The create mapping request
* @param listener A listener to be notified with a result
* @see org.elasticsearch.client.Requests#createMappingRequest(String...)
* @see org.elasticsearch.client.Requests#putMappingRequest(String...)
*/
void execCreateMapping(CreateMappingRequest request, ActionListener<CreateMappingResponse> listener);
void execPutMapping(PutMappingRequest request, ActionListener<PutMappingResponse> listener);
/**
* Explicitly perform gateway snapshot for one or more indices.

View File

@ -28,7 +28,7 @@ import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.admin.indices.flush.FlushRequest;
import org.elasticsearch.action.admin.indices.gateway.snapshot.GatewaySnapshotRequest;
import org.elasticsearch.action.admin.indices.mapping.create.CreateMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
import org.elasticsearch.action.admin.indices.optimize.OptimizeRequest;
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
import org.elasticsearch.action.admin.indices.status.IndicesStatusRequest;
@ -173,10 +173,10 @@ public class Requests {
*
* @param indices The indices the delete by query against. Use <tt>null</tt> or <tt>_all</tt> to execute against all indices
* @return The create mapping request
* @see org.elasticsearch.client.IndicesAdminClient#createMapping(org.elasticsearch.action.admin.indices.mapping.create.CreateMappingRequest)
* @see org.elasticsearch.client.IndicesAdminClient#putMapping(org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest)
*/
public static CreateMappingRequest createMappingRequest(String... indices) {
return new CreateMappingRequest(indices);
public static PutMappingRequest putMappingRequest(String... indices) {
return new PutMappingRequest(indices);
}
/**

View File

@ -34,9 +34,9 @@ import org.elasticsearch.action.admin.indices.flush.TransportFlushAction;
import org.elasticsearch.action.admin.indices.gateway.snapshot.GatewaySnapshotRequest;
import org.elasticsearch.action.admin.indices.gateway.snapshot.GatewaySnapshotResponse;
import org.elasticsearch.action.admin.indices.gateway.snapshot.TransportGatewaySnapshotAction;
import org.elasticsearch.action.admin.indices.mapping.create.CreateMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.create.CreateMappingResponse;
import org.elasticsearch.action.admin.indices.mapping.create.TransportCreateMappingAction;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
import org.elasticsearch.action.admin.indices.mapping.put.TransportPutMappingAction;
import org.elasticsearch.action.admin.indices.optimize.OptimizeRequest;
import org.elasticsearch.action.admin.indices.optimize.OptimizeResponse;
import org.elasticsearch.action.admin.indices.optimize.TransportOptimizeAction;
@ -67,14 +67,14 @@ public class ServerIndicesAdminClient extends AbstractComponent implements Indic
private final TransportOptimizeAction optimizeAction;
private final TransportCreateMappingAction createMappingAction;
private final TransportPutMappingAction putMappingAction;
private final TransportGatewaySnapshotAction gatewaySnapshotAction;
@Inject public ServerIndicesAdminClient(Settings settings, TransportIndicesStatusAction indicesStatusAction,
TransportCreateIndexAction createIndexAction, TransportDeleteIndexAction deleteIndexAction,
TransportRefreshAction refreshAction, TransportFlushAction flushAction, TransportOptimizeAction optimizeAction,
TransportCreateMappingAction createMappingAction, TransportGatewaySnapshotAction gatewaySnapshotAction) {
TransportPutMappingAction putMappingAction, TransportGatewaySnapshotAction gatewaySnapshotAction) {
super(settings);
this.indicesStatusAction = indicesStatusAction;
this.createIndexAction = createIndexAction;
@ -82,7 +82,7 @@ public class ServerIndicesAdminClient extends AbstractComponent implements Indic
this.refreshAction = refreshAction;
this.flushAction = flushAction;
this.optimizeAction = optimizeAction;
this.createMappingAction = createMappingAction;
this.putMappingAction = putMappingAction;
this.gatewaySnapshotAction = gatewaySnapshotAction;
}
@ -158,16 +158,16 @@ public class ServerIndicesAdminClient extends AbstractComponent implements Indic
optimizeAction.execute(request, listener);
}
@Override public ActionFuture<CreateMappingResponse> createMapping(CreateMappingRequest request) {
return createMappingAction.submit(request);
@Override public ActionFuture<PutMappingResponse> putMapping(PutMappingRequest request) {
return putMappingAction.submit(request);
}
@Override public ActionFuture<CreateMappingResponse> createMapping(CreateMappingRequest request, ActionListener<CreateMappingResponse> listener) {
return createMapping(request, listener);
@Override public ActionFuture<PutMappingResponse> putMapping(PutMappingRequest request, ActionListener<PutMappingResponse> listener) {
return putMapping(request, listener);
}
@Override public void execCreateMapping(CreateMappingRequest request, ActionListener<CreateMappingResponse> listener) {
createMappingAction.execute(request, listener);
@Override public void execPutMapping(PutMappingRequest request, ActionListener<PutMappingResponse> listener) {
putMappingAction.execute(request, listener);
}
@Override public ActionFuture<GatewaySnapshotResponse> gatewaySnapshot(GatewaySnapshotRequest request) {

View File

@ -29,7 +29,7 @@ import org.elasticsearch.client.transport.action.admin.indices.create.ClientTran
import org.elasticsearch.client.transport.action.admin.indices.delete.ClientTransportDeleteIndexAction;
import org.elasticsearch.client.transport.action.admin.indices.flush.ClientTransportFlushAction;
import org.elasticsearch.client.transport.action.admin.indices.gateway.snapshot.ClientTransportGatewaySnapshotAction;
import org.elasticsearch.client.transport.action.admin.indices.mapping.create.ClientTransportCreateMappingAction;
import org.elasticsearch.client.transport.action.admin.indices.mapping.create.ClientTransportPutMappingAction;
import org.elasticsearch.client.transport.action.admin.indices.optimize.ClientTransportOptimizeAction;
import org.elasticsearch.client.transport.action.admin.indices.refresh.ClientTransportRefreshAction;
import org.elasticsearch.client.transport.action.admin.indices.status.ClientTransportIndicesStatusAction;
@ -63,7 +63,7 @@ public class ClientTransportActionModule extends AbstractModule {
bind(ClientTransportOptimizeAction.class).asEagerSingleton();
bind(ClientTransportCreateIndexAction.class).asEagerSingleton();
bind(ClientTransportDeleteIndexAction.class).asEagerSingleton();
bind(ClientTransportCreateMappingAction.class).asEagerSingleton();
bind(ClientTransportPutMappingAction.class).asEagerSingleton();
bind(ClientTransportGatewaySnapshotAction.class).asEagerSingleton();
bind(ClientTransportNodesInfoAction.class).asEagerSingleton();
bind(ClientTransportSinglePingAction.class).asEagerSingleton();

View File

@ -21,22 +21,22 @@ package org.elasticsearch.client.transport.action.admin.indices.mapping.create;
import com.google.inject.Inject;
import org.elasticsearch.action.TransportActions;
import org.elasticsearch.action.admin.indices.mapping.create.CreateMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.create.CreateMappingResponse;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
import org.elasticsearch.client.transport.action.support.BaseClientTransportAction;
import org.elasticsearch.transport.TransportService;
import org.elasticsearch.util.settings.Settings;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class ClientTransportCreateMappingAction extends BaseClientTransportAction<CreateMappingRequest, CreateMappingResponse> {
public class ClientTransportPutMappingAction extends BaseClientTransportAction<PutMappingRequest, PutMappingResponse> {
@Inject public ClientTransportCreateMappingAction(Settings settings, TransportService transportService) {
super(settings, transportService, CreateMappingResponse.class);
@Inject public ClientTransportPutMappingAction(Settings settings, TransportService transportService) {
super(settings, transportService, PutMappingResponse.class);
}
@Override protected String action() {
return TransportActions.Admin.Indices.Mapping.CREATE;
return TransportActions.Admin.Indices.Mapping.PUT;
}
}

View File

@ -31,8 +31,8 @@ import org.elasticsearch.action.admin.indices.flush.FlushRequest;
import org.elasticsearch.action.admin.indices.flush.FlushResponse;
import org.elasticsearch.action.admin.indices.gateway.snapshot.GatewaySnapshotRequest;
import org.elasticsearch.action.admin.indices.gateway.snapshot.GatewaySnapshotResponse;
import org.elasticsearch.action.admin.indices.mapping.create.CreateMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.create.CreateMappingResponse;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
import org.elasticsearch.action.admin.indices.optimize.OptimizeRequest;
import org.elasticsearch.action.admin.indices.optimize.OptimizeResponse;
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
@ -45,7 +45,7 @@ import org.elasticsearch.client.transport.action.admin.indices.create.ClientTran
import org.elasticsearch.client.transport.action.admin.indices.delete.ClientTransportDeleteIndexAction;
import org.elasticsearch.client.transport.action.admin.indices.flush.ClientTransportFlushAction;
import org.elasticsearch.client.transport.action.admin.indices.gateway.snapshot.ClientTransportGatewaySnapshotAction;
import org.elasticsearch.client.transport.action.admin.indices.mapping.create.ClientTransportCreateMappingAction;
import org.elasticsearch.client.transport.action.admin.indices.mapping.create.ClientTransportPutMappingAction;
import org.elasticsearch.client.transport.action.admin.indices.optimize.ClientTransportOptimizeAction;
import org.elasticsearch.client.transport.action.admin.indices.refresh.ClientTransportRefreshAction;
import org.elasticsearch.client.transport.action.admin.indices.status.ClientTransportIndicesStatusAction;
@ -54,7 +54,7 @@ import org.elasticsearch.util.component.AbstractComponent;
import org.elasticsearch.util.settings.Settings;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class InternalTransportIndicesAdminClient extends AbstractComponent implements IndicesAdminClient {
@ -72,7 +72,7 @@ public class InternalTransportIndicesAdminClient extends AbstractComponent imple
private final ClientTransportOptimizeAction optimizeAction;
private final ClientTransportCreateMappingAction createMappingAction;
private final ClientTransportPutMappingAction putMappingAction;
private final ClientTransportGatewaySnapshotAction gatewaySnapshotAction;
@ -80,7 +80,7 @@ public class InternalTransportIndicesAdminClient extends AbstractComponent imple
ClientTransportIndicesStatusAction indicesStatusAction,
ClientTransportCreateIndexAction createIndexAction, ClientTransportDeleteIndexAction deleteIndexAction,
ClientTransportRefreshAction refreshAction, ClientTransportFlushAction flushAction, ClientTransportOptimizeAction optimizeAction,
ClientTransportCreateMappingAction createMappingAction, ClientTransportGatewaySnapshotAction gatewaySnapshotAction) {
ClientTransportPutMappingAction putMappingAction, ClientTransportGatewaySnapshotAction gatewaySnapshotAction) {
super(settings);
this.nodesService = nodesService;
this.indicesStatusAction = indicesStatusAction;
@ -89,7 +89,7 @@ public class InternalTransportIndicesAdminClient extends AbstractComponent imple
this.refreshAction = refreshAction;
this.flushAction = flushAction;
this.optimizeAction = optimizeAction;
this.createMappingAction = createMappingAction;
this.putMappingAction = putMappingAction;
this.gatewaySnapshotAction = gatewaySnapshotAction;
}
@ -243,26 +243,26 @@ public class InternalTransportIndicesAdminClient extends AbstractComponent imple
});
}
@Override public ActionFuture<CreateMappingResponse> createMapping(final CreateMappingRequest request) {
return nodesService.execute(new TransportClientNodesService.NodeCallback<ActionFuture<CreateMappingResponse>>() {
@Override public ActionFuture<CreateMappingResponse> doWithNode(Node node) throws ElasticSearchException {
return createMappingAction.submit(node, request);
@Override public ActionFuture<PutMappingResponse> putMapping(final PutMappingRequest request) {
return nodesService.execute(new TransportClientNodesService.NodeCallback<ActionFuture<PutMappingResponse>>() {
@Override public ActionFuture<PutMappingResponse> doWithNode(Node node) throws ElasticSearchException {
return putMappingAction.submit(node, request);
}
});
}
@Override public ActionFuture<CreateMappingResponse> createMapping(final CreateMappingRequest request, final ActionListener<CreateMappingResponse> listener) {
return nodesService.execute(new TransportClientNodesService.NodeCallback<ActionFuture<CreateMappingResponse>>() {
@Override public ActionFuture<CreateMappingResponse> doWithNode(Node node) throws ElasticSearchException {
return createMappingAction.submit(node, request, listener);
@Override public ActionFuture<PutMappingResponse> putMapping(final PutMappingRequest request, final ActionListener<PutMappingResponse> listener) {
return nodesService.execute(new TransportClientNodesService.NodeCallback<ActionFuture<PutMappingResponse>>() {
@Override public ActionFuture<PutMappingResponse> doWithNode(Node node) throws ElasticSearchException {
return putMappingAction.submit(node, request, listener);
}
});
}
@Override public void execCreateMapping(final CreateMappingRequest request, final ActionListener<CreateMappingResponse> listener) {
@Override public void execPutMapping(final PutMappingRequest request, final ActionListener<PutMappingResponse> listener) {
nodesService.execute(new TransportClientNodesService.NodeCallback<Void>() {
@Override public Void doWithNode(Node node) throws ElasticSearchException {
createMappingAction.execute(node, request, listener);
putMappingAction.execute(node, request, listener);
return null;
}
});

View File

@ -29,7 +29,7 @@ import org.elasticsearch.rest.action.admin.indices.create.RestCreateIndexAction;
import org.elasticsearch.rest.action.admin.indices.delete.RestDeleteIndexAction;
import org.elasticsearch.rest.action.admin.indices.flush.RestFlushAction;
import org.elasticsearch.rest.action.admin.indices.gateway.snapshot.RestGatewaySnapshotAction;
import org.elasticsearch.rest.action.admin.indices.mapping.create.RestCreateMappingAction;
import org.elasticsearch.rest.action.admin.indices.mapping.put.RestPutMappingAction;
import org.elasticsearch.rest.action.admin.indices.optimize.RestOptimizeAction;
import org.elasticsearch.rest.action.admin.indices.refresh.RestRefreshAction;
import org.elasticsearch.rest.action.admin.indices.status.RestIndicesStatusAction;
@ -61,7 +61,7 @@ public class RestActionModule extends AbstractModule {
bind(RestCreateIndexAction.class).asEagerSingleton();
bind(RestDeleteIndexAction.class).asEagerSingleton();
bind(RestCreateMappingAction.class).asEagerSingleton();
bind(RestPutMappingAction.class).asEagerSingleton();
bind(RestGatewaySnapshotAction.class).asEagerSingleton();

View File

@ -17,12 +17,12 @@
* under the License.
*/
package org.elasticsearch.rest.action.admin.indices.mapping.create;
package org.elasticsearch.rest.action.admin.indices.mapping.put;
import com.google.inject.Inject;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.admin.indices.mapping.create.CreateMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.create.CreateMappingResponse;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.index.mapper.InvalidTypeNameException;
import org.elasticsearch.indices.IndexMissingException;
@ -41,23 +41,23 @@ import static org.elasticsearch.rest.action.support.RestActions.*;
import static org.elasticsearch.util.TimeValue.*;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class RestCreateMappingAction extends BaseRestHandler {
public class RestPutMappingAction extends BaseRestHandler {
@Inject public RestCreateMappingAction(Settings settings, Client client, RestController controller) {
@Inject public RestPutMappingAction(Settings settings, Client client, RestController controller) {
super(settings, client);
controller.registerHandler(PUT, "/{index}/_mapping", this);
controller.registerHandler(PUT, "/{index}/{type}/_mapping", this);
}
@Override public void handleRequest(final RestRequest request, final RestChannel channel) {
CreateMappingRequest createMappingRequest = createMappingRequest(splitIndices(request.param("index")));
createMappingRequest.type(request.param("type"));
createMappingRequest.mappingSource(request.contentAsString());
createMappingRequest.timeout(request.paramAsTime("timeout", timeValueSeconds(10)));
client.admin().indices().execCreateMapping(createMappingRequest, new ActionListener<CreateMappingResponse>() {
@Override public void onResponse(CreateMappingResponse result) {
PutMappingRequest putMappingRequest = putMappingRequest(splitIndices(request.param("index")));
putMappingRequest.type(request.param("type"));
putMappingRequest.mappingSource(request.contentAsString());
putMappingRequest.timeout(request.paramAsTime("timeout", timeValueSeconds(10)));
client.admin().indices().execPutMapping(putMappingRequest, new ActionListener<PutMappingResponse>() {
@Override public void onResponse(PutMappingResponse result) {
try {
JsonBuilder builder = RestJsonBuilder.cached(request);
builder.startObject()