我试图从elasticsearch中的数组中过滤结果是嵌套字段,但结果不符合预期

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

我正在尝试过滤 1 号商店的结果,这些结果不在特定的日期范围内,在我的例子中是从 2023-01-27 到 2023-07-27,但结果命中不包括应该有的结果。 例如,该店号在2023-01-27至2023-07-27之间没有交易,但其他店号在上述日期范围内有交易,因此被排除在结果之外。

txn_info 是一个嵌套对象,它是一个对象数组,其交易日期和商店编号类似于

data structure in elastic

基本上,我应该能够根据商店编号和 txn_date 的组合进行过滤(如果商店编号为 1 并且对于 str num 1,txn_date 不应在 2023-01-27 到 2023-07-27 之间

我的询问:

code

java elasticsearch kibana
1个回答
0
投票

我认为这个查询可以帮助你:

{
  "query": {
    "nested": {
      "path": "txn_info",
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "txn_info.store_number": {
                  "value": 1
                }
              }
            }
          ], 
          "must_not": [
            {
              "bool": {
                "filter": [
                  {
                    "range": {
                      "txn_info.txt_date": {
                        "gte": "2021-08-09",
                        "lte": "2021-08-09"
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.