我不能在 elasticsearch 中放置一个等于 null 的地理点

I can't put a geopoint equal to null in elasticsearch

我有密码

 if(row.get("LATITUDE") != null && row.get("LONGITUDE") != null) {
            result.put("geoPoint", ImportUtils.getGeoPoint(row));}

 public static Map<String, Object> getGeoPoint(Map<String, Object> s) {
        Map<String, Object> r = new HashMap<>();
        BigDecimal lat = (BigDecimal) s.get("LATITUDE");
        BigDecimal lon = (BigDecimal) s.get("LONGITUDE");

        r.put("lat", lat.doubleValue());//широта -90/90
        r.put("lon", lon.doubleValue());//долгота -180/180
        return r;
    }

问题是,如果我这样做,有些对象没有geopoint字段,但是如果我把null或者把经度和纬度作为null,就会出现映射错误。

如果 geopoint 为 null,我希望它是这样的

"geopoint": {}, 
//or as a last resort
"geopoint" : null

映射

   },
        "geoPoint": {
          "type": "geo_point"

          }

我尝试了 null_value: null,但由于某种原因它没有用 我怎样才能达到我需要的结果?

使用 ignore_malformed 更新您的映射:

...
{
 "type" : "geo_point",
 "ignore_malformed" : true
}
...