gpt4 book ai didi

datetime - 自定义日期的 Elasticsearch 设置格式

转载 作者:行者123 更新时间:2023-12-02 22:21:52 25 4
gpt4 key购买 nike

这是我的日期格式:

10:00 2019-06-03

根据 Elasticsearch 文档,我可以这样做:
{
"mappings": {
"properties": {
"date": {
"type": "date",
"format": "HH:mm yyyy-MM-dd"
}
}
}
}

但是,当我这样做时,它不会将其识别为日期(因此将其转换为时间戳。有人明白为什么吗?

https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

最佳答案

假设我们有 date 的以下映射您在问题中的字段

PUT <your_index_name>
{
"mappings":{
"properties":{
"date":{
"type":"date",
"format":"HH:mm yyyy-MM-dd||yyyy-MM-dd HH:mm"
}
}
}
}

请注意我是如何添加两种不同类型的 date formats

现在让我添加两个文档:
POST mydate/_doc/1
{
"date": "10:00 2019-06-03"
}

POST mydate/_doc/2
{
"date": "2019-06-03 10:00"
}

注意上面的两个日期值。 Semantically它们的含义完全相同。这必须在查询时保留。

现在,如果用户想要根据日期值的语义含义进行搜索,那么他/她应该获取两个文档。
POST <your_index_name>/_search
{
"query": {
"match": {
"date": "10:00 2019-06-03"
}
}
}

回复:
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "mydate",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"date" : "10:00 2019-06-03"
}
},
{
"_index" : "mydate",
"_type" : "_doc",
"_id" : "2",
"_score" : 1.0,
"_source" : {
"date" : "2019-06-03 10:00"
}
}
]
}
}

这是在响应中观察到的。这两份文件都被退回。

这只有在存储值的底层机制完全相同的情况下才有可能。在倒排索引中,这两个值将存储为相同的 long数字。

现在,如果您删除该语义定义,那么这两个值都与简单的字符串没有什么不同,您知道, 10:00 2019-06-032019-06-03 10:00两者都是不同的,并且遵守字符串应该是什么的语义(如果 date 像这样执行,为什么有 date 数据类型,正确)。

我们指定为 format映射中的日期值应该如何呈现给用户。

请注意此 link 中的以下信息:

Internally, dates are converted to UTC (if the time-zone is specified) and stored as a long number representing milliseconds-since-the-epoch.

Queries on dates are internally converted to range queries on this long representation, and the result of aggregations and stored fields is converted back to a string depending on the date format that is associated with the field.



希望这可以帮助!

关于datetime - 自定义日期的 Elasticsearch 设置格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56530241/

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