Elasticsearch日期范围查询,使用两个字段

我存储的文档包含两个字段,即startDate和endDate。我想使用输入日期运行Elastic查询,并返回其startDate和endDate包含该日期的所有文档。例如,

doc1:

"_source": {

"startDate": "2015-01-01",

"endDate": "2015-01-10"

}

如果我输入的日期为2015-01-02,则此文档应出现在结果中,因为输入的日期在开始日期和结束日期字段的范围内。

我可以使用一个字段进行范围查询,但由于范围仅接受一个,因此我不知道如何使用两个日期字段:

{

"query": {

"range" : {

"startDate" : {

"lte": "2015-01-02"

}

}

}

}

我还需要在同一日期执行将“ endDate”设置为“ gte”的范围查询。那将确定我需要检查的时间范围。任何意见,将不胜感激。

编辑:我最终想使用Olivere的弹性库将其转换为Go中的Elasticsearch查询。

回答:

您可以使用filter子句执行此操作:

{

"query": {

"bool": {

"filter": [

{

"range": {

"startDate": {

"lte": "<startDate>"

}

}

},

{

"range": {

"endDate": {

"gte": "<endDate>"

}

}

}

]

}

}

}

以上是 Elasticsearch日期范围查询,使用两个字段 的全部内容, 来源链接: utcz.com/qa/435470.html

回到顶部