mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-18 19:05:06 +00:00
Parse query from deleteByQuery request body
This commit is contained in:
parent
6d307a3cfd
commit
3c9e69e15f
@ -26,7 +26,11 @@ import org.elasticsearch.client.Client;
|
|||||||
import org.elasticsearch.common.Strings;
|
import org.elasticsearch.common.Strings;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||||
|
import org.elasticsearch.common.xcontent.XContentParser;
|
||||||
import org.elasticsearch.index.query.QueryBuilder;
|
import org.elasticsearch.index.query.QueryBuilder;
|
||||||
|
import org.elasticsearch.index.query.QueryParseContext;
|
||||||
|
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
|
||||||
import org.elasticsearch.rest.BaseRestHandler;
|
import org.elasticsearch.rest.BaseRestHandler;
|
||||||
import org.elasticsearch.rest.RestChannel;
|
import org.elasticsearch.rest.RestChannel;
|
||||||
import org.elasticsearch.rest.RestController;
|
import org.elasticsearch.rest.RestController;
|
||||||
@ -34,6 +38,8 @@ import org.elasticsearch.rest.RestRequest;
|
|||||||
import org.elasticsearch.rest.action.support.RestActions;
|
import org.elasticsearch.rest.action.support.RestActions;
|
||||||
import org.elasticsearch.rest.action.support.RestToXContentListener;
|
import org.elasticsearch.rest.action.support.RestToXContentListener;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
import static org.elasticsearch.action.deletebyquery.DeleteByQueryAction.INSTANCE;
|
import static org.elasticsearch.action.deletebyquery.DeleteByQueryAction.INSTANCE;
|
||||||
import static org.elasticsearch.rest.RestRequest.Method.DELETE;
|
import static org.elasticsearch.rest.RestRequest.Method.DELETE;
|
||||||
|
|
||||||
@ -42,15 +48,19 @@ import static org.elasticsearch.rest.RestRequest.Method.DELETE;
|
|||||||
*/
|
*/
|
||||||
public class RestDeleteByQueryAction extends BaseRestHandler {
|
public class RestDeleteByQueryAction extends BaseRestHandler {
|
||||||
|
|
||||||
|
private IndicesQueriesRegistry indicesQueriesRegistry;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public RestDeleteByQueryAction(Settings settings, RestController controller, Client client) {
|
public RestDeleteByQueryAction(Settings settings, RestController controller, Client client,
|
||||||
|
IndicesQueriesRegistry indicesQueriesRegistry) {
|
||||||
super(settings, controller, client);
|
super(settings, controller, client);
|
||||||
|
this.indicesQueriesRegistry = indicesQueriesRegistry;
|
||||||
controller.registerHandler(DELETE, "/{index}/_query", this);
|
controller.registerHandler(DELETE, "/{index}/_query", this);
|
||||||
controller.registerHandler(DELETE, "/{index}/{type}/_query", this);
|
controller.registerHandler(DELETE, "/{index}/{type}/_query", this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleRequest(final RestRequest request, final RestChannel channel, final Client client) {
|
public void handleRequest(final RestRequest request, final RestChannel channel, final Client client) throws IOException {
|
||||||
DeleteByQueryRequest delete = new DeleteByQueryRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
DeleteByQueryRequest delete = new DeleteByQueryRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||||
delete.indicesOptions(IndicesOptions.fromRequest(request, delete.indicesOptions()));
|
delete.indicesOptions(IndicesOptions.fromRequest(request, delete.indicesOptions()));
|
||||||
delete.routing(request.param("routing"));
|
delete.routing(request.param("routing"));
|
||||||
@ -58,11 +68,19 @@ public class RestDeleteByQueryAction extends BaseRestHandler {
|
|||||||
delete.timeout(request.paramAsTime("timeout", null));
|
delete.timeout(request.paramAsTime("timeout", null));
|
||||||
}
|
}
|
||||||
if (request.hasContent()) {
|
if (request.hasContent()) {
|
||||||
// delete.source(request.content()); NORELEASE parse request.content() into a queryBuilder
|
XContentParser requestParser = XContentFactory.xContent(request.content()).createParser(request.content());
|
||||||
|
QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
|
||||||
|
context.reset(requestParser);
|
||||||
|
final QueryBuilder<?> builder = context.parseInnerQueryBuilder();
|
||||||
|
delete.query(builder);
|
||||||
} else {
|
} else {
|
||||||
String source = request.param("source");
|
String source = request.param("source");
|
||||||
if (source != null) {
|
if (source != null) {
|
||||||
// delete.source(source); NORELEASE parse source into a queryBuilder
|
XContentParser requestParser = XContentFactory.xContent(source).createParser(source);
|
||||||
|
QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
|
||||||
|
context.reset(requestParser);
|
||||||
|
final QueryBuilder<?> builder = context.parseInnerQueryBuilder();
|
||||||
|
delete.query(builder);
|
||||||
} else {
|
} else {
|
||||||
QueryBuilder<?> queryBuilder = RestActions.parseQuerySource(request);
|
QueryBuilder<?> queryBuilder = RestActions.parseQuerySource(request);
|
||||||
if (queryBuilder != null) {
|
if (queryBuilder != null) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user