自定义映射 Spring 数据 ElasticSearch

Custom Mapping Spring Data ElasticSearch

我想使用目前为止与 spring-data-es 配合良好的弹性搜索形状查询。问题是从我的 java 应用程序创建索引时,自动映射如下所示:

 "shape" : {
    "properties" : {
       "coordinates" : {
          "type" : "double"
       },
       "type" : {
          "type" : "string"
       }
    }
}

所以当我需要这个时,它只是将我所有的坐标索引为双数组:

"shape": {
  "type": "geo_shape",
  "tree": "quadtree",
  "precision": "5m"
}

所以。如何实现自定义映射?有一个名为 @GeoPointField 的注解可以创建 GeoPoint 映射。那个看起来并不复杂,所以我自己实现它应该不是什么大问题,但我找不到注释的实现,所以我有点卡住了。也可以使用:ElasticSearchTemplate.putMapping(indexName, type, mapping) 但我找不到将什么放入映射作为其类型对象。

我 运行 前一段时间遇到了完全相同的问题,问题是 Spring Data ES(截至 2016 年 5 月 11 日)不支持地理形状。从 DATAES-169 中可以看出,这个问题还没有引起太大的关注。

出于这个原因,我有 forked the official spring-data-elasticsearch 个存储库并决定自己实现它。

我已经让它适用于多边形和圆形,但我还没有推送我的代码。我打算在推送和提交 PR 之前支持所有形状。敬请期待...