Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
Lucene 使用elasticsearch对组中最新文档进行聚合_Lucene_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Aggregate - Fatal编程技术网 elasticsearch,aggregate,Lucene,elasticsearch,Aggregate" /> elasticsearch,aggregate,Lucene,elasticsearch,Aggregate" />

Lucene 使用elasticsearch对组中最新文档进行聚合

Lucene 使用elasticsearch对组中最新文档进行聚合,lucene,elasticsearch,aggregate,Lucene,elasticsearch,Aggregate,假设每个人都有几个包含值的文档: { "name": "John", "value": 1, "timestamp": 2014-06-15 } { "name": "John", "value": 2, "timestamp": 2014-06-16 } { "name": "Sam", "value": 2, "timestamp": 2014-06-15 } { "name": "Sam", "value": 3, "timestamp

假设每个人都有几个包含值的文档:

{
  "name": "John",
  "value": 1,
  "timestamp": 2014-06-15
}

{
  "name": "John",
  "value": 2,
  "timestamp": 2014-06-16
}

{
  "name": "Sam",
  "value": 2,
  "timestamp": 2014-06-15
}

{
  "name": "Sam",
  "value": 3,
  "timestamp": 2014-06-16
}

  • 如何获取每个人的最新文档列表
  • 如何获得每个人的最新文档列表的平均值?给定样本数据,这将是2.5,而不是2

  • 是否有一些桶和指标的组合可以实现这一结果?我需要实现一个自定义聚合器作为插件的一部分,还是必须在内存中执行这种计算?

    第二个操作只是一个聚合,要获得
    字段的平均值,您可以尝试以下操作:

    curl -XPOST "http://DOMAIN:9200/your/data/_search" -d'
    {
       "size": 0, 
       "aggregations": {
          "the_name": {
             "terms": {
                "field": "name",
                "order": {
                   "value_avg": "desc"
                }
             },
             "aggregations": {
                "value_avg": {
                   "avg": {
                      "field": "value"
                   }
                }
             }
          }
       }
    }'
    

    为了解决您的第一个问题,我建议您按日期排序响应,然后在您的项目中忽略另一个名称相同的术语(意思是在ES响应后过滤数据)

    如果您只需要查找最新的
    人员
    尝试以下方法:

    “aggs”:{
    “人名”:{
    “条款”:{
    “字段”:“名称”,
    “尺寸”:5,
    “顺序”:{“timeCreated”:“desc”}
    },
    “aggs”:{
    “创建时间”:{
    “max”:{“field”:“timestamp”}
    }
    }
    }
    }
    
    您就不能按时间戳字段排序吗?这似乎是一个相关的案例,而不是聚合和排序将在5年前完成,我有完全相同的问题。肖恩,你解决了吗?好的。我希望避免在客户端或通过插件手动筛选文档(以避免网络开销),但在这种情况下,这似乎是不可能的。您可以制作一个小型python脚本(python或任何其他语言),并通过脚本进行查询。类似于:
    receive\u query\u string->make the query->get the response->Filter the response->return required results
    为什么要将大小设为5@NeluMalancea@emarel,因为我只需要显示最新的5。