从数据库导入时,我遇到了与elasticsearch< geo_point 相关的问题。 如果 lon 或 lat 字段的值包含实际值,则我的映射效果很好。
现在可能会发生某些行包含 lon / lat 的空值,如果我尝试导入这些行,我会得到 ElasticsearchParseException [纬度必须是数字] 错误,这似乎是合法的。
所以我想将这些字段设置为 0,0或NULL,NULL ,但这是我卡住的地方。
我尝试添加' null_value' => ' 0' 到映射,但似乎不起作用。
这是映射的样子:
'_source' => array(
'enabled' => true
),
'properties' => array(
'coordinates' => array(
'type' => 'geo_point',
'null_value' => '0'
)
)
有人意识到这一点吗?
(我正在使用PHP Elasticsearch客户端。)
答案 0 :(得分:0)
找到一个对我来说没问题的解决方案,但无法解决实际问题。
在我的数据库查询中,我使用Posgresql中的COALESCE将null转换为0,这类似于mysql中的IFNULL。
答案 1 :(得分:0)
首先,这是文档结构的问题,而不是空值。
如果您的字段coordinates
的映射类型为geo_point
,则必须使用{..., coordinates: null}
而不是{..., coordinates: {lat: null, lon: null}}
或类似的equivalent formats插入文档。整个字段必须丢失,而不是内部数据。