Kibana(六):数据映射错误二则

1. 日期格式

将日期格式映射为“strict_date_optional_time||epoch_millis”,在输入数据“2003/4/7”时,提示如下错误:

root_cause: [{type: "mapper_parsing_exception", reason: "failed to parse [work_date]"}]
type: "illegal_argument_exception", reason: "Invalid format: "2003/4/7" is malformed at "/4/7""

检阅文档,提示日期可以为以下三种格式:
1. 2015-01-01[文本格式];
2. 2015-01-01T12:10:30Z[文本格式];
3. 1420070400001[数字格式];

针对文本格式,对间隔符的要求不高,无论是“-”还是“/”都能自动识别,但是字符的位数要严格匹配,例如本例中出错的原因就在于“2003/4/7”位数不全,应该补齐为“2003/04/07”。

2. 地理格式

将位置信息声明为“geo_point”时,提交如下的数据:

"addr_geo" : ["24.31", "117.39"]

提示如下错误:

{"error":{"root_cause":[
{"type":"mapper_parsing_exception","reason":"failed to parse"}],
"type":"mapper_parsing_exception","reason":"failed to parse",
"caused_by":{"type":"illegal_argument_exception","reason":"illegal latitude value [268.76953125] for addr_geo"}},
"status":400}

显然数据错误得大了,纬度的范围为南纬90°到北纬90°,不可能出现这么大的数字,检查了好几遍数据,发现数据中并没有“268.76953125”的数字,这说明是elasticsearch自己进行的数字转换。

elasticsearch支持的地理数据格式有两种:
1. 数组代表的经纬度数据[lon, lat],经度在前,维度在后;
2. JSON对象格式的经纬度数据,{lat: number, lon: number}

需要注意的是,这两种格式都要求数据为Number,不可是字符串,否则可能会出现解析错误。

另外,南纬与西经为负值,北纬与东经为正值,所以维度的取值范围是[-90, 90],经度的取值范围为[-180, 180],如果不好记忆,请记住处于东经北半球的中国的经纬度信息(都是正数):
1. 经度范围:[73.66, 135.05]
2. 维度范围:[3.86, 53.55]

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值