字段值筛选或不存在



我正在尝试为特定值筛选字段,或者它不存在。

我有特定值的部分

{
"query": {
"match": {
"app.serviceType": {
"query": "MY_VALUE",
"type": "phrase"
}
}
}
}

我还想添加任何字段serviceType根本不存在的情况。

本质上,我想要类似的东西:

serviceType == "MY_VALUE" || string.IsNullOrEmpty(serviceType)

此请求必须与您的用例匹配:

{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"exists": {
"field": "serviceType"
}
},
{
"match_phrase": {
"serviceType": "MY_VALUE"
}
}
]
}
},
{
"bool": {
"must_not": [
{
"exists": {
"field": "serviceType"
}
}
]
}
}
]
}
}
}

基于前面的答案(虽然不起作用,但让我很接近(,我能够让它发挥作用。

{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"exists": {
"field": "app.serviceType"
}
},
{
"match_phrase": {
"app.serviceType": "MY_VALUE"
}
}
]
}
},
{
"bool": {
"must_not": [
{
"exists": {
"field": "app.serviceType"
}
}
]
}
}
]
}
}
}

最新更新