【发布时间】:2021-01-25 16:32:31
【问题描述】:
如果我有一些数据的字段包含多组开始/结束日期.. 例如:
{
id: 1,
title: "My Title",
availability[{start: 01-01-2020, end: 01-05-2020},{start: 02-01-2020, end: 02-22-2020}]
}
是否可以在 elasticsearch 中构建查询以检查今天(或任何给定日期)是否在列表中的任何开始/结束日期组合内?
或者我是否需要以不同的方式构建我的数据才能使其发挥作用?
以前,我只处理一个开始日期和一个结束日期,可以将它们存储为自己的字段并执行 gte、lte 组合来检查。
更新:
如果我将它们添加为嵌套字段。例如:
"avails" : {
"type" : "nested",
"properties" : {
"availStart" : { "type" : "date" },
"availEnd" : { "type" : "date" }
}
}
如果我这样搜索:
{
"query": {
"nested" : {
"path" : "avails",
"query" : {
"term" : {
{ "range" : {"avails.start" : {"lte": "now"}}},
{ "range" : {"avails.end" : {"gt" : "now"}}}
}
}
}
}
}
它是否会为每个嵌套记录评估这个并返回任何具有匹配子记录的父记录?
【问题讨论】:
-
您的数据代表什么?日期时段是重复的还是固定的?
-
它们代表可用性窗口。一旦插入数据,它们就会被修复,但更新可能会通过更改现有值或添加新值来实现。
标签: elasticsearch aws-elasticsearch