вложенный в вложенную агрегацию в поиска - PullRequest
0 голосов
/ 30 апреля 2018

как агрегировать значение во вложенном во вложенном положении вasticsearch? у меня нет проблем с одним вложенным объектом, но в гнезде внутри вложенного объекта я путаюсь ...

образец данных:

"cat_a": [
      {
        "position": "base",
        "tools": [
          "inside",
          "out"
        ],
        "entry": [
          {
            "tx_a": "inside",
            "rx_a": [
              "soft_1",
              "soft_2",
              "soft_3",
              "soft_4"
            ],
            "number": 0.018
          },
          {
            "tx_a": "out",
            "rx_a": [
              "soft_1",
              "soft_3",
              "soft_5",
              "soft_7"
            ],
            "number": 0.0001
          }
        ],
        "basic": true
      }
    ]

желаемый результат:

{
"aggregations": {
        "sample_agg": {
            "count": {
                "buckets": [
                    {
                        "key": "soft_1",
                        "doc_count": 2
                    },
                    {
                        "key": "soft_3",
                        "doc_count": 2
                    },
                    {
                        "key": "soft_2",
                        "doc_count": 1
                    }
                ]
            }
        }
    }
}

моя версия эластичного поиска - 6.2.3. в отображении индекса я устанавливаю тип полей "cat_a" и "entry" на "вложенные", когда я запрашиваю агрегат из поля "tools", в корне (уровень 1) "cat_a" нет проблем, и он работает, но в агрегации на rx_a (это на уровне 2) я не могу получить результат, он либо пуст, либо показал ошибку из-за моего неверного запроса.

запрос для уровня 1 agg:

{
    "aggs" : {
        "sample_agg" : {
            "nested" : {
                "path" : "cat_a"
            },
            "aggs" : {
                "count" : { "terms" : { "field" : "cat_a.rx_a.keyword" ,"size":10} }
            }
        }
    }
}

как мне сделать для вложенных во вложенных?

1 Ответ

0 голосов
/ 01 мая 2018

Elasticsearch допускает несколько уровней вложенности. Предполагая, что в вашем отображении определена правильная вложенность, просто измените путь на cat_a.entry и в поле cat_a.entry.rx_a.keyword.

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