我如何在 Apache NiFi 中使用 Query Marklogic 处理器在结构化查询中使用 variable/function?
How can i use variable/function in structured query using Query Marklogic processor in Apache NiFi?
我想在 marklogic 中查询集合中最近 3 分钟更新的文档。
我曾尝试为该要求编写结构化查询,但它只接受 dateTime 的硬编码值,而不接受 fn:current-dateTime() 函数。以下是我尝试过的。
<query xmlns="http://marklogic.com/appservices/search">
<and-query>
<collection-query>
<uri>live</uri>
</collection-query>
<range-query type="xs:dateTime">
<element ns="" name="created-on"/>
<value>2019-06-10T10:36:14.002101Z</value>
<range-operator>GT</range-operator>
</range-query>
</and-query>
</query>
我期待这样的结果 -
<query xmlns="http://marklogic.com/appservices/search">
<and-query>
<collection-query>
<uri>live</uri>
</collection-query>
<range-query type="xs:dateTime">
<element ns="" name="created-on"/>
<value>{fn:current-dateTime() - xs:dayTimeDuration("PT3M")}</value>
<range-operator>GT</range-operator>
</range-query>
</and-query>
</query>
您可以使用 Expression Language 在 QueryMarklogic
处理器的 Query 属性 中以任何格式填充当前时间。
类似于:
<query xmlns="http://marklogic.com/appservices/search">
<and-query>
<collection-query>
<uri>live</uri>
</collection-query>
<range-query type="xs:dateTime">
<element ns="" name="created-on"/>
<value>${now():minus(180000):format('YYYY-MM-dd HH:mm:ss.SSS')}</value>
<range-operator>GT</range-operator>
</range-query>
</and-query>
</query>
该表达式通过 now()
获取当前时间,通过 minus()
减去 3 分钟(3 分钟 * 60 seconds/min * 1000 milliseconds/second = 180000 毫秒),以及然后以特定格式表示日期。您可以使用 Java SimpleDateFormat
codes 将输出更改为您需要的任何内容。
我想在 marklogic 中查询集合中最近 3 分钟更新的文档。
我曾尝试为该要求编写结构化查询,但它只接受 dateTime 的硬编码值,而不接受 fn:current-dateTime() 函数。以下是我尝试过的。
<query xmlns="http://marklogic.com/appservices/search">
<and-query>
<collection-query>
<uri>live</uri>
</collection-query>
<range-query type="xs:dateTime">
<element ns="" name="created-on"/>
<value>2019-06-10T10:36:14.002101Z</value>
<range-operator>GT</range-operator>
</range-query>
</and-query>
</query>
我期待这样的结果 -
<query xmlns="http://marklogic.com/appservices/search">
<and-query>
<collection-query>
<uri>live</uri>
</collection-query>
<range-query type="xs:dateTime">
<element ns="" name="created-on"/>
<value>{fn:current-dateTime() - xs:dayTimeDuration("PT3M")}</value>
<range-operator>GT</range-operator>
</range-query>
</and-query>
</query>
您可以使用 Expression Language 在 QueryMarklogic
处理器的 Query 属性 中以任何格式填充当前时间。
类似于:
<query xmlns="http://marklogic.com/appservices/search">
<and-query>
<collection-query>
<uri>live</uri>
</collection-query>
<range-query type="xs:dateTime">
<element ns="" name="created-on"/>
<value>${now():minus(180000):format('YYYY-MM-dd HH:mm:ss.SSS')}</value>
<range-operator>GT</range-operator>
</range-query>
</and-query>
</query>
该表达式通过 now()
获取当前时间,通过 minus()
减去 3 分钟(3 分钟 * 60 seconds/min * 1000 milliseconds/second = 180000 毫秒),以及然后以特定格式表示日期。您可以使用 Java SimpleDateFormat
codes 将输出更改为您需要的任何内容。