Есть ли способ агрегировать только определенные вложенные документы - PullRequest
0 голосов
/ 08 июля 2019

У меня есть такой документ, где взаимодействиеInfo - это вложенный документ. Мне нужно найти агрегат только для Заголовка (Сегментов), а не для Заголовка (Порядка)

{
    "interactionId": "a26617a0-0530-4b41-9db6-4ca53e83e63e",
    "interactionInfo": [
      {
        "title": "segments",
        "value": "1"
      },
      {
        "title": "Order",
        "value": "2"
      }
    ]
  },
  {
    "interactionId": "a26617a0-0530-4b41-9db6-4ca53e83e63e",
    "interactionInfo": [
      {
        "title": "segments",
        "value": "4"
      },
      {
        "title": "Order",
        "value": "3"
      }
    ]
  }
]

Это агрегация, которую я сделал

 "aggs": {
    "InteractionInfo": {
      "nested": {
        "path": "interactionInfo"
      },
      "aggs": {
        "interactionInfoFilter": {
          "filter": {
            "term": {
              "interactionInfo.title.keyword": "segments"
            }
          },
          "aggs": {
            "SUM": {
              "sum": {
               "script": "Integer.parseInt(doc['interactionInfo.value.keyword'].value)"
              }
            }
          }
        }
      }
    }
  }

Ответ, который я получил для вышеупомянутой агрегации, был

"aggregations": {
    "InteractionInfo": {
      "doc_count": 6,
      "interactionInfoFilter": {
        "doc_count": 0,
        "SUM": {
          "value": 0
        }
      }
    }
  }

То, что я ожидаю, это вернуть только агрегат для заголовка (сегментов), т.е. значение должно быть 5, но его возвращение 0 Есть ли другой способ найти агрегат только по названию (сегменты)

...