diff --git a/server/src/main/java/org/elasticsearch/action/ingest/SimulatePipelineRequest.java b/server/src/main/java/org/elasticsearch/action/ingest/SimulatePipelineRequest.java index a5818bdb0f4ec..88b7e2f38b78c 100644 --- a/server/src/main/java/org/elasticsearch/action/ingest/SimulatePipelineRequest.java +++ b/server/src/main/java/org/elasticsearch/action/ingest/SimulatePipelineRequest.java @@ -186,7 +186,13 @@ private static List parseDocs(Map config) { dataMap, Metadata.ROUTING.getFieldName()); Long version = null; if (dataMap.containsKey(Metadata.VERSION.getFieldName())) { - version = (Long) ConfigurationUtils.readObject(null, null, dataMap, Metadata.VERSION.getFieldName()); + String versionValue = ConfigurationUtils.readOptionalStringOrIntProperty(null, null, + dataMap, Metadata.VERSION.getFieldName()); + if (versionValue != null) { + version = Long.valueOf(versionValue); + } else { + throw new IllegalArgumentException("[_version] cannot be null"); + } } VersionType versionType = null; if (dataMap.containsKey(Metadata.VERSION_TYPE.getFieldName())) { @@ -196,12 +202,24 @@ private static List parseDocs(Map config) { IngestDocument ingestDocument = new IngestDocument(index, id, routing, version, versionType, document); if (dataMap.containsKey(Metadata.IF_SEQ_NO.getFieldName())) { - Long ifSeqNo = (Long) ConfigurationUtils.readObject(null, null, dataMap, Metadata.IF_SEQ_NO.getFieldName()); - ingestDocument.setFieldValue(Metadata.IF_SEQ_NO.getFieldName(), ifSeqNo); + String ifSeqNoValue = ConfigurationUtils.readOptionalStringOrIntProperty(null, null, + dataMap, Metadata.IF_SEQ_NO.getFieldName()); + if (ifSeqNoValue != null) { + Long ifSeqNo = Long.valueOf(ifSeqNoValue); + ingestDocument.setFieldValue(Metadata.IF_SEQ_NO.getFieldName(), ifSeqNo); + } else { + throw new IllegalArgumentException("[_if_seq_no] cannot be null"); + } } if (dataMap.containsKey(Metadata.IF_PRIMARY_TERM.getFieldName())) { - Long ifPrimaryTerm = (Long) ConfigurationUtils.readObject(null, null, dataMap, Metadata.IF_PRIMARY_TERM.getFieldName()); - ingestDocument.setFieldValue(Metadata.IF_PRIMARY_TERM.getFieldName(), ifPrimaryTerm); + String ifPrimaryTermValue = ConfigurationUtils.readOptionalStringOrIntProperty(null, null, + dataMap, Metadata.IF_PRIMARY_TERM.getFieldName()); + if (ifPrimaryTermValue != null) { + Long ifPrimaryTerm = Long.valueOf(ifPrimaryTermValue); + ingestDocument.setFieldValue(Metadata.IF_PRIMARY_TERM.getFieldName(), ifPrimaryTerm); + } else { + throw new IllegalArgumentException("[_if_primary_term] cannot be null"); + } } ingestDocumentList.add(ingestDocument); } diff --git a/server/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineRequestParsingTests.java b/server/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineRequestParsingTests.java index d02db6be0cd2f..75ff449f6882c 100644 --- a/server/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineRequestParsingTests.java +++ b/server/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineRequestParsingTests.java @@ -124,20 +124,12 @@ public void innerTestParseWithProvidedPipeline() throws Exception { Map expectedDoc = new HashMap<>(); List fields = Arrays.asList(INDEX, ID, ROUTING, VERSION, VERSION_TYPE, IF_SEQ_NO, IF_PRIMARY_TERM); for(IngestDocument.Metadata field : fields) { - if (field == VERSION) { - Long value = randomLong(); - doc.put(field.getFieldName(), value); - expectedDoc.put(field.getFieldName(), value); - } else if (field == VERSION_TYPE) { + if (field == VERSION_TYPE) { String value = VersionType.toString( randomFrom(VersionType.INTERNAL, VersionType.EXTERNAL, VersionType.EXTERNAL_GTE) ); doc.put(field.getFieldName(), value); expectedDoc.put(field.getFieldName(), value); - } else if (field == IF_SEQ_NO || field == IF_PRIMARY_TERM) { - Long value = randomNonNegativeLong(); - doc.put(field.getFieldName(), value); - expectedDoc.put(field.getFieldName(), value); } else { if (randomBoolean()) { String value = randomAlphaOfLengthBetween(1, 10);