我的弹性搜索索引具有嵌套字段。并且我想使用must,它包含一个带有嵌套查询的must_not查询。我已经通过以下方式分别尝试过must_not查询:
{
"bool": {
"must_not": [{
"nested": {
"path": "fields",
"query": {
"terms": {
"fields.value.raw": [
"200"
]
}
}
}
}]
}
}
上面的查询给我一个有效的结果,但是当我尝试使用must查询时,它将不会给我任何结果。我正在使用以下查询:
{
"bool": {
"must": [{
"nested": {
"path": "fields",
"query": {
"bool": {
"must": [{
"match": {
"fields.uid": "number"
}
}, {
"bool": {
"must_not": [{
"nested": {
"path": "fields",
"query": {
"terms": {
"fields.value.raw": [
"200"
]
}
}
}
}]
}
}]
}
}
}
}]
}
}
以上查询没有给我有效的结果。上面的查询有什么问题? 我该如何在嵌套查询中使用must_not?
答案 0 :(得分:0)
您应该在同一布尔查询中使用must和must_not。
{
"bool": {
"must_not": [{
"nested": {
"path": "fields",
"query": {
"terms": {
"fields.value.raw": [
"200"
]
}
}
}
}],
"must": [{
"match": {
"fields.uid": "number"
}
}]
}
}