如何使用elasticseach的node.js客户端聚合现有字段?

我具有这样的数据结构:

{
  _id: 'aero',mobile: '646-444-6666',mail: 'aero@aero.wang'
  'service-name-1': ['type1','type2','type3'],'service-name-2': ['type1','type2'],'service-name-3': ['type2','type3']
}

我的目标是根据服务名称和类型安排作业,并将结果发送到用户的邮件和手机。挑战在于,多个用户可以具有相同的服务名称和类型,而我只想运行一个计划作业并通知所有用户。

所以我想出了这样的解决方案:

const client = require('./lib/esclient');
const schedule = require('node-schedule')

schedule.scheduleJob('0 0 * * *',() => {
  const fields = await client.search({
    index: 'docs',body: {
      aggs: {
        // aggregate existing fileds
      }
    }
  });
  const filedsAndTypes = await client.search({
    index: 'docs',body: {
      aggs: {
        // based on fields and aggregate fields and type and users who should be notified
      }
    }
  });
  const notifyTheUsers = async fieldsAndTypes => {
    for (let fieldAndtype in fieldsAndTypes) {
      const result = await doTheJob(fieldAndtype);
      const listOfUsers = fieldsAndTypes[fieldAndtype];
      email(listOfUsers,result);
      for (let user of listOfUsers) {
        sms(user,result);
      }
    }
  }
});

上面显然是伪代码。*

问题是我无法为使用Elasticsearch的字段进行汇总(另外,我还必须只能获取任何文档中存在的字段,一个用户可以是唯一一个说服务一的用户,而他可以取消订阅该服务,因此将服务一完全取消订阅,在这种情况下,将取消对服务一的订阅,该字段已定义,我不想在结果中使用它。

如果这实际上是不可能的话。随时提出可以实现我的目标的新数据结构。

holly00 回答:如何使用elasticseach的node.js客户端聚合现有字段?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3130122.html

大家都在问