Elasticsearch: вычислить метри c условий агрегации? - PullRequest
0 голосов
/ 12 февраля 2020

Как я могу вычислить метрику c agg для buckets термина agg в ES?

Вот пример для создания данных:

curl -X PUT "localhost:9200/agg_avg?pretty" -H 'Content-Type: application/json' -d'
{
    "mappings" : {
        "_doc" : {
            "properties" : {
                "state" : { "type" : "keyword" },
                "city" : { "type" : "keyword" }
            }
        }
    }
}
'

for i in $(seq 1 10); do
curl -X PUT "localhost:9200/agg_avg/_doc/10${i}?pretty" -H 'Content-Type: application/json' -d'
{
    "state": "CA",
    "city": "LA" 
}
'   
done
for i in $(seq 1 5); do
curl -X PUT "localhost:9200/agg_avg/_doc/20${i}?pretty" -H 'Content-Type: application/json' -d'
{
    "state": "CA",
    "city": "SF" 
}
'   
done
for i in $(seq 1 8); do
curl -X PUT "localhost:9200/agg_avg/_doc/30${i}?pretty" -H 'Content-Type: application/json' -d'
{
    "state": "UT",
    "city": "SLC"
}
'   
done
for i in $(seq 1 9); do
curl -X PUT "localhost:9200/agg_avg/_doc/40${i}?pretty" -H 'Content-Type: application/json' -d'
{
    "state": "UT",
    "city": "Provo"
}
'
done

И затем запрос сделать условия agg:

curl -X GET "localhost:9200/agg_avg/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "size": 0,
  "aggs": {
    "windows": {
      "terms": {
        "field": "state",
        "size": 10
      },
      "aggs": {
        "window_count": {
          "terms": {
            "field": "city",
            "size": 10
          } 
        } 
      } 
    } 
  } 
} 
'

С этим ответом:

{
  "took" : 8,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 30,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "windows" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "CA",
          "doc_count" : 15,
          "window_count" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [
              {
                "key" : "LA",
                "doc_count" : 10
              },
              {
                "key" : "SF",
                "doc_count" : 5
              }
            ]
          }
        },
        {
          "key" : "UT",
          "doc_count" : 15,
          "window_count" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [
              {
                "key" : "SLC",
                "doc_count" : 8
              },
              {
                "key" : "Provo",
                "doc_count" : 9
              }
            ]
          }
        }
      ]
    }
  }
}

И я хочу вычислить среднее значение для "key": "CA" из 7.5 и "key": "UT" из 8.5

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