我正在努力创建一个简单的ElasticSearch查询。 这是我想在简单的SQL中实现的
SELECT * FROM products WHERE (title='LG' OR title='Nokia') AND (brand='Samsung' OR title='iPhone')
这是我的Elasticsearch查询:
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match": {
"product-name": "Samsung"
}
},
{
"match": {
"product-name": "Nokia"
}
}
],
"minimum_should_match": 1
}
}
]
}
}
这将返回Psuedo SQL WHERE (title='LG' OR title='Nokia')
但我如何构建AND (brand='Samsung' OR title='iPhone')
答案 0 :(得分:2)
以下查询应该完成工作。您需要在must
子句中添加一个块。
{
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match": {
"product-name": "LG"
}
},
{
"match": {
"product-name": "Nokia"
}
}
],
"minimum_should_match": 1
}
} ,
{
"bool": {
"should": [
{
"match": {
"brand": "Samsung"
}
},
{
"match": {
"title": "iPhone"
}
}
],
"minimum_should_match": 1
}
}
]
}
}
}
希望这有帮助