我在es中有日期字段,我只想得到一周的第一天。尝试
{ "query": { "range": { "myDate": { "from": "now/w", "to": "now/w" } } } }
和
{ "query": { "terms": { "myDate": [ "now/w" ] } } }
但它总是从周一到今天返回结果。
ecfsfe2w1#
您的查询的方向是正确的,但是由于您是按周取整的,因此该周的所有天都将具有相同的值。您需要做的是添加另一个过滤器,以便只考虑日期为该周星期一的文档,如下所示:
{ "query": { "bool": { "filter": [ { "range": { "myDate": { "from": "now/w", "to": "now/w" } } }, { "script": { "script": { "source": "doc['myDate'].value.dayOfWeek == 1" } } } ] } } }
除了使用脚本(performance killer),您还可以在文档的另一个字段中索引一周中的某一天,这样就可以在该字段上运行简单的术语查询。
1条答案
按热度按时间ecfsfe2w1#
您的查询的方向是正确的,但是由于您是按周取整的,因此该周的所有天都将具有相同的值。您需要做的是添加另一个过滤器,以便只考虑日期为该周星期一的文档,如下所示:
除了使用脚本(performance killer),您还可以在文档的另一个字段中索引一周中的某一天,这样就可以在该字段上运行简单的术语查询。