эластичный поиск, как агрегировать на ранее рассчитанных полях - PullRequest
0 голосов
/ 06 ноября 2019

Я, наверное, не задаю правильный вопрос. Итак, вот что у меня есть.

и данные индекса доходов и данные индекса затрат

Я агрегирую данные о доходах, подобные этим

        "revenue": {
          "filter": {
            "term": {
              "_index": "sales*"
            }
          },
          "aggs": {
            "amount": {
              "sum": {
                "field": "amount",
                "missing": 0.0
              }
            }
          }
        },

, и агрегируюПодобные данные о стоимости

        "cost": {
          "filter": {
            "term": {
              "_index": "leads*"
            }
          },
          "aggs": {
            "amount": {
              "sum": {
                "field": "amount",
                "missing": 0.0
              }
            }
          }
        },

Я хочу рассчитать чистый доход.

revenue - cost

, но так как они находятся в разных единицах, я пытаюсь выполнить сценарий иЯ думаю о том, как мне сказать, чтобы я считал сумму положительной, если она из одного индекса, и отрицательной, если она из другого?

        "net_revenue": {
          "sum": {
            "script": "(if (doc._index like 'sales*') doc.amount else -doc.amount)"
          }
        }

Я просто плюю здесь, но любая помощь приветствуется.

...