2017-07-03 2 views
0

Ich habe die Daten in folgendem Format:elasticsearch_dsl: Filter durch verschachteltes Feld

{_source:"@fields": { 
      "code": 200, 
      "relativeCreated": 5969784.005880356, 
      "process": 16, 
      "module": "run", 
      "funcName": "main", 
      "threadName": "MainThread", 
      "filename": "run.py", 
      "levelno": 20, 
      "processName": "MainProcess", 
      "lineno": 210, 
      "node": "4", 
      "thread": 19255376, 
      "package": 977, 

     } 
} 

Und was ich tun möchte, ist einen Filter, um nur Elemente zu bekommen, wo Paket 977. Versucht Folgendes zu tun search.filter("term", **{'@fields.package': 937}) Aber es scheint nichts zu filtern.

Antwort

0

Wenn das Feld Paket innerhalb @fields verschachtelt ist dann könnten Sie verschachtelte Filter verwenden müssen, überprüfen Sie die Zuordnung und bestätigen Sie über den Feldtyp, für verschachtelte Filter Sie es auf diese Weise implementieren können:

search.filter("nested", path = '@fields' filter=F('term', '@fields.package': 937)) 
Verwandte Themen