具有null_value的geo_point的elasticsearch映射

时间:2014-05-20 09:48:32

标签: elasticsearch null mapping geospatial

从数据库导入时,我遇到了与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客户端。)

2 个答案:

答案 0 :(得分:0)

找到一个对我来说没问题的解决方案,但无法解决实际问题。

在我的数据库查询中,我使用Posgresql中的COALESCE将null转换为0,这类似于mysql中的IFNULL。

答案 1 :(得分:0)

首先,这是文档结构的问题,而不是空值。

如果您的字段coordinates的映射类型为geo_point,则必须使用{..., coordinates: null}而不是{..., coordinates: {lat: null, lon: null}}或类似的equivalent formats插入文档。整个字段必须丢失,而不是内部数据。