弹性搜索 JSON String:JSONObject 索引
Elastic Search JSON String:JSONObject indexing
可以elasticsearch索引值如
"key": [
14.0,
"somestring"
]
如果我尝试摄取这些数据,我会收到此错误
org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: Found unrecoverable error [Bad Request(400) - [WriteFailureException; nested: MapperParsingException[failed to parse [FIXMessage.key]]; nested: NumberFormatException[For input string: "somestring"]; ]]; Bailing out..
首先,以上是有效的 JSON 格式吗?如果是这样,那为什么 elastic 不能索引它?
Elasticsearch 正在尝试将 "somestring"
转换为数字,但失败了。
你的 json 是有效的,Elasticsearch 会愉快地从值数组中为同一个字段索引多个值,但它们必须都具有相同的类型,并且类型必须与映射中的相应字段。
如果映射中不存在该字段,Elasticsearch 将根据它看到的该字段的第一个值使用合理的默认类型创建它。因此,如果您尝试索引上面发布的内容,而 "key"
字段不存在,Elasticsearch 将创建该字段,查看它找到的第一个值 (14.0
) 并决定使用 float
类型。然后它会尝试索引第二个值,"somestring"
,无法将其转换为浮点数,并发回错误。
有道理吗?
您可能会发现 this post 有帮助。
这取决于您打算如何处理数据。
如果只想存储和获取完整数组,只需将 JSON 数组转换为字符串即可。
当您想从 Elastic 获取数组时,您必须将字符串转换回 JSON 数组。
如果你也想在这个数组里面搜索,可以把这个数组拆分成多个数组,按类型区分。
可以elasticsearch索引值如
"key": [
14.0,
"somestring"
]
如果我尝试摄取这些数据,我会收到此错误
org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: Found unrecoverable error [Bad Request(400) - [WriteFailureException; nested: MapperParsingException[failed to parse [FIXMessage.key]]; nested: NumberFormatException[For input string: "somestring"]; ]]; Bailing out..
首先,以上是有效的 JSON 格式吗?如果是这样,那为什么 elastic 不能索引它?
Elasticsearch 正在尝试将 "somestring"
转换为数字,但失败了。
你的 json 是有效的,Elasticsearch 会愉快地从值数组中为同一个字段索引多个值,但它们必须都具有相同的类型,并且类型必须与映射中的相应字段。
如果映射中不存在该字段,Elasticsearch 将根据它看到的该字段的第一个值使用合理的默认类型创建它。因此,如果您尝试索引上面发布的内容,而 "key"
字段不存在,Elasticsearch 将创建该字段,查看它找到的第一个值 (14.0
) 并决定使用 float
类型。然后它会尝试索引第二个值,"somestring"
,无法将其转换为浮点数,并发回错误。
有道理吗?
您可能会发现 this post 有帮助。
这取决于您打算如何处理数据。 如果只想存储和获取完整数组,只需将 JSON 数组转换为字符串即可。
当您想从 Elastic 获取数组时,您必须将字符串转换回 JSON 数组。
如果你也想在这个数组里面搜索,可以把这个数组拆分成多个数组,按类型区分。