gpt4 book ai didi

elasticsearch - 如果小数点后的数字为零,它不会返回为 double 值吗?

转载 作者:行者123 更新时间:2023-12-03 01:51:08 24 4
gpt4 key购买 nike

我在elasticsearch 5.0中创建了一个索引,其中包含来自MySQL数据库的数据。我的表中有一个字段是string,在ES中我需要它作为double

因此,当我使用PUT为适当的字段创建索引时,添加了映射:

{
"mappings": {
"my_type": {
"properties": {
"chargeamount": {
"type": "double"
}
}
}
}
}

完成此操作后,包含小数点后的数字(即:23.23)的值将正确地将其返回为 double 值,但是其中包含小数点后的零(即:23.00)的数字将其自身返回为字符串(即:2300) )。

编辑:
这些是我执行的步骤:
  • 我最初是通过PUT请求创建索引的
    (http://hostmachine:9402/indexname),上面的映射为
    body 。
  • 然后我使用以下命令将数据(从MySQL表中)推送到索引
    logstash。如果需要,我可以提供logstash conf。
  • 将数据上载到索引后,我尝试这样查询以检查结果是否显示 double 值。 POST请求(http://hostmachine:9402/indexname/_search?和主体如下:
    {  
    "size" : 0,
    "query":{
    "query_string":{
    "query":"myquery"
    }
    },
    "aggs":{
    "total":{
    "terms":{
    "field":"userid"
    },
    "aggs":{
    "total":{
    "sum":{
    "script":{
    "lang": "painless",
    "inline" : "doc['chargeamount'].value"
    }
    }
    }
    }
    }
    }
    }

  • 结果看起来像下面的快照,应该是 267472.00 :

    enter image description here

    我要去哪里错了?任何帮助,将不胜感激。

    最佳答案

    您需要确保索引创建查询中的映射类型与您的logstash配置中的document_type完全相同,即message_logs:

    PUT response_summary6
    {
    "mappings": {
    "message_logs": { <--- change this
    "properties": {
    "userid": {
    "type": "text",
    "fielddata": true
    },
    "responsecode": {
    "type": "integer"
    },
    "chargeamount": {
    "type": "double"
    }
    }
    }
    }
    }

    关于elasticsearch - 如果小数点后的数字为零,它不会返回为 double 值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40354682/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com