如何在数组上创建范围查询

How to create a range query on array

查询结果如下:

{
  "query": {
    "match_all": {}
  }
}
{
  "data": [
    {
      "hits": [
        {
          "_source": {
            "AR_UnitePoids": 3,
            "CatTarif": [
              {
                "PVTTCSite": 1
              },
              {
                "PVTTCSite": 2
              }
            ]
          }
        },
        {
          "_source": {
            "AR_UnitePoids": 5,
            "CatTarif": [
              {
                "PVTTCSite": 3
              },
              {
                "PVTTCSite": 4
              }
            ]
          }
        }
      ]
    }
  ]
}

如果我想获取 AR_UnitePoids >= 5 的文档,我可以这样做:

{
  "query": {
    "range": {
      "AR_UnitePoids": {
        "gte": 5
      }
    }
  }
}
{
  "data": [
    {
      "hits": [
        {
          "_source": {
            "AR_UnitePoids": 5,
            "CatTarif": [
              {
                "PVTTCSite": 3
              },
              {
                "PVTTCSite": 4
              }
            ]
          }
        }
      ]
    }
  ]
}

但现在我想要 CatTarif 的第二个 PVTTCSite 大于 4 的所有文档:

{
  "query": {
    "range": {
      "CatTarif.1.PVTTCSite": {
        "gte": 4
      }
    }
  }
}

但是这个查询不起作用,我得到 0 hits

我该怎么做?

编辑:

感谢@TusharShahi 的评论和这个 doc 我设法创建了这个查询:

{
  "query": {
    "nested": {
      "path": "CatTarif",
      "query": {
        "bool": {
          "must": [
            { "range": { "CatTarif.PVTTCSite": { "gte": 4 } } }
          ]
        }
      }
    }
  }
}

有效,但我仍然无法查询 CatTarif 的特定索引。

{
  "query": {
    "nested": {
      "path": "CatTarif",
      "query": {
        "bool": {
          "must": {
            "range": {
              "CatTarif.PVTTCSite": {
                "gte": 4
              }
            }
          },
          "filter": {
            "term": {
              "CatTarif.CatTarif": 1
            }
          }
        }
      }
    }
  }
}