From a3faa87fd4617acf575a6d016919bb3f46728e89 Mon Sep 17 00:00:00 2001 From: Bogdan Pintea Date: Mon, 17 Apr 2023 17:17:14 +0200 Subject: [PATCH] Add utility method to parse an IP to BytesRef (#95291) This adds a QL utility method that parses an IP address into a BytesRef object. --- .../java/org/elasticsearch/xpack/ql/util/StringUtils.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/util/StringUtils.java b/x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/util/StringUtils.java index 5f067aca76827..fb1094fc17b62 100644 --- a/x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/util/StringUtils.java +++ b/x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/util/StringUtils.java @@ -6,9 +6,12 @@ */ package org.elasticsearch.xpack.ql.util; +import org.apache.lucene.document.InetAddressPoint; import org.apache.lucene.search.spell.LevenshteinDistance; +import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.CollectionUtil; import org.elasticsearch.common.Strings; +import org.elasticsearch.common.network.InetAddresses; import org.elasticsearch.core.Tuple; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.xcontent.ToXContent; @@ -322,6 +325,11 @@ public static Number parseIntegral(String string) throws QlIllegalArgumentExcept } } + public static BytesRef parseIP(String string) { + var inetAddress = InetAddresses.forString(string); + return new BytesRef(InetAddressPoint.encode(inetAddress)); + } + public static String ordinal(int i) { return switch (i % 100) { case 11, 12, 13 -> i + "th";