elasticsearch_dsl:按嵌套字段过滤

时间:2017-07-03 19:46:33

标签: python elasticsearch-dsl

我有以下格式的数据:

{_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,

      }
}

我想做的是制作一个过滤器,只获取包为977的项目。正在尝试执行以下操作search.filter("term", **{'@fields.package': 937}) 但它似乎没有过滤任何东西。

1 个答案:

答案 0 :(得分:0)

如果 @fields 中的字段嵌套,那么您可能必须使用嵌套过滤器,检查映射并确认字段类型,对于嵌套过滤器,您可以以这种方式实现它:

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