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')