Elasticsearch 嵌套范围查询 must_not

问题描述 投票:0回答:0

我在谷歌和堆栈中寻找了一段时间。在弹性搜索索引中,我们有一个嵌套字段,其中包含代表敢于范围的几个日期,如下所示:

"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 个元素。

提前致谢 最好的问候

elasticsearch nested date-range
© www.soinside.com 2019 - 2024. All rights reserved.