elasticsearch-dsl has parent-child relationships built using MetaField :
class Location(DocType):
name = String(analyzer='snowball', fields={'raw': String(index='not_analyzed')})
latitude = String(analyzer='snowball')
longitude = String(analyzer='snowball')
created = Date()
class Meta:
doc_type = 'location'
class Building(DocType):
class Meta:
doc_type = 'building'
parent = MetaField(type='location')
How to insert and query (HT to @Maresh):
- DSL get: ChildDoc.get(id=child_id, routing=parent_id)
- DSL insert: I believe that child.save(id=child_id, routing=parent_id)
- Insert dictionary: specify '_parent': parent_idin the dictionary
source
share