我是Elasticsearch的初学者。我最近将我的搜索数据库从MySQL更改为Elasticsearch,但是我无法转换其中一个查询。查询如下。
select * from table
where (col1 = "a" and col2 = "b")
or (col1 = "c" and col2 = "d")
and col3 = "z";
答案 0 :(得分:1)
这是关于必须和应该一起过滤以执行此类查询的全部操作。
以下查询是您的SQL语句的elasticsearch查询。
GET _search
{
"query": {
"bool": {
"must": [
{
"term": {
"col3": {
"value": "z"
}
}
},
{
"bool": {
"should": [
{
"bool": {
"must": [
{
"term": {
"col1": {
"value": "a"
}
}
},
{
"term": {
"col2": {
"value": "b"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"col1": {
"value": "c"
}
}
},
{
"term": {
"col2": {
"value": "d"
}
}
}
]
}
}
]
}
}
]
}
}
}