【问题标题】:extract elasticsearch date from a <start-date>/<duration> XBRL-JSON format从 <start-date>/<duration> XBRL-JSON 格式中提取 elasticsearch 日期
【发布时间】:2016-05-01 17:00:01
【问题描述】:

我正在使用 elasticsearch 存储 XBRL JSON。

This xBRL-JSON OIM spec 描述了oim:period 属性:

否则,代表 {interval} 的 ISO 8601 时间间隔 属性,以下列形式之一表示:

/

/

/

其中根据xsd:dateTime数据类型有效,根据xsd:duration有效。

arelle's plugin 的示例如下所示:

  • 2016-01-01T00:00:00/PT0S
  • 2015-01-01T00:00:00/P1Y

我注意到 arelle 的插件专门生成这种格式:

  • /

我的问题

有没有办法在 elasticsearch 中至少将 &lt;start&gt; 部分保存为日期类型?

我的想法:

仅弹性搜索(我的偏好)

  • 使用 自定义日期格式,该格式预期 /&lt;duration&gt; 部分,但忽略它
    • 我还没有检查 Joda;如果日期格式中的字符不是特殊字符的一部分,它会忽略字符吗?像“/”分隔符或任何持续时间值之前的“P”(如上面的PT0SP1Y)?
    • EDIT 所以单引号字符转义文字;这工作yyyy'/P' 将接受一个值'2015/P'。但是,其余的持续时间可能会更加动态
    • 回复:动态; Joda 会接受正则表达式或通配符,如“\d”或“+”限定符,以便我可以忽略 所有P 之后的可能变化吗?
  • 使用字符过滤器去除/&lt;duration&gt;部分,然后只保存&lt;start&gt;作为日期时间。但我不知道字符过滤器是否发生之前保存为类型:日期。如果他们不这样做,'/` 部分不会被剥离,我也不会传递有效的日期字符串。
  • 不要使用日期类型:使用模式tokenizer/上拆分,至少这两部分会保存为单独的token。但不能使用日期数学。
  • 使用转换;尽管这似乎已被弃用。我读到了关于使用 copy_to 的信息,但这似乎合并术语,我想打破这个术语
  • 某种插件?也许一个插件将完全支持 OIM 规范描述的这种“间隔”数据类型......也许一个插件将存储其单独的部分......?

更改我的应用程序(如果可能,我更喜欢使用仅弹性搜索技术)

  • 我可以编辑这个插件或制作我自己的插件,它只使用&lt;start&gt;&lt;end&gt; 部分,并将两者保存到单独的字段中;
    • 但这违反了 OIM 规范,该规范规定它们应该组合在一个单个字段中
    • 此外,表达“即时”事实可能很尴尬(没有持续时间;上面的PT0S 示例);我想我只是对end 属性使用与start 属性相同的值......我猜这并不比0 长度持续时间(PT0S)更尴尬。

【问题讨论】:

    标签: datetime elasticsearch arelle


    【解决方案1】:

    不是一个直接的答案,但值得注意的是,xBRL-JSON 规范的最新内部草案已经脱离了单字段表示。尽管“/”分隔符号是 ISO 标准,但对它的工具支持似乎极差,因此工作组选择切换到开始日期和结束日期的单独字段。我希望阿雷尔的支持会在适当的时候效仿。

    【讨论】:

    • 谢谢保罗。那会让我的问题变得毫无意义。自发布原始问题以来我考虑的其他可能性:1)使用logstash并创建一个自定义logstash过滤器,它允许我按照我想要的方式转换JSON。 2) 创建名为duration in time、ala attachments 的自定义弹性搜索类型,尤其是如果我可以指定语义,例如查询它们(查找“季度”(约 3 个月)的所有事实)。如果我尝试其中之一,我会让每个人都知道。
    • 我在latest spec 中看到我们不再使用ISO 8601 格式——取而代之的是xbrl:startDatexbrl:endDate 是单独的JSON 属性,如果两者都存在则推断持续时间。所以我的用例没有实际意义,但也许其他人会有类似的问题或答案(即:解析自定义文本格式的内容以便存储在弹性搜索中,我可能应该概括问题......)
    猜你喜欢
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 2016-12-11
    • 2023-04-03
    • 1970-01-01
    • 2023-01-03
    • 2021-01-23
    • 1970-01-01
    相关资源
    最近更新 更多