Как я могу использовать родной путь родителя в bucket_script? - PullRequest
0 голосов
/ 21 ноября 2018

Я хочу использовать путь родного брата родителя в bucket-script, DSL вот так:

{
  "size": 0, 
  "aggs": {
    "car_type": {
      "terms": {
        "field": "screenName",
        "size": 10
      },
      "aggs": {
        "active_num": {
          "terms": {
            "field": "activeNum",
            "size": 10
          },
          "aggs": {
            "active_count": {
              "value_count": {
                "field": "activeNum"
              }
            },
            "result" : {
              "bucket_script": {
                "buckets_path": {
                  "count1" : "car_type>all_count",
                  "count2" : "active_count"
            },
                "script": "params.count2/params.count1"
              }
            }
          }
        },
        "all_count": {
          "value_count": {
            "field": "activeNum"
          }
        }
      }
    }
  }
}

Я хочу использовать all_count в result, но es выдаст исключение:

Агрегация не найдена для пути [car_type> all_count]

Затем я меняю место для использования bucket_script, например:

{
  "size": 0, 
  "aggs": {
    "car_type": {
      "terms": {
        "field": "screenName",
        "size": 10
      },
      "aggs": {
        "active_num": {
          "terms": {
            "field": "activeNum",
            "size": 10
          },
          "aggs": {
            "active_count": {
              "value_count": {
                "field": "activeNum"
              }
            }
          }
        },
        "all_count": {
          "value_count": {
            "field": "activeNum"
          }
        },
        "result" : {
          "bucket_script": {
             "buckets_path": {
                "count1" : "all_count",
                "count2" : "active_num>active_count"
              },
              "script": "params.count2/params.count1"
          }
        }
      }
    }
  }
}

, ноЯ получаю еще одно исключение:

buckets_path должен ссылаться либо на числовое значение, либо на агрегирование числовой метрики одного значения, получено: java.lang.Object []

Я нашелна официальной странице сайта, но я ничего не получаю.Как я могу использовать этот bucket_path?

1 Ответ

0 голосов
/ 21 декабря 2018

Использование следующего метода может решить некоторые проблемы:

{
  "size": 0, 
  "aggs": {
    "car_type": {
      "terms": {
        "field": "screenName",
        "size": 10
      },
      "aggs": {
        "active_num": {
          "filter": {
            "term": {
            "activeNum": "1"
            }
          },
          "aggs": {
            "active_count": {
              "value_count": {
                "field": "activeNum"
              }
            }
          }
        },
        "all_count": {
          "value_count": {
            "field": "activeNum"
          }
        },
        "result" : {
          "bucket_script": {
             "buckets_path": {
                "count1" : "all_count",
                "count2" : "active_num>active_count"
              },
              "script": "params.count2/params.count1"
          }
        }
      }
    }
  }
}

Но все еще есть некоторые проблемы, этот метод может получить результат только одного значения, не может получить каждое значение этого поля.Итак, у кого есть другие идеи?

...