spring-data-elasticsearch 4.0以上版本
使用ElasticsearchRestTemplate的时候没有使用正确姿势映射到ES,导致geo字段类型为float。度娘个遍也没有解决问题。最后在stack overflow上解决了问题,故发出我的第一篇文章,希望能够帮到他人。
//可以使用String,数组和GeoPoint类型。具体如何实现可以百度,这个可以找到很多
@GeoPointField
private GeoPoint location;
//直接save()或者create()之后没有操作geo_point就会映射失败
private void createIndex() {
AnnotatedTypeScanner scanner = new AnnotatedTypeScanner(false, Document.class);
for (Class clazz : scanner.findTypes("com.xxx.es.model")) {
Document doc = AnnotationUtils.findAnnotation(clazz, Document.class);
assert doc != null;
IndexOperations ops = elasticsearchRestTemplate.indexOps(clazz);
if (ops.exists()) ops.delete();
ops.create();
ops.refresh();
ops.putMapping(ops.createMapping());
}
}