Провести поиск по пустому "" значению в массиве документа

Добрий день

У меня есть такая структура данных в базе еластик

{
"hits": [
    {
        "_index": "database",
        "_type": "_doc",
        "_id": "1",
        "_score": 1.0,
        "_source": {
            "Card_History": [
                {
                    "Status_Id": "1",
                    "Result_Status_Id": "2",
                    "User_Login": "User1"
                },
                {
                    "Status_Id": "2",
                    "Result_Status_Id": "3",
                    "User_Login": "User2"
                },
                {
                    "Status_Id": "3",
                    "Result_Status_Id": "4",
                    "User_Login": "User3"
                },
                {
                    "Status_Id": "4",
                    "Result_Status_Id": "5",
                    "User_Login": "User4"
                },
                {
                    "Status_Id": "5",
                    "Result_Status_Id": "",
                    "User_Login": "User5"
                }
            ]
        }
    },
    {
        "_index": "database",
        "_type": "_doc",
        "_id": "2",
        "_score": 1.0,
        "_source": {
            "Card_History": [
                {
                    "Status_Id": "1",
                    "Result_Status_Id": "2",
                    "User_Login": "User1"
                },
                {
                    "Status_Id": "2",
                    "Result_Status_Id": "3",
                    "User_Login": "User2"
                }
            ]
        }
    },
    {
        "_index": "database",
        "_type": "_doc",
        "_id": "3",
        "_score": 1.0,
        "_source": {
            "Card_History": [
                {
                    "Status_Id": "1",
                    "Result_Status_Id": "",
                    "User_Login": "User5"
                }
            ]
        }
    }
]
}

Запросом

{
"query": {
    "bool": {
        "must": [
           {"term": { "Card_History.User_Login": "User5" }}
        ]
        }
}
}

Мне покажет все документы где в массиве "Card_History" есть хотя бы одна запись "User_Login": "User5"
Но если я захочу отобразить все документы у которых пустое "Result_Status_Id" запросом

{
"query": {
    "bool": {
        "must": [
           {"term": { "Card_History.Result_Status_Id": "" }}
        ]
        }
}
}

Вернется 0 документов
Как провести поиск по пустому значению в массиве документа? что бы отобразился 1 и 3 документ?

А какой маппинг у Card_History.Result_Status_Id?

Сейчас вот такой:

{
"Card_History": {
    "type": "nested",
    "properties": {
        "Result_Status_Id": {
            "type": "text",
            "fields": {
                "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                }
            }
        },
        "Status_Id": {
            "type": "text",
            "fields": {
                "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                }
            }
        }
    }
}
}

В принципе работает такой вариант

{
"query": {
    "bool": {
        "must": [
        ]
        ,
        "must_not": [
            {
                "wildcard": {
                    "Card_History.Result_Status_Id": "*"
                }
            }
        ]
    }
}
}

Но есть ли точный поиск пустого значения?

Тогда вот так:

{
  "query": {
    "nested": {
      "path": "Card_History",
      "query": {
        "term": {
          "Card_History.Result_Status_Id.keyword": ""
        }
      }
    }
  }
}

Спасибо

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.