elasticsearch 必须 OR must_not
elasticsearch must OR must_not
我的 elasticsearch 请求有这个查询:
{
"query": {
"bool": {
"filter": {
"bool": {
"should" : [
{
"bool" : {
"must_not": {
"exists": {
"field": "visibility_id"
}
}
}
},
{
"bool" : {
"must": {
"terms": {
"visibility.visibility": ["visible"]
}
}
}
}
]
}
}
}
}
}
目标是检查 visibility_id
行是否在 table 中。如果不是,它将 return true 到达“must_not”。但是,如果存在 visibility_id
列,则需要检查它是否设置为“可见”。
目前,如果 visibility_id
是 null
,它可以工作,但它不会检查 terms
。 terms
可以是除 visible
之外的任何其他内容,它会起作用。
有人可以帮助我吗,我是 elasticsearch 的新手。 (我尝试过不使用过滤器 bool,只使用 should 但它也不起作用。)
试试这个查询,你遗漏了 minimum_should_match: 1
{
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"bool": {
"must_not": {
"exists": {
"field": "visibility_id"
}
}
}
},
{
"terms": {
"visibility.visibility": [
"visible"
]
}
}
]
}
}
}
如果 visibility
在您的映射中是 nested
,您的查询需要改为这样:
{
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"bool": {
"must_not": {
"exists": {
"field": "visibility_id"
}
}
}
},
{
"nested": {
"path": "visibility",
"query": {
"terms": {
"visibility.visibility": [
"visible"
]
}
}
}
}
]
}
}
}
我的 elasticsearch 请求有这个查询:
{
"query": {
"bool": {
"filter": {
"bool": {
"should" : [
{
"bool" : {
"must_not": {
"exists": {
"field": "visibility_id"
}
}
}
},
{
"bool" : {
"must": {
"terms": {
"visibility.visibility": ["visible"]
}
}
}
}
]
}
}
}
}
}
目标是检查 visibility_id
行是否在 table 中。如果不是,它将 return true 到达“must_not”。但是,如果存在 visibility_id
列,则需要检查它是否设置为“可见”。
目前,如果 visibility_id
是 null
,它可以工作,但它不会检查 terms
。 terms
可以是除 visible
之外的任何其他内容,它会起作用。
有人可以帮助我吗,我是 elasticsearch 的新手。 (我尝试过不使用过滤器 bool,只使用 should 但它也不起作用。)
试试这个查询,你遗漏了 minimum_should_match: 1
{
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"bool": {
"must_not": {
"exists": {
"field": "visibility_id"
}
}
}
},
{
"terms": {
"visibility.visibility": [
"visible"
]
}
}
]
}
}
}
如果 visibility
在您的映射中是 nested
,您的查询需要改为这样:
{
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"bool": {
"must_not": {
"exists": {
"field": "visibility_id"
}
}
}
},
{
"nested": {
"path": "visibility",
"query": {
"terms": {
"visibility.visibility": [
"visible"
]
}
}
}
}
]
}
}
}