spring-data-elasticsearch 创建geo_point 类型不生效

最近在用spring-data-elasticsearch 在做距离应用时创建geo_point
类型时发现有时候会不生效(注意是有时候不生效,不知道是哪里影响的,很妖),正常情况下type 应该是geo_point,但是有时候创建出来的是一个嵌套类型,包含两个double属性的type
实体类加了注解如下

@GeoPointField
private GeoPoint shipperPoint;

 创建出来的正确类型如下图:
 ![图片说明](https://img-ask.csdn.net/upload/201507/14/1436879872_437791.png)

创建出来的错误类型如下图:
图片说明
不知道是什么原因导致的geo_point 类型不生效?
求大神指导?

参考http://es.xiaoleilu.com/310_Geopoints/20_Geopoints.html

地理坐标点不能被动态映射(dynamic mapping)自动检测,而是需要显式声明对应字段类型为 geo_point
先进行声明

PUT http://localhost:9200/my_index
{
"mappings": {
"my_type": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
然后实体映射就没有问题了

图片说明 这是正确类型

java model 属性如何定义为geo_point, 为什么我无法引入@GeoPointField,缺包吗?

请问lz是怎么解决的?我也出现了同样的问题。原因大概找到了:entity上的索引名称indexName是死的,而我需要动态的指定。当索引建好后,那个死的索引geo_point类型是正确的,而动态指定indexName的索引property类型确实错误的double(这种情况是查找不出来结果的)。就结果来说,和你的问题是一样的,请问这个是怎么解决的?

使用索引模板功能
PUT http://IP:9200/_template/模板名_template?pretty

{
    "template": "索引匹配_*",
    "settings": {
        "number_of_shards": 10,
        "number_of_replicas": 1
    },
    "mappings": {
        "base": {
            "properties": {
                "location": {
                   "type": "geo_point"
                }
            }
        }
    },
    "aliases": {
        "别名": {}
    }
}