我目前正在努力使用目前看起来如下的ElastSearch查询:
...
"query": {
"bool": {
"must_not": [
{
"term": {
"bool-facet.criteria1": {
"value": false
}
}
},
{
"term": {
"bool-facet.criteria2": {
"value": false
}
}
}
]
}
}
...
Run Code Online (Sandbox Code Playgroud)
所以现在当criteria1或criteria2匹配时,文档将被忽略.查询必须如何,以便只忽略与criteria1 AND criteria2匹配的文档?
如果您想要简单的AND-behavior,则只需在其中嵌套另一个bool查询即可:
"query": {
"bool": {
"must_not": [
{
"bool": {
"filter": [
{
"term": {
"bool-facet.criteria1": false
}
},
{
"term": {
"bool-facet.criteria2": false
}
}
]
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,通过使用filter(因为是是/否问题,不需要评分,但是如果您想评分,则可以使用must代替filter),从而得到所需的AND行为。这将问题更改为“否(任何具有criteria1 == false和criteria2 == false的文档)”。
以下安排对我在5.5.1中的类似查询起作用:
"query": {
"bool": {
"must": [
{
"bool":{
"must_not":{
"term":{
"bool-facet.criteria1": false
}
}
}
},
{
"bool":{
"must_not":{
"term":{
"bool-facet.criteria2": true
}
}
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
对于其他版本,其他答案可能是正确的,但在5.5.1中对我不起作用.
由于无法更新 elasticsearch 版本,我不得不寻找另一个解决方案。这对我有用:
"query": {
"bool": {
"must_not" : [
{
"query": {
"bool": {
"must": [
{
"term": {
"bool-facet.criteria1": false
}
},
{
"term": {
"bool-facet.criteria2": false
}
}
]
}
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15815 次 |
| 最近记录: |