diff --git a/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java index 608041a4dcd35..15a7a1c22c1ab 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java @@ -22,6 +22,7 @@ import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.network.InetAddresses; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.core.Nullable; import org.elasticsearch.core.Tuple; import org.elasticsearch.index.fielddata.IndexFieldData; @@ -443,34 +444,28 @@ protected String contentType() { @Override protected void parseCreateField(DocumentParserContext context) throws IOException { - Object addressAsObject = context.parser().textOrNull(); - - if (addressAsObject == null) { - addressAsObject = nullValue; - } - - if (addressAsObject == null) { - return; - } - - String addressAsString = addressAsObject.toString(); InetAddress address; - if (addressAsObject instanceof InetAddress) { - address = (InetAddress) addressAsObject; - } else { - try { - address = InetAddresses.forString(addressAsString); - } catch (IllegalArgumentException e) { - if (ignoreMalformed) { - context.addIgnoredField(fieldType().name()); - return; - } else { - throw e; - } + try { + address = value(context.parser(), nullValue); + } catch (IllegalArgumentException e) { + if (ignoreMalformed) { + context.addIgnoredField(fieldType().name()); + return; + } else { + throw e; } } + if (address != null) { + indexValue(context, address); + } + } - indexValue(context, address); + private static InetAddress value(XContentParser parser, InetAddress nullValue) throws IOException { + String value = parser.textOrNull(); + if (value == null) { + return nullValue; + } + return InetAddresses.forString(value); } private void indexValue(DocumentParserContext context, InetAddress address) { @@ -507,5 +502,4 @@ protected void indexScriptValues(SearchLookup searchLookup, LeafReaderContext re public FieldMapper.Builder getMergeBuilder() { return new Builder(simpleName(), scriptCompiler, ignoreMalformedByDefault, indexCreatedVersion).dimension(dimension).init(this); } - }