【问题标题】:elasticsearch-DSL lib set default value for Text field on saving Documentelasticsearch-DSL 库在保存文档时为文本字段设置默认值
【发布时间】:2018-08-31 12:28:35
【问题描述】:

我们如何检查来自 elasticsearch-DSL 库的 Field 对象(例如 Text、Integer、Keyword)是否不包含任何值,比如 None 或空字符串?在这种情况下,我需要在将 Document 保存到 ES 之前,使用某种默认但动态的值设置 Document 对象中的字段。谢谢。

【问题讨论】:

    标签: python elasticsearch elasticsearch-dsl elasticsearch-dsl-py


    【解决方案1】:

    最简单的方法是重写 save() 方法并在那里执行,您可以在此处查看它的示例:https://github.com/elastic/elasticsearch-dsl-py/blob/master/examples/parent_child.py#L84-L85

    【讨论】:

    • 由于该字段是用 Field 对象初始化的,我预计“如果 my_field 为 None:”将评估为 False。令人惊讶的是,我刚刚对其进行了测试,结果却变成了 True。由于链接中的代码暗示我的理解不正确,因此我认为将其标记为答案是公平的。
    【解决方案2】:

    我认为当前的实现是不可能的。详情请见here。但是,如果您使用的是 elasticsearch rest 客户端,您可以添加逻辑以在保存之前生成一些随机字符串/数字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 2014-09-13
      • 2013-03-29
      • 2011-08-25
      • 1970-01-01
      • 2016-02-25
      • 2023-03-12
      相关资源
      最近更新 更多