【发布时间】:2015-02-23 00:49:48
【问题描述】:
在 ElasticSearch 中是否可以在一个查询中转换此 SQL?
SELECT * FROM table WHERE state IN ('NY', 'CA', 'FL') AND grade IN ('GOOD', 'BAD') AND active = 'YES' AND quantity > 100 AND quantity < 200
【问题讨论】:
标签: elasticsearch
在 ElasticSearch 中是否可以在一个查询中转换此 SQL?
SELECT * FROM table WHERE state IN ('NY', 'CA', 'FL') AND grade IN ('GOOD', 'BAD') AND active = 'YES' AND quantity > 100 AND quantity < 200
【问题讨论】:
标签: elasticsearch
您可以为此使用 filtered query 和 bool filter
{
"query" : {
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"bool" : {
"must" : [{
"terms" : {
"state" : [
"NY",
"CA",
"FL"
]
}
},
{
"terms" : {
"grade" : [
"GOOD",
"BAD"
]
}
},
{
"term" : {
"active" : "YES"
}
},
{
"range" : {
"quantity" : {
"gt" : 100,
"lt" : 200
}
}
}
]
}
}
}
}
}
【讨论】:
quantity > 100?
lt 属性,即{ "range" : { "quantity" :{ "gt" : 100 } } }