gpt4 book ai didi

elasticsearch - 总和忽略负值

转载 作者:行者123 更新时间:2023-12-02 22:24:35 26 4
gpt4 key购买 nike

我在elasticsearch上映射了一种名为measure的类型,该类型同时包含sensorId和值作为字符串。

映射。

{
"measures": {
"mappings": {
"summarizedmeasure": {
"properties": {
"sensorId": {
"type": "string"
}
"timestamp": {
"type": "date",
"format": "dateOptionalTime"
},
"value": {
"type": "string"
}
}
}
}
}
}

有一些负值被索引,但是当我计算按天汇总的总和时,它给出正值。
{
"query": {
"bool": {
"must":
{
"match": {
"sensorId": "123"
}
}
}
},
"aggs": {
"value_per_day": {
"date_histogram": {
"field": "timestamp",
"interval": "day"
},
"aggs": {
"total": {
"sum": {
"script": "Float.parseFloat(doc['value'].value)"
}
}
}
}
}
}

请帮我解决这个问题。谢谢

最佳答案

您的映射

                "value": {
"type": "string"
}

需要使用 index: not_analyzed或分析值 ,而无需删除 -(减号)。 Elasticsearch中的默认分析器- standard one-删除一些字符并将字符串小写(除其他外)。

对于下面的映射,脚本按预期工作:
    "value": {
"type": "string",
"index": "not_analyzed"
}

或者,但是我认为这比常规脚本更昂贵,是在脚本中使用 _source对象,因为该对象包含已索引的原始文本:
"script": "Float.parseFloat(_source.value)"

关于elasticsearch - 总和忽略负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32559299/

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