我在谷歌和堆栈中寻找了一段时间。在弹性搜索索引中,我们有一个嵌套字段,其中包含代表敢于范围的几个日期,如下所示:
"plazos" : [
{
"id" : 1,
"fechainicio" : "01/04/2023",
"fechafin" : "31/04/2023"
},
{
"id" : 2,
"fechainicio" : "09/11/2023",
"fechafin" : "29/11/2023"
}
]
我们可以嵌套超过 2 个元素。如果一个元素是 IN 日期,今天必须在
fechainicio
和 fechafin
之间,在嵌套 plazos
中的一个或多个元素中,这可以正常工作:
"bool" : {
"must" : [
{
"range" : {
"plazos.fechainicio" : {
"from" : null,
"to" : "19/04/2023",
"include_lower" : true,
"include_upper" : true,
"boost" : 1.0
}
}
},
{
"range" : {
"plazos.fechafin" : {
"from" : "19/04/2023",
"to" : null,
"include_lower" : true,
"include_upper" : true,
"boost" : 1.0
}
}
}
],
"adjust_pure_negative" : true,
"boost" : 1.0
因为它匹配元素
"id":1
问题是,如果一个元素今天过时了,那么它必须是 IN NONE elemets。我尝试了相同的请求,但使用
must_not
但由于其中一个元素 ("id":2
) 已过期,因此同一文档匹配 IN DATE 和 OUT OF DATE。我怎么能说“要过时,你必须在 plazos
嵌套元素中的所有元素中都过时。plazos
可以有超过 2 个元素。
提前致谢 最好的问候