第一个
在传递上述查询时,我遇到了解析器异常,我无法更改日期格式,因为数据库中的数据以相同的格式插入。
需要以下方面的建议:
1.如果不能,我们如何在ElasticSearchJava中解析这种时间戳
1.我们如何在数据插入期间控制模式更新,就像我在定义为文本中的列,它将日期格式“2022-10- 07 T09:45:13 Z”作为文本。
要么我必须在ES解析器中传递此格式,要么我必须在插入过程中将格式更改为2022-10-07 09:45:13。
我无法在插入后为每行进行转换,因为我们有大量数据
1条答案
按热度按时间lsmd5eda1#
正如你所提到的,Elasticsearch将
timecolumn
存储为text
类型,因此我建议将timecolumn
的Map更改为date
类型,这样你就可以使用带日期的范围查询了。因为如果你将日期存储为文本并应用范围,那么它将不会返回预期的结果。现在来看看你的Java代码问题,你可以使用下面的代码在Java中创建范围查询,就像你使用Java客户端一样。
关于您对重新索引数据的顾虑:
我无法在插入后为每行进行转换,因为我们有大量数据
您可以使用Reindex API将数据从原始索引移动到临时索引并删除原始索引。然后,使用正确的Map定义索引,并再次使用相同的Reindex API将数据从临时索引复制到具有新Map的原始索引。