这是我想要转换为 elasticsearch 查询的基本 SQL查询,
SELECT product
FROM products
WHERE (price = 200 OR ID = "101")
AND (price != 300)
这是我尝试过的
GET /my_store/my_product_items/_search
{
"query" : {
"constant_score" : {
"filter" : {
"bool" : {
"must" : [
{ "term" : {"price" : 200}},
{ "term" : {"productID" : "101"}}
],
"must_not" : {
"term" : {"price" : 300}
}
}
}
}
}
}
但它没有提供与SQL查询相同的输出。做支持。
TIA。 :)
答案 0 :(得分:2)
良好的开端!您只需要使用must
更改should
,就可以了:
GET /my_store/my_product_items/_search
{
"query" : {
"constant_score" : {
"filter" : {
"bool" : {
"minimum_should_match": 1, <--- add this
"should" : [ <--- change this
{ "term" : {"price" : 200}},
{ "term" : {"productID" : "101"}}
],
"must_not" : {
"term" : {"price" : 300}
}
}
}
}
}
}