某些文档以错误的类型保存。
错误的文档: {"tgi": {"male": "0.11"}}
应该是: {"tgi": {"male": 0.11}}
Map为:
{
"properties": {
"tgi": {
"type": "nested",
"properties": {
"male": {
"type": "float"
}
}
}
}
}
问题:如何查询所有错误的单据?
2条答案
按热度按时间ggazkfy81#
你的Map错了。您的文档没有嵌套对象。只是一个物体。在弹性体中,嵌套对象是对象的数组。然后重新索引,它应该会工作。
校正Map:
x4shl7ld2#
您的Map是正确的,即
male
字段的类型为float
.在源文档中,
"0.11"
以及0.11
elasticsearch将以相同的方式解释,因为它将尝试将字符串值强制转换为浮点值,因此本质上没有什么问题。此外,有时将浮点数作为字符串存储在源文档中更有意义,因为javascript/json中的浮点数存在已知的精度问题。从这个意义上说,第一份文件是“正确的”,第二份文件是“错误的”。
实际上没有错,两者都可以,但是第二个(使用数字浮点值)可能会导致聚合的精度问题(sum、avg等)