gpt4 book ai didi

elasticsearch - 聚合 "LastUpdated"属性或 _timestamp

转载 作者:行者123 更新时间:2023-12-03 02:06:44 24 4
gpt4 key购买 nike

我的 Elasticsearch 映射大致如下所示:

{
"myIndex": {
"mappings": {
"myType": {
"_timestamp": {
"enabled": true,
"store": true
},
"properties": {
"LastUpdated": {
"type": "date",
"format": "dateOptionalTime"
}
/* lots of other properties */
}
}
}
}
}

所以, _timestamp已启用,并且每个文档上还有一个 LastUpated 属性。 LastUpdated 可以具有与 _timestamp 不同的值:有时,文档会得到物理更新(例如对非规范化数据的更新),这会更新 _timestamp,但 LastUpdated 保持不变,因为从业务角度来看,文档实际上并未“更新”。

此外,还有许多文档没有 LastUpdated 值(主要是旧数据)。

我想做的是运行一个聚合来计算每个日历日的文档数量(请忽略日期需要与午夜对齐的事实)。对于每个文档,如果存在则使用 LastUpdated,否则使用 _timestamp。

这是我尝试过的:
{
"aggregations": {
"counts": {
"terms": {
"script": "doc.LastUpdated == empty ? doc._timestamp : doc.LastUpdated"
}
}
}
}

分桶化似乎在某种程度上起作用,但结果中的键看起来很奇怪:
buckets: [
{
key: org.elasticsearch.index.fielddata.ScriptDocValues$Longs@7ba1f463doc_count: 300544
}{
key: org.elasticsearch.index.fielddata.ScriptDocValues$Longs@5a298acbdoc_count: 257222
}{
key: org.elasticsearch.index.fielddata.ScriptDocValues$Longs@6e451b5edoc_count: 101117
},
...
]

运行此聚合并在结果中获取有意义的键(即时间戳)的正确方法是什么?

最佳答案

我已经为你测试并制作了一个时髦的脚本,

POST index/type/_search
{
"aggs": {
"counts": {
"terms": {
"script": "ts=doc['_timestamp'].getValue();v=doc['LastUpdated'].getValue();rv=v?:ts;rv",
"lang": "groovy"
}
}
}
}

这将返回所需的结果。

希望这可以帮助!!谢谢!!

关于elasticsearch - 聚合 "LastUpdated"属性或 _timestamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25296724/

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