Как агрегировать для существующих полей с помощью клиента Flexibleseach's node.js? - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть такая структура данных:

{
  _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);
      }
    }
  }
});

Очевидно, псевдокод выше. *

Проблема в том, что я не могу агрегировать для полей сasticsearch (также мне нужно иметь возможность получать только те поля, которые существуют в любом из документов, один пользователь можетбудьте единственным пользователем, который скажет «service-one», и он может отказаться от подписки на услугу, поэтому оставив «service-one» полностью отписавшимся, в этом случае altho service-one поле было определено, и я не хотел бы, чтобы оно получалось в результате).

Также, если это действительно невозможно. Не стесняйтесь предлагать новые структуры данных, которые будут соответствовать моей цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...