我有一个如下所示的查询,当date_partition字段为“=> "float”时,它返回类似于20220109、20220108、20220107的查询。当字段"type“=> "long”时,它只返回20220109查询。这就是我想要的。
下面的每个查询都会返回结果,就好像查询20220119已经发送一样。-> 20220109,20220108,20220107
PUT date
{
"mappings": {
"properties": {
"date_partition_float": {
"type": "float"
},
"date_partition_long": {
"type": "long"
}
}
}
}
POST date/_doc
{
"date_partition_float": "20220109",
"date_partition_long": "20220109"
}
#its return the query
GET date/_search
{
"query": {
"match": {
"date_partition_float": "20220108"
}
}
}
#nothing return
GET date/_search
{
"query": {
"match": {
"date_partition_long": "20220108"
}
}
}这是一个错误还是浮点类型是这样工作的?加载到Elasticsearch (比如dd-1,dd-2)(每天20 gb的pri碎片大小)(总共15 TB)的2年数据中,什么是改变这个字段类型的最好方法?我的映射中有5种浮动类型,最快的方法是改变所有这些类型。注意:在我看来,我有以下的解决方案,但恐怕很慢

发布于 2022-03-22 15:18:07
date_partition字段应该有带有format=yyyyMMdd的date类型,这是唯一可以使用的类型,而不是long,甚至更糟的float。
PUT date
{
"mappings": {
"properties": {
"date_partition": {
"type": "date",
"format": "yyyyMMdd"
}
}
}
}查询20220108并在结果中返回20220109文档是不符合逻辑的。
使用date类型还可以使用适当的基于时间的range查询,并在数据上创建date_histogram聚合。
您可以使用适当的类型重新创建索引并重新索引数据,或者向现有索引中添加新字段并通过查询更新它。这两个选项都是有效的。
发布于 2022-04-18 13:13:50
https://stackoverflow.com/questions/71572203
复制相似问题