I started using the python library elasticsearch-dsl.
I am trying to implement a parent-child relationship but it is not working:
    class Location(DocType):
        name = String(analyzer='snowball', fields={'raw': String(index='not_analyzed')})
        latitude = String(analyzer='snowball')
        longitude = String(analyzer='snowball')
        created_at = Date()
   class Building(DocType):
       parent = Location()
                elasticsearch-dsl has parent-child relationship built in 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 it's child.save(id=child_id, routing=parent_id)
  - Dictionary insert: specify '_parent': parent_id in dictionary  
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With