【问题标题】:elasticsearch_dsl: Filter by nested fieldelasticsearch_dsl:按嵌套字段过滤
【发布时间】:2017-07-03 19:46:33
【问题描述】:

我有以下格式的数据:

{_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}) 但它似乎没有过滤任何东西。

【问题讨论】:

    标签: python elasticsearch-dsl


    【解决方案1】:

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

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

    【讨论】:

    • 那个 F 来自哪里?从 elasticsearch-dsl 导入?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多