嵌套过滤器数值范围

Nested filter numerical range

我有以下 json 对象:

{
  "Title": "Terminator,
  "Purchases": [
     {"Country": "US", "Site": "iTunes", "Price": 4.99},
     {"Country": "FR", "Site": "Google", "Price": 5.99}
  ]
}

我希望能够找到指定国家/地区+网站+价格范围的对象。例如,上面的 return 在 Country=US&Price<5.00 上应该是 True,但在 Country=FR&Price<5.00 上应该 return False。索引和查询将如何执行此操作?这是另一个答案,这是一个后续问题:

只需将一个范围查询添加到您的 Bool 查询逻辑树中。这将 return 个与美国国家/地区匹配且价格字段的数值小于 5 的文档。

{ "query": 
    { "nested" : {
            "path" : "Purchases",
            "score_mode" : "avg",
            "query" : {
                "bool" : {
                    "must" : [
                        {
                            "match" : {"Purchases.Country" : "US"}
                        },
                        {
                            "range" :  "Purchases.Price":
                            {
                                "lte": 5
                            }
                        }
                    ]
                }
            }
        }
    }
}