另存为字符串instandof float,如何查询所有工作文档

kb5ga3dv  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(2)|浏览(301)

某些文档以错误的类型保存。
错误的文档: {"tgi": {"male": "0.11"}} 应该是: {"tgi": {"male": 0.11}} Map为:

{
"properties": {
    "tgi": {
        "type": "nested",
        "properties": {
            "male": {
                "type": "float"
            }
        }
    }
}

}
问题:如何查询所有错误的单据?

ggazkfy8

ggazkfy81#

你的Map错了。您的文档没有嵌套对象。只是一个物体。在弹性体中,嵌套对象是对象的数组。然后重新索引,它应该会工作。
校正Map:

{
"properties": {
    "tgi": {
        "properties": {
            "male": {
                "type": "float"
            }
        }
    }
}
x4shl7ld

x4shl7ld2#

您的Map是正确的,即 male 字段的类型为 float .
在源文档中, "0.11" 以及 0.11 elasticsearch将以相同的方式解释,因为它将尝试将字符串值强制转换为浮点值,因此本质上没有什么问题。
此外,有时将浮点数作为字符串存储在源文档中更有意义,因为javascript/json中的浮点数存在已知的精度问题。从这个意义上说,第一份文件是“正确的”,第二份文件是“错误的”。
实际上没有错,两者都可以,但是第二个(使用数字浮点值)可能会导致聚合的精度问题(sum、avg等)

相关问题