Skip to content

Commit 6a06bbf

Browse files
dandonovscakonczak
authored andcommitted
DATAES-172 - Added support for "geohash_prefix" and "geohash_precision" on GeoPointField annotation
1 parent c2f13c3 commit 6a06bbf

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/main/java/org/springframework/data/elasticsearch/annotations/GeoPointField.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,8 @@
2525
@Documented
2626
public @interface GeoPointField {
2727

28+
boolean geoHashPrefix() default false;
29+
30+
String geoHashPrecision() default "0";
31+
2832
}

src/main/java/org/springframework/data/elasticsearch/core/MappingBuilder.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.List;
2626
import java.util.Map;
2727

28+
import org.elasticsearch.common.lang3.StringUtils;
2829
import org.elasticsearch.common.xcontent.XContentBuilder;
2930
import org.springframework.core.GenericCollectionTypeResolver;
3031
import org.springframework.data.annotation.Transient;
@@ -65,6 +66,8 @@ class MappingBuilder {
6566
public static final String TYPE_VALUE_STRING = "string";
6667
public static final String TYPE_VALUE_GEO_POINT = "geo_point";
6768
public static final String TYPE_VALUE_COMPLETION = "completion";
69+
public static final String TYPE_VALUE_GEO_HASH_PREFIX = "geohash_prefix" ;
70+
public static final String TYPE_VALUE_GEO_HASH_PRECISION = "geohash_precision";
6871

6972
private static SimpleTypeHolder SIMPLE_TYPE_HOLDER = new SimpleTypeHolder();
7073

@@ -169,8 +172,18 @@ private static boolean isAnnotated(java.lang.reflect.Field field) {
169172

170173
private static void applyGeoPointFieldMapping(XContentBuilder xContentBuilder, java.lang.reflect.Field field) throws IOException {
171174
xContentBuilder.startObject(field.getName());
172-
xContentBuilder.field(FIELD_TYPE, TYPE_VALUE_GEO_POINT)
173-
.endObject();
175+
xContentBuilder.field(FIELD_TYPE, TYPE_VALUE_GEO_POINT);
176+
177+
GeoPointField annotation = field.getAnnotation(GeoPointField.class);
178+
if (annotation != null) {
179+
if (annotation.geoHashPrefix())
180+
xContentBuilder.field(TYPE_VALUE_GEO_HASH_PREFIX, true);
181+
182+
if (StringUtils.isNotEmpty(annotation.geoHashPrecision()))
183+
xContentBuilder.field(TYPE_VALUE_GEO_HASH_PRECISION, annotation.geoHashPrecision());
184+
}
185+
186+
xContentBuilder.endObject();
174187
}
175188

176189
private static void applyCompletionFieldMapping(XContentBuilder xContentBuilder, java.lang.reflect.Field field, CompletionField annotation) throws IOException {

0 commit comments

Comments
 (0)