如何在node-redis中使用ft.aggregate

问题描述 投票:0回答:2

我一直在尝试在node-redis中使用ft.aggregate,特别是APPLY,但我找不到任何好的例子。 另外,如果有人知道如何在 redis 中使用 parsetime 函数,我将不胜感激

对于解析时间问题,我尝试了下一个命令:

ft.aggregate idx:example * APPLY parsetime(@date) as date.

我不断得到: 错误:出了问题

对于node-redis问题:

redis.ft.aggregate('idx:example, '*',{STEPS:[{type:AggregateSteps.APPLY,

剩下的我不确定——我需要在表达式子句中写什么,as 也一样

redis node-redis
2个回答
2
投票

我对此进行了一些研究,并让它从命令行工作。我了解到有一些重要的花絮:

  1. 您需要在查询中加载要调用 APPLY 的字段。
  2. 您需要指定字符串的格式,并且无论出于何种原因,
    %FT%TZ
    都不起作用。
  3. 由于格式包含在引号中,因此您需要将整个 APPLY 参数括在引号中。

见下图:

redis.local> FT.AGGREGATE idx:example * LOAD 1 date APPLY "parsetime(@date, '%Y-%m-%dT%H:%M:%SZ')" as date

对于 Node Redis 代码,我能够让它工作:

const results = await redis.ft.aggregate('test:index', '*', {
  LOAD: [ 'date' ],
  STEPS: [{
    type: AggregateSteps.APPLY,
    expression: "parsetime(@date, '%Y-%m-%dT%H:%M:%SZ')",
    AS: 'date'
  }]
})

0
投票

没有像样的文档或示例代码。完全理解 redis.ft.aggregate() 的唯一方法是研究它的单元测试。

https://github.com/redis/node-redis/blob/d5355d43275fedf1b2afc4db8a926f72b05f79c5/packages/search/lib/commands/AGGREGATE.spec.ts#L6

© www.soinside.com 2019 - 2024. All rights reserved.