我有以下弹性搜索结构
[{product: 'product 1', price: 100, originalPrice: 150}]
如何查询这样的查询(sql):select * from products where price < originalPrice
以查找所有具有折扣的产品
答案 0 :(得分:1)
硬核非最佳表现不佳的方法是使用这样的script
query:
POST /_search
{
"query": {
"bool" : {
"must" : {
"script" : {
"script" : {
"inline": "doc.price.value < doc.originalPrice.value",
"lang": "painless"
}
}
}
}
}
}
更好的方法是在新的布尔字段中将该信息索引到文档中,即在您的情况下为"discounted": true
。
{
"product": "product 1",
"price": 100,
"originalPrice": 150,
"discounted": true
}
然后,它会变得更容易,并且可以进行简单的term
查询,此外,查询运行得更快。
POST /_search
{
"query": {
"bool" : {
"must" : {
"term" : {
"discounted" : true
}
}
}
}
}