# Es 3.0.0-snapshot, has\_parent

**URL:** <https://discuss.elastic.co/t/es-3-0-0-snapshot-has-parent/30079>\
**Category:** Вопросы на русском языке\
**Created:** [September 27, 2015, 3:34am UTC](https://discuss.elastic.co/t/es-3-0-0-snapshot-has-parent/30079 "2015-09-27T03:34:56Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dimous](https://avatars.discourse-cdn.com/v4/letter/d/f08c70/32.png) [@Dimous](https://discuss.elastic.co/u/Dimous)\
**Post date:** [September 27, 2015, 3:34am UTC](https://discuss.elastic.co/t/es-3-0-0-snapshot-has-parent/30079/1 "2015-09-27T03:34:56Z")

</div>

Здравствуйте!  
Возможно, это баг и я должен был создать тикет. На случай, если изменилось поведение has\_parent:

Я собираю ES каждый день и проверяю одни и те же запросы на одних и тех же данных. Сборка за 26 сентября перестала возвращать результаты.

Иерархия данных такая: классификатор \> каталог \> товар.

Маппинг:

```
    "good": {
        "_parent": {
            "type": "catalogue",
            "fielddata": {
                "loading": "eager_global_ordinals" 
            }            
        },   

```

...  
"catalogue": {  
"\_parent": {  
"type": "classifier",  
"fielddata": {  
"loading": "eager\_global\_ordinals"  
}  
},  
...  
"classifier": {  
"\_all": {  
"enabled": false  
},  
"\_routing": {  
"required": true  
},  
"\_timestamp": {  
"enabled": true  
},  
"dynamic": "strict",  
"properties": {  
"title@classifier": {  
"store": "yes",  
"type": "string",  
"term\_vector": "with\_positions\_offsets"  
},  
"description@classifier": {  
"store": "yes",  
"type": "string",  
"term\_vector": "with\_positions\_offsets"  
}  
}  
}

Запрос:

GET /good/\_search  
{  
"query": {  
"bool": {  
"must": [  
{  
"term": {  
"group@good": "d836724e-09bd-11e1-b3c8-0024e8660f34"  
}  
},  
{  
"has\_parent": {  
"parent\_type": "catalogue",  
"query": {  
"has\_parent": {  
"parent\_type": "classifier",  
"query": {  
"ids": {  
"values": [  
"2fbee9ce-a8a4-11de-a2f3-000c298dc26a"  
]  
}  
}  
}  
}  
}  
}  
]  
}  
}  
}

Если убрать has\_parent, результат возвращается.  
Переиндексировал, результат тот же.

---

<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:** [September 28, 2015, 2:26pm UTC](https://discuss.elastic.co/t/es-3-0-0-snapshot-has-parent/30079/2 "2015-09-28T14:26:45Z")

</div>

Пробовал воспроизвести. Не получается. Вот скрипт, который я пробовал:

```
curl -XDELETE "localhost:9200/test-idx?pretty"
echo
curl -XPUT "localhost:9200/test-idx?pretty" -d '{
    "mappings": {
        "good": {
            "_parent": {
                "type": "catalogue"
            },
            "properties": {
                "group@good" :{
                    "type": "string",
                    "index": "not_analyzed"
                }
            }
        },
        "catalogue": {
            "_parent": {
                "type": "classifier"
            }
        },
        "classifier": {
            "_all": {
                "enabled": false
            },
            "_routing": {
                "required": true
            },
            "_timestamp": {
                "enabled": true
            },
            "dynamic": "strict",
            "properties": {
                "title@classifier": {
                    "store": "yes",
                    "type": "string",
                    "term_vector": "with_positions_offsets"
                },
                "description@classifier": {
                    "store": "yes",
                    "type": "string",
                    "term_vector": "with_positions_offsets"
                }
            }
        }
    }
}'
curl -XPUT "localhost:9200/test-idx/good/1?parent=2&routing=abc&pretty" -d '{
    "group@good": "d836724e-09bd-11e1-b3c8-0024e8660f34"
}'

curl -XPUT "localhost:9200/test-idx/catalogue/2?parent=2fbee9ce-a8a4-11de-a2f3-000c298dc26a&routing=abc&pretty" -d '{
}'

curl -XPUT "localhost:9200/test-idx/classifier/2fbee9ce-a8a4-11de-a2f3-000c298dc26a?routing=abc&pretty" -d '{
}'

curl -XPOST "localhost:9200/test-idx/_refresh?pretty"

curl -XGET "localhost:9200/test-idx/_search?pretty" -d '{
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "group@good": "d836724e-09bd-11e1-b3c8-0024e8660f34"
                    }
                },
                {
                    "has_parent": {
                        "parent_type": "catalogue",
                        "query": {
                            "has_parent": {
                                "parent_type": "classifier",
                                "query": {
                                    "ids": {
                                        "values": [
                                            "2fbee9ce-a8a4-11de-a2f3-000c298dc26a"
                                        ]
                                    }
                                }
                            }
                        }
                    }
                }
            ]
        }
    }
}'
```

---

<div class="post-metadata">

**Author:** ![Dimous](https://avatars.discourse-cdn.com/v4/letter/d/f08c70/32.png) [@Dimous](https://discuss.elastic.co/u/Dimous)\
**Post date:** [September 29, 2015, 4:02am UTC](https://discuss.elastic.co/t/es-3-0-0-snapshot-has-parent/30079/3 "2015-09-29T04:02:55Z")

</div>

Выполнил ваши скрипты и получил результат. Потом выполнил этот запрос на реальных данных и тоже получил результат 😄 Начал искать отличия. **Я указывал тип документов результата в url**. Такой запрос ничего не вернёт:

```
GET /test-idx/good/_search?pretty
{
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "group@good": "d836724e-09bd-11e1-b3c8-0024e8660f34"
                    }
                },
                {
                    "has_parent": {
                        "parent_type": "catalogue",
                        "query": {
                            "has_parent": {
                                "parent_type": "classifier",
                                "query": {
                                    "ids": {
                                        "values": [
                                            "2fbee9ce-a8a4-11de-a2f3-000c298dc26a"
                                        ]
                                    }
                                }
                            }
                        }
                    }
                }
            ]
        }
    }
} 

```

**В боевой 2.0.0-beta2 всё продолжает работать и на пятничной сборке 3.0.0 тоже**. То есть поведение всё-таки изменилось? Теперь не нужно указывать тип результата? Или это баг?

---

<div class="post-metadata">

**Author:** ![Dimous](https://avatars.discourse-cdn.com/v4/letter/d/f08c70/32.png) [@Dimous](https://discuss.elastic.co/u/Dimous)\
**Post date:** [September 29, 2015, 8:44am UTC](https://discuss.elastic.co/t/es-3-0-0-snapshot-has-parent/30079/4 "2015-09-29T08:44:09Z")

</div>

Всё понятно!  
Правила стали жёстче. Теперь нужно указывать все типы, перечисленные в запросе - /test-idx/good,catalogue,classifier/\_search

---

<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:** [September 29, 2015, 10:03am UTC](https://discuss.elastic.co/t/es-3-0-0-snapshot-has-parent/30079/5 "2015-09-29T10:03:14Z")

</div>

Нет, похоже, что это все-таки баг.

---

<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:** [September 30, 2015, 10:25am UTC](https://discuss.elastic.co/t/es-3-0-0-snapshot-has-parent/30079/6 "2015-09-30T10:25:47Z")

</div>

Починили - [https://github.com/elastic/elasticsearch/pull/13863](https://github.com/elastic/elasticsearch/pull/13863)

---

<div class="post-metadata">

**Author:** ![Dimous](https://avatars.discourse-cdn.com/v4/letter/d/f08c70/32.png) [@Dimous](https://discuss.elastic.co/u/Dimous)\
**Post date:** [September 30, 2015, 12:14pm UTC](https://discuss.elastic.co/t/es-3-0-0-snapshot-has-parent/30079/7 "2015-09-30T12:14:26Z")

</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:** [July 6, 2017, 1:51pm UTC](https://discuss.elastic.co/t/es-3-0-0-snapshot-has-parent/30079/8 "2017-07-06T13:51:06Z")

</div>


