Elasticsearch DSL многоуровневый родительский запрос

Я использую Elastisearch 5.x и Python с asticsearch-dsl 5.2.0

Мне нужно начать запрашивать у ребенка, взять несколько полей, сопоставить их с определенными отцом и дедом (из которого дедушка мне также нужно значение поля)

Проблема в том, что в моих результатах поиска дедушка inner_hits пуст. Я мог бы действительно использовать подсказку здесь.

search = Child.search().source(
    includes=['a', 'b']
).filter(
    'term', child_id=child_id
).query(
    'has_parent',
    type='father',
    inner_hits={'name': 'father'},
    query=Q(
        Q('term', id=father_id) &
        Q(
            'has_parent',
            type='grandfather',
            inner_hits={'name': 'grandfather'},
            query=Q('term', _id=grandfather_id)
        )
    )
)


class Child(DocType):
    child_id = Keyword()
    a = Keyword()
    b = Keyword()

    class Meta:
        doc_type = 'child'
        parent = MetaField(type='father')

class Father(DocType):
    id = Integer()

    class Meta:
        doc_type = 'father'
        parent = MetaField(type='grandfather')

class Grandfather(DocType):
    grandfather_id = String()
    grandfatherFieldNeeded = String() 

    class Meta:
        doc_type = 'grandfather'
        parent = MetaField(type='notimportant')

0 ответов

Другие вопросы по тегам