Deprecate `_type` in simulate pipeline requests (#37949)

As mapping types are being removed throughout Elasticsearch, the use of
`_type` in pipeline simulation requests is deprecated. Additionally, the
default `_type` used if one is not supplied has been changed to `_doc` for
consistency with the rest of Elasticsearch.
This commit is contained in:
Gordon Brown 2019-02-04 16:11:44 -07:00 committed by GitHub
parent b866417650
commit 292e0f6fb7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 67 additions and 27 deletions

View File

@ -130,7 +130,6 @@ public class IngestClientIT extends ESRestHighLevelClientTestCase {
{
builder.startObject()
.field("_index", "index")
.field("_type", "doc")
.field("_id", "doc_" + 1)
.startObject("_source").field("foo", "rab_" + 1).field("rank", rankValue).endObject()
.endObject();

View File

@ -296,8 +296,8 @@ public class IngestClientDocumentationIT extends ESRestHighLevelClientTestCase {
"\"processors\":[{\"set\":{\"field\":\"field2\",\"value\":\"_value\"}}]" +
"}," +
"\"docs\":[" +
"{\"_index\":\"index\",\"_type\":\"_doc\",\"_id\":\"id\",\"_source\":{\"foo\":\"bar\"}}," +
"{\"_index\":\"index\",\"_type\":\"_doc\",\"_id\":\"id\",\"_source\":{\"foo\":\"rab\"}}" +
"{\"_index\":\"index\",\"_id\":\"id\",\"_source\":{\"foo\":\"bar\"}}," +
"{\"_index\":\"index\",\"_id\":\"id\",\"_source\":{\"foo\":\"rab\"}}" +
"]" +
"}";
SimulatePipelineRequest request = new SimulatePipelineRequest(
@ -353,8 +353,8 @@ public class IngestClientDocumentationIT extends ESRestHighLevelClientTestCase {
"\"processors\":[{\"set\":{\"field\":\"field2\",\"value\":\"_value\"}}]" +
"}," +
"\"docs\":[" +
"{\"_index\":\"index\",\"_type\":\"_doc\",\"_id\":\"id\",\"_source\":{\"foo\":\"bar\"}}," +
"{\"_index\":\"index\",\"_type\":\"_doc\",\"_id\":\"id\",\"_source\":{\"foo\":\"rab\"}}" +
"{\"_index\":\"index\",\"_id\":\"id\",\"_source\":{\"foo\":\"bar\"}}," +
"{\"_index\":\"index\",\"_id\":\"id\",\"_source\":{\"foo\":\"rab\"}}" +
"]" +
"}";
SimulatePipelineRequest request = new SimulatePipelineRequest(

View File

@ -65,7 +65,6 @@ POST _ingest/pipeline/_simulate
"docs": [
{
"_index": "index",
"_type": "_doc",
"_id": "id",
"_source": {
"foo": "bar"
@ -73,7 +72,6 @@ POST _ingest/pipeline/_simulate
},
{
"_index": "index",
"_type": "_doc",
"_id": "id",
"_source": {
"foo": "rab"
@ -158,7 +156,6 @@ POST _ingest/pipeline/_simulate?verbose
"docs": [
{
"_index": "index",
"_type": "_doc",
"_id": "id",
"_source": {
"foo": "bar"
@ -166,7 +163,6 @@ POST _ingest/pipeline/_simulate?verbose
},
{
"_index": "index",
"_type": "_doc",
"_id": "id",
"_source": {
"foo": "rab"

View File

@ -112,7 +112,7 @@ and the result:
"doc" : {
"_id" : "_id",
"_index" : "<myindex-{2016-04-25||/M{yyyy-MM-dd|UTC}}>",
"_type" : "_type",
"_type" : "_doc",
"_source" : {
"date1" : "2016-04-25T12:02:01.789Z"
},

View File

@ -193,7 +193,7 @@ response:
"docs": [
{
"doc": {
"_type": "_type",
"_type": "_doc",
"_index": "_index",
"_id": "_id",
"_source": {
@ -254,7 +254,7 @@ POST _ingest/pipeline/_simulate
"docs": [
{
"doc": {
"_type": "_type",
"_type": "_doc",
"_index": "_index",
"_id": "_id",
"_source": {

View File

@ -19,11 +19,14 @@
package org.elasticsearch.action.ingest;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.elasticsearch.action.ActionRequest;
import org.elasticsearch.action.ActionRequestValidationException;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.logging.DeprecationLogger;
import org.elasticsearch.common.xcontent.ToXContentObject;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentType;
@ -43,6 +46,9 @@ import java.util.Objects;
public class SimulatePipelineRequest extends ActionRequest implements ToXContentObject {
private static final Logger logger = LogManager.getLogger(SimulatePipelineRequest.class);
private static final DeprecationLogger deprecationLogger = new DeprecationLogger(logger);
private String id;
private boolean verbose;
private BytesReference source;
@ -178,8 +184,12 @@ public class SimulatePipelineRequest extends ActionRequest implements ToXContent
dataMap, Fields.SOURCE);
String index = ConfigurationUtils.readStringOrIntProperty(null, null,
dataMap, MetaData.INDEX.getFieldName(), "_index");
if (dataMap.containsKey(MetaData.TYPE.getFieldName())) {
deprecationLogger.deprecatedAndMaybeLog("simulate_pipeline_with_types",
"[types removal] specifying _type in pipeline simulation requests is deprecated");
}
String type = ConfigurationUtils.readStringOrIntProperty(null, null,
dataMap, MetaData.TYPE.getFieldName(), "_type");
dataMap, MetaData.TYPE.getFieldName(), "_doc");
String id = ConfigurationUtils.readStringOrIntProperty(null, null,
dataMap, MetaData.ID.getFieldName(), "_id");
String routing = ConfigurationUtils.readOptionalStringOrIntProperty(null, null,

View File

@ -19,15 +19,6 @@
package org.elasticsearch.action.ingest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.elasticsearch.index.VersionType;
import org.elasticsearch.ingest.CompoundProcessor;
import org.elasticsearch.ingest.IngestDocument;
@ -38,6 +29,15 @@ import org.elasticsearch.ingest.TestProcessor;
import org.elasticsearch.test.ESTestCase;
import org.junit.Before;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import static org.elasticsearch.action.ingest.SimulatePipelineRequest.Fields;
import static org.elasticsearch.action.ingest.SimulatePipelineRequest.SIMULATED_PIPELINE_ID;
import static org.elasticsearch.ingest.IngestDocument.MetaData.ID;
@ -67,7 +67,15 @@ public class SimulatePipelineRequestParsingTests extends ESTestCase {
when(ingestService.getProcessorFactories()).thenReturn(registry);
}
public void testParseUsingPipelineStore() throws Exception {
public void testParseUsingPipelineStoreNoType() throws Exception {
innerTestParseUsingPipelineStore(false);
}
public void testParseUsingPipelineStoreWithType() throws Exception {
innerTestParseUsingPipelineStore(true);
}
private void innerTestParseUsingPipelineStore(boolean useExplicitType) throws Exception {
int numDocs = randomIntBetween(1, 10);
Map<String, Object> requestContent = new HashMap<>();
@ -80,7 +88,9 @@ public class SimulatePipelineRequestParsingTests extends ESTestCase {
String type = randomAlphaOfLengthBetween(1, 10);
String id = randomAlphaOfLengthBetween(1, 10);
doc.put(INDEX.getFieldName(), index);
doc.put(TYPE.getFieldName(), type);
if (useExplicitType) {
doc.put(TYPE.getFieldName(), type);
}
doc.put(ID.getFieldName(), id);
String fieldName = randomAlphaOfLengthBetween(1, 10);
String fieldValue = randomAlphaOfLengthBetween(1, 10);
@ -88,7 +98,11 @@ public class SimulatePipelineRequestParsingTests extends ESTestCase {
docs.add(doc);
Map<String, Object> expectedDoc = new HashMap<>();
expectedDoc.put(INDEX.getFieldName(), index);
expectedDoc.put(TYPE.getFieldName(), type);
if (useExplicitType) {
expectedDoc.put(TYPE.getFieldName(), type);
} else {
expectedDoc.put(TYPE.getFieldName(), "_doc");
}
expectedDoc.put(ID.getFieldName(), id);
expectedDoc.put(Fields.SOURCE, Collections.singletonMap(fieldName, fieldValue));
expectedDocs.add(expectedDoc);
@ -111,9 +125,20 @@ public class SimulatePipelineRequestParsingTests extends ESTestCase {
assertThat(actualRequest.getPipeline().getId(), equalTo(SIMULATED_PIPELINE_ID));
assertThat(actualRequest.getPipeline().getDescription(), nullValue());
assertThat(actualRequest.getPipeline().getProcessors().size(), equalTo(1));
if (useExplicitType) {
assertWarnings("[types removal] specifying _type in pipeline simulation requests is deprecated");
}
}
public void testParseWithProvidedPipeline() throws Exception {
public void testParseWithProvidedPipelineNoType() throws Exception {
innerTestParseWithProvidedPipeline(false);
}
public void testParseWithProvidedPipelineWithType() throws Exception {
innerTestParseWithProvidedPipeline(true);
}
private void innerTestParseWithProvidedPipeline(boolean useExplicitType) throws Exception {
int numDocs = randomIntBetween(1, 10);
Map<String, Object> requestContent = new HashMap<>();
@ -135,6 +160,14 @@ public class SimulatePipelineRequestParsingTests extends ESTestCase {
);
doc.put(field.getFieldName(), value);
expectedDoc.put(field.getFieldName(), value);
} else if (field == TYPE) {
if (useExplicitType) {
String value = randomAlphaOfLengthBetween(1, 10);
doc.put(field.getFieldName(), value);
expectedDoc.put(field.getFieldName(), value);
} else {
expectedDoc.put(field.getFieldName(), "_doc");
}
} else {
if (randomBoolean()) {
String value = randomAlphaOfLengthBetween(1, 10);
@ -191,7 +224,6 @@ public class SimulatePipelineRequestParsingTests extends ESTestCase {
Map<String, Object> expectedDocument = expectedDocsIterator.next();
Map<IngestDocument.MetaData, Object> metadataMap = ingestDocument.extractMetadata();
assertThat(metadataMap.get(INDEX), equalTo(expectedDocument.get(INDEX.getFieldName())));
assertThat(metadataMap.get(TYPE), equalTo(expectedDocument.get(TYPE.getFieldName())));
assertThat(metadataMap.get(ID), equalTo(expectedDocument.get(ID.getFieldName())));
assertThat(metadataMap.get(ROUTING), equalTo(expectedDocument.get(ROUTING.getFieldName())));
assertThat(metadataMap.get(VERSION), equalTo(expectedDocument.get(VERSION.getFieldName())));
@ -202,6 +234,9 @@ public class SimulatePipelineRequestParsingTests extends ESTestCase {
assertThat(actualRequest.getPipeline().getId(), equalTo(SIMULATED_PIPELINE_ID));
assertThat(actualRequest.getPipeline().getDescription(), nullValue());
assertThat(actualRequest.getPipeline().getProcessors().size(), equalTo(numProcessors));
if (useExplicitType) {
assertWarnings("[types removal] specifying _type in pipeline simulation requests is deprecated");
}
}
public void testNullPipelineId() {