我必须创建一个查询,以提取字段startTime为2017年,然后为2018年的对象。
这是startTime的格式:
"startTime": "2017-06-11T08:00:00",
我写的查询:
{
"query": {
"bool": {
"must": [
{
"range": {
"startTime": {
"gte": "2017",
"lt": "2018"
}
}
}
]
}
}
}
是的,它返回在2017年具有startTime的对象,但是如果我这样做了:
{
"query": {
"bool": {
"must": [
{
"range": {
"startTime": {
"gte": "2018",
"lt": "2019"
}
}
}
]
}
}
}
它还会返回2017年以来的对象。
我该如何解决这个问题?
答案 0 :(得分:0)
首先请确保该字段实际上是type Date的字段。
如果问题仍然存在,Elastic允许您指定date-format for the query。在您的示例中添加yyyy
格式,结果如下:
{
"query": {
"bool": {
"must": [
{
"range": {
"startTime": {
"gte": "2018",
"lt": "2019",
"format": "yyyy"
}
}
}
]
}
}
}