Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取值数组的弹性搜索查询 - Fatal编程技术网

获取值数组的弹性搜索查询

获取值数组的弹性搜索查询,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,Hi编写了一个查询,用于获取弹性搜索中某个位置的平均值 弹性搜索有效负载:“用户数据”:[{“子”:1234,“值”:678,“条件”:“A”},{“子”:1234,“值”:678,“条件”:“B”}] { "aggs": { "student_data": { "date_histogram": { "field":"@timestamp", "calendar_interval":"minute" },

Hi编写了一个查询,用于获取弹性搜索中某个位置的平均值 弹性搜索有效负载:“用户数据”:[{“子”:1234,“值”:678,“条件”:“A”},{“子”:1234,“值”:678,“条件”:“B”}]

{ 
  "aggs": { 
    "student_data": { 
      "date_histogram": { 
        "field":"@timestamp",
        "calendar_interval":"minute"
      },
      "aggs": { 
        "user_avg": { 
          "avg": { 
            "field":"value"
          }
        }
      }
    }
  }
}
我想要的是得到返回avg值的元素数组。 例如,如果基于条件“A”的值的平均值为42,值为{20,10,40,60,80}


在需要的输出中,有一个字段可以提供[20,10,40,60,80]

的数组,我不认为在查询响应中可以获得格式类似于
[20,10,40,60,80]
的数组。我想不出通过使用聚合或脚本字段来获得它的方法。然而,您可以很容易地(1)从指定聚合和筛选逻辑的同一查询中获取该信息;然后,(2)对查询响应进行后期处理,收集所有用于计算平均值的
值,方法是按您喜欢的格式格式化这些值。如何对响应进行后期处理取决于用于向Elasticsearch发送查询的客户端/脚本

例如,可以将用于计算平均值的值输出为查询命中数

{
  "size": 100,           <-- adjust this upper limit to your use case 
  "_source": "value",    <-- include only the `value` field in the response
  "query": {
    "match": {
      "condition": "A"
    }
  },
  "aggs": {
    "user_avg": {
      "avg": {
        "field": "value"
      }
    }
  }
}

我可以帮助你更清楚一点不幸的是,你的例子并没有让你的问题更清楚(数组[20,10,40,60,8]的平均值是240?)。此外,您还可以从聚合中按项删除筛选器,因为您已经在您的query@glenacota我已经更新了我的查询,请看一看,我想要计算平均值的元素数组。我面临的问题是,当我按照你说的做时,我得到了所有值的平均值,无论是与条件a还是条件B有关。此外,bucket由与条件A和条件B相关的值组成。您确定吗?这不是我期望从该查询中得到的结果,也不是我从测试中得到的结果。聚合对指定查询返回的数据进行操作()是的,我非常确定。原始查询由另一个匹配查询和范围查询组成,我猜我们需要查看原始查询,然后您的新查询以及上面的注释与原始问题(即如何显示用于计算平均值的值数组)有很大不同。虽然我的回答是针对您的原始问题,但它仍然可以根据您的更新进行调整。为了证明这一点,并确保我们在同一页上,我创建了以下要点,以适应您最近的更新:
{
  "size": 0,
  "_source": "value",
  "query": {
    "match": {
      "condition": "A"
    }
  },
  "aggs": {
    "group_by_values": {
      "terms": {
        "field": "value",
        "size": 100 .       <-- adjust this upper limit to your use case 
      }
    },
    "user_avg": {
      "avg": {
        "field": "value"
      }
    }
  }
}
"aggregations" : {
    "array_of_values" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : 50,
          "doc_count" : 2
        },
        {
          "key" : 60,
          "doc_count" : 1
        },
        {
          "key" : 100,
          "doc_count" : 1
        }
      ]
    },
    "user_avg" : {
      "value" : 65.0
    }
  }