我不能在 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
}
...
我有密码
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
}
...