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

**URL:** <https://discuss.elastic.co/t/topic/256646>\
**Category:** Вопросы на русском языке\
**Created:** [November 25, 2020, 11:21am UTC](https://discuss.elastic.co/t/topic/256646 "2020-11-25T11:21:34Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Leleka](https://avatars.discourse-cdn.com/v4/letter/l/a4c791/32.png) [@Leleka](https://discuss.elastic.co/u/Leleka)\
**Post date:** [November 25, 2020, 11:21am UTC](https://discuss.elastic.co/t/topic/256646/1 "2020-11-25T11:21:34Z")

</div>

Добрий день

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

```
{
"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 документ?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [November 25, 2020, 5:25pm UTC](https://discuss.elastic.co/t/topic/256646/2 "2020-11-25T17:25:35Z")

</div>

А какой маппинг у Card\_History.Result\_Status\_Id?

---

<div class="post-metadata">

**Author:** ![Leleka](https://avatars.discourse-cdn.com/v4/letter/l/a4c791/32.png) [@Leleka](https://discuss.elastic.co/u/Leleka)\
**Post date:** [November 26, 2020, 12:08pm UTC](https://discuss.elastic.co/t/topic/256646/3 "2020-11-26T12:08:35Z")

</div>

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

```
{
"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
                }
            }
        }
    }
}
}
```

---

<div class="post-metadata">

**Author:** ![Leleka](https://avatars.discourse-cdn.com/v4/letter/l/a4c791/32.png) [@Leleka](https://discuss.elastic.co/u/Leleka)\
**Post date:** [November 26, 2020, 12:12pm UTC](https://discuss.elastic.co/t/topic/256646/4 "2020-11-26T12:12:04Z")

</div>

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

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

```

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

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [November 26, 2020, 8:02pm UTC](https://discuss.elastic.co/t/topic/256646/5 "2020-11-26T20:02:32Z")

</div>

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

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

```

---

<div class="post-metadata">

**Author:** ![Leleka](https://avatars.discourse-cdn.com/v4/letter/l/a4c791/32.png) [@Leleka](https://discuss.elastic.co/u/Leleka)\
**Post date:** [November 30, 2020, 3:01pm UTC](https://discuss.elastic.co/t/topic/256646/6 "2020-11-30T15:01:23Z")

</div>

Спасибо

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [December 28, 2020, 3:01pm UTC](https://discuss.elastic.co/t/topic/256646/7 "2020-12-28T15:01:46Z")

</div>

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