我存储了两个字段startDate和endDate的文档。我想运行带有输入日期的弹性查询,并返回其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查询。
答案 0 :(得分:5)
您可以使用filter
子句执行此操作:
{
"query": {
"bool": {
"filter": [
{
"range": {
"startDate": {
"lte": "<startDate>"
}
}
},
{
"range": {
"endDate": {
"gte": "<endDate>"
}
}
}
]
}
}
}