ElasticSearch查询,条件是文档中列表的元素

sg24os4d  于 2023-04-20  发布在  ElasticSearch
关注(0)|答案(1)|浏览(164)

我正在尝试对一个看起来像他的文档编写查询

{
          "chargeElement": "user",
          "chargeType": "AUTO_SCALING",
          "cycle": {
            "count": 1,
            "interval": "MONTH",
            "name": "MONTHLY"
          },
          "tiers": [
            {
              "ceiling": 250,
              "floor": 101,
              "unitAmount": 440
            },
            {
              "ceiling": 15000,
              "floor": 10001,
              "unitAmount": 230
            },
            {
              "ceiling": 100,
              "flatAmount": 4750,
              "floor": 11,
              "unitAmount": 575
            },
            {
              "ceiling": 10,
              "flatAmount": 1000,
              "floor": 1
            }]
}

我想获取所有文档,其中tiers.floor = 1 flatAmount大于0。是否可以这样做?

uurv41yg

uurv41yg1#

如果字段层是嵌套类型,则可以使用“嵌套查询”。下面的查询将获取具有层.floor = 1且flatAmount〉0的项目的文档。
这样,匹配是因为项目:{“天花板”:10,“flatAmount”:1000,“楼层”:1 }。

{
  "query": {
    "nested": {
      "inner_hits": {}, 
      "path": "tiers",
      "query": {
        "bool": {
          "filter": [
            {
              "term": {
                "tiers.floor": {
                  "value": 1
                }
              }
            },
            {
              "range": {
                "tiers.flatAmount": {
                  "gt": 0
                }
              }
            }
          ]
        }
      }
    }
  }
}

相关问题