我正在尝试为特定值筛选字段,或者它不存在。
我有特定值的部分
{
"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"
}
}
]
}
}
]
}
}
}