嵌套过滤器数值范围
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
}
}
]
}
}
}
}
}
我有以下 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
}
}
]
}
}
}
}
}