GET /my_index/my_type/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"myDate": {
"gte": "12-08",
"lte": "12-08",
"format": "MM-dd"
}
}
}
]
}
}
}
第二个查询
GET /my_index/my_type/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"mydate": "12-08"
}
}
]
}
}
}
答案 0 :(得分:1)
不幸的是,我认为这很容易实现。 DateTime数据类型实际上只是长数字。范围查询还将定义的输入转换为数字。示例:now - > 1497541939892.有关详细信息,请参阅documentation - 具体如下:
在内部,日期转换为UTC(如果指定了时区)并存储为一个长数字,表示自此纪元以来的毫秒数。
考虑到这一点,您必须为每个子查询减去1(或x)年(以毫秒为单位)。这听起来不切实际。
我认为你最好的选择是,将日期和月份 - 也许是年份 - 另外编入索引。然后,您将能够按月/日查询,这将是整数值。我不知道你的案子是否容易做到,但我现在真的没有其他想法。