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() builder.startObject()
.field("_index", "index") .field("_index", "index")
.field("_type", "doc")
.field("_id", "doc_" + 1) .field("_id", "doc_" + 1)
.startObject("_source").field("foo", "rab_" + 1).field("rank", rankValue).endObject() .startObject("_source").field("foo", "rab_" + 1).field("rank", rankValue).endObject()
.endObject(); .endObject();

View File

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

View File

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

View File

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

View File

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

View File

@ -19,11 +19,14 @@
package org.elasticsearch.action.ingest; 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.ActionRequest;
import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionRequestValidationException;
import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.logging.DeprecationLogger;
import org.elasticsearch.common.xcontent.ToXContentObject; import org.elasticsearch.common.xcontent.ToXContentObject;
import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.common.xcontent.XContentType;
@ -43,6 +46,9 @@ import java.util.Objects;
public class SimulatePipelineRequest extends ActionRequest implements ToXContentObject { 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 String id;
private boolean verbose; private boolean verbose;
private BytesReference source; private BytesReference source;
@ -178,8 +184,12 @@ public class SimulatePipelineRequest extends ActionRequest implements ToXContent
dataMap, Fields.SOURCE); dataMap, Fields.SOURCE);
String index = ConfigurationUtils.readStringOrIntProperty(null, null, String index = ConfigurationUtils.readStringOrIntProperty(null, null,
dataMap, MetaData.INDEX.getFieldName(), "_index"); 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, String type = ConfigurationUtils.readStringOrIntProperty(null, null,
dataMap, MetaData.TYPE.getFieldName(), "_type"); dataMap, MetaData.TYPE.getFieldName(), "_doc");
String id = ConfigurationUtils.readStringOrIntProperty(null, null, String id = ConfigurationUtils.readStringOrIntProperty(null, null,
dataMap, MetaData.ID.getFieldName(), "_id"); dataMap, MetaData.ID.getFieldName(), "_id");
String routing = ConfigurationUtils.readOptionalStringOrIntProperty(null, null, String routing = ConfigurationUtils.readOptionalStringOrIntProperty(null, null,

View File

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