gpt4 book ai didi

elasticsearch - 从ElasticSearch查询的日期字段中提取日期(yyyyMMdd)

转载 作者:行者123 更新时间:2023-12-02 23:07:45 26 4
gpt4 key购买 nike

我的索引有一个日期字段,格式为2020-01-04T05:00:06.870000Z。在ES查询响应中,我需要yyyyMMdd形式的日期,所以20200104。我尝试使用脚本查询并分别提取了日期,月份和年份。我如何将它们串联在_source中以获得number形式的yyyyMMdd
样本数据 :

 "_source": {
"updated": "2020-01-04T05:00:06.870000Z"
}
"_source": {
"updated": "2020-01-04T09:00:08.870000Z"
}
"_source": {
"updated": "2019-12-04T01:00:06.870000Z"
}
}
查询:
"sort" : [
{
"_script": {
"type": "number",
"script": {
"lang": "painless",
"source": "doc['updated'].value.getYear()"
//similarly use getMonthOfYear() and getDayOfMonth(). How to concatenate and convert to number ?
},
"order": "desc"
}
}
]

最佳答案

您可以使用String.format正确填写数字,然后使用Integer.parseInt填写结果。
另外,您可以执行以下操作:

GET dates/_search
{
"sort": [
{
"_script": {
"type": "number",
"script": {
"lang": "painless",
"source": """
Integer.parseInt(
DateTimeFormatter
.ofPattern("yyyyMMdd")
.withZone(ZoneOffset.UTC)
.format(Instant.ofEpochMilli(
doc['updated'].value.millis)
));
"""
},
"order": "desc"
}
}
]
}

关于elasticsearch - 从ElasticSearch查询的日期字段中提取日期(yyyyMMdd),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63814677/

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