diff options
author | Adis Nezirović <nezirus@gmail.com> | 2017-06-13 23:20:01 +0200 |
---|---|---|
committer | Tal Levy <JubBoy333@gmail.com> | 2017-06-13 14:20:01 -0700 |
commit | 82897e263698a4350aebc25710fd7708db9c2252 (patch) | |
tree | 62d75f9d662c1dbcaf7db3fdf9f65698eb335a78 | |
parent | d181761aebbfa8c3cde5b233d3e43536d5310f76 (diff) |
Port support for commercial GeoIP2 databases from Logstash. (#24889)
* Port support for commercial GeoIP2 databases from Logstash.
* Match GeoIP databases according to the database name suffix.
* Rename CITY/COUNTRY_DB_TYPE, since they are suffixes now.
-rw-r--r-- | plugins/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/GeoIpProcessor.java | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/plugins/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/GeoIpProcessor.java b/plugins/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/GeoIpProcessor.java index 2cbaa7a3bb..f358d07025 100644 --- a/plugins/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/GeoIpProcessor.java +++ b/plugins/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/GeoIpProcessor.java @@ -57,8 +57,8 @@ import static org.elasticsearch.ingest.ConfigurationUtils.readStringProperty; public final class GeoIpProcessor extends AbstractProcessor { public static final String TYPE = "geoip"; - private static final String CITY_DB_TYPE = "GeoLite2-City"; - private static final String COUNTRY_DB_TYPE = "GeoLite2-Country"; + private static final String CITY_DB_SUFFIX = "-City"; + private static final String COUNTRY_DB_SUFFIX = "-Country"; private final String field; private final String targetField; @@ -93,24 +93,23 @@ public final class GeoIpProcessor extends AbstractProcessor { final InetAddress ipAddress = InetAddresses.forString(ip); Map<String, Object> geoData; - switch (dbReader.getMetadata().getDatabaseType()) { - case CITY_DB_TYPE: - try { - geoData = retrieveCityGeoData(ipAddress); - } catch (AddressNotFoundRuntimeException e) { - geoData = Collections.emptyMap(); - } - break; - case COUNTRY_DB_TYPE: - try { - geoData = retrieveCountryGeoData(ipAddress); - } catch (AddressNotFoundRuntimeException e) { - geoData = Collections.emptyMap(); - } - break; - default: - throw new ElasticsearchParseException("Unsupported database type [" + dbReader.getMetadata().getDatabaseType() - + "]", new IllegalStateException()); + String databaseType = dbReader.getMetadata().getDatabaseType(); + + if (databaseType.endsWith(CITY_DB_SUFFIX)) { + try { + geoData = retrieveCityGeoData(ipAddress); + } catch (AddressNotFoundRuntimeException e) { + geoData = Collections.emptyMap(); + } + } else if (databaseType.endsWith(COUNTRY_DB_SUFFIX)) { + try { + geoData = retrieveCountryGeoData(ipAddress); + } catch (AddressNotFoundRuntimeException e) { + geoData = Collections.emptyMap(); + } + } else { + throw new ElasticsearchParseException("Unsupported database type [" + dbReader.getMetadata().getDatabaseType() + + "]", new IllegalStateException()); } if (geoData.isEmpty() == false) { ingestDocument.setFieldValue(targetField, geoData); @@ -299,9 +298,9 @@ public final class GeoIpProcessor extends AbstractProcessor { } } } else { - if (CITY_DB_TYPE.equals(databaseType)) { + if (databaseType.endsWith(CITY_DB_SUFFIX)) { properties = DEFAULT_CITY_PROPERTIES; - } else if (COUNTRY_DB_TYPE.equals(databaseType)) { + } else if (databaseType.endsWith(COUNTRY_DB_SUFFIX)) { properties = DEFAULT_COUNTRY_PROPERTIES; } else { throw newConfigurationException(TYPE, processorTag, "database_file", "Unsupported database type [" @@ -340,9 +339,9 @@ public final class GeoIpProcessor extends AbstractProcessor { public static Property parseProperty(String databaseType, String value) { Set<Property> validProperties = EnumSet.noneOf(Property.class); - if (CITY_DB_TYPE.equals(databaseType)) { + if (databaseType.endsWith(CITY_DB_SUFFIX)) { validProperties = ALL_CITY_PROPERTIES; - } else if (COUNTRY_DB_TYPE.equals(databaseType)) { + } else if (databaseType.endsWith(COUNTRY_DB_SUFFIX)) { validProperties = ALL_COUNTRY_PROPERTIES; } |