我有两个不同的查询,我想将它们与中间的“OR”/“AND”组合起来。我该怎么做?
例如,对于给定的查询 我只想在 elasticsearch 中运行 Query1 或 Query2。
查询 1:
{
"query": {
"filtered": {
"query": {
"query_string":{
"query":"Batman",
"default_operator":"AND",
"fields"::[
"Movies._all"
]
}
},
"filter": {
"bool": {
"must": [
{
"query":{
"filtered":{
"filter":{
"and":[
{
"term":{
"cast.firstName":"Christian "
}
},
{
"term":{
"cast.lastName":"Bale"
}
}
]
}
}
}
}
]
}
}
}
}
}
查询2:
{
"query": {
"filtered": {
"query": {
"query_string":{
"query":"Dark Knight",
"default_operator":"AND",
"fields"::[
"Movies._all"
]
}
},
"filter": {
"bool": {
"must": [
{
"query":{
"filtered":{
"filter":{
"and":[
{
"term":{
"director.firstName":"Christopher"
}
},
{
"term":{
"director.lastName":"Nolan"
}
}
]
}
}
}
}
]
}
}
}
}
}
最佳答案
您需要使用 bool query 像下面这样的东西可以正常工作 -
{
"query" : {
"bool" : {
"must" : [
{ // Query1 },
{ // Query2}
]
}
}
}
对 AND 使用 must,对 OR 使用 should
关于elasticsearch - 在 Elasticsearch 中使用 'OR' 或 'AND' 组合多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28596980/