当前位置: 首页 > 面试题库 >

Elastic(搜索):使用最大和最小时间戳值获取文档

锺离阿苏
2023-03-14
问题内容

我在搜索时遇到问题,只是不知道该怎么做。我的文档具有以下形式:

{
"timestamp":"2015-03-17T15:05:04.563Z",
"session_id":"1",
"user_id":"jan"
}

假设会话ID的第一个时间戳是“登录”,最后一个时间戳是“注销”。我希望所有会话都具有所有“登录”和“注销”文档(如果可能,请按排序user_id)。我设法通过聚合获得正确的时间戳:

{
"aggs" : {
    "group_by_uid" : {
        "terms" : { 
            "field" : "user_id"
        },
        "aggs" : {
            "group_by_sid" : {
                "terms" : {
                    "field" : "session_id"
                },
                "aggs" : {
                    "max_date" : {
                        "max": { "field" : "timestamp" }
                    },
                    "min_date" : {
                        "min": { "field" : "timestamp" }
                    }
                }
            }
        }
    }
}
}

但是我如何获得相应的文档?我也不介意我是否必须进行2次搜索(一次用于登录,一次用于注销)。我尝试了热门热门文章的汇总和排序工作,但是我总是会遇到解析错误:/

我希望有人能给我一个提示:)

最好的问候,扬


问题答案:

这是基于Sloan Ahrens提出的方法的一次搜索解决方案。好处是开始和结束会话条目位于同一存储桶中。

{
"aggs": {
  "group_by_uid": {
     "terms": {
        "field": "user_id"
     },
     "aggs": {
        "group_by_sid": {
           "terms": {
              "field": "session_id"
           },
           "aggs": {
              "session_start": {
                 "top_hits": {
                    "size": 1,
                    "sort": [ { "timestamp": { "order": "asc" } } ]
                 }
              },
              "session_end": {
                 "top_hits": {
                    "size": 1,
                    "sort": [ { "timestamp": { "order": "desc" } } ]
                 }
              }
           }
        }
     }
  }
}
}

一月干杯



 类似资料:
  • 我有一个包含一些价格值的数据帧。不,我想有一个或最好的情况下有两个数据框,每篇文章的最大值和最小值没有 0 个值。 我用DT这样做(对于maxValue,一切都很完美): 但minValue Df显示0值。我也尝试过: 但是在这里我不知道如何使用 在最好的情况下,我希望每个产品的最大值和最小值都有dfs。

  • 本文向大家介绍在Javascript二进制搜索树中搜索最小值和最大值,包括了在Javascript二进制搜索树中搜索最小值和最大值的使用技巧和注意事项,需要的朋友参考一下 在二元搜索树中,如果我们查看左孩子总是比父孩子小的属性,我们会发现,如果继续向左孩子迭代直到到达没有左孩子的节点,我们基本上会发现BST中最小的元素。 让我们在代码中实现此功能。从现在开始,我们将仅实现该函数的单个版本,即迭代或

  • 问题内容: 如何在0(1)时间复杂度的任何时间从队列中检索max和min元素?早些时候,我使用Collections.max和min查找元素,但这将是0(n)。 问题答案: 您只有2种方法来获得最小/最大操作的O(1): 如果结构已排序,并且您知道最大值/最小值位于何处 如果结构未排序且仅允许插入:每次插入项目并分别存储值时,您可以重新计算最小值/最大值 如果结构未排序并且允许插入和删除:我认为您

  • 问题内容: 我正在尝试编写一个查询,每天从价格明细表中获取每个商品的最低和最高价格。 在价格明细表中,每天设置多次价格,因此同一日期有很多记录。因此,我想要一个表,其中每个日期都有一行,然后将该表连接到同一张表,因此对于每个不同的日期,我都需要最小值和最大值。 SQL查询 概括 餐桌在同一天设定了许多价格。想要每个交易所报价的每天的最小值和最大值。 谢谢 问题答案: 一个简单的应该工作: 不知道为

  • 问题内容: 我有一个像这样的数组: 我需要提取最小和最大的权重值。在这个例子中 $ min_value = 175 $ max_value = 200 有什么帮助吗?谢谢 ! 问题答案: 选项1. 首先,您映射该数组以获取这些数字(而不是全部详细信息): 然后得到最小和最大: 选项2。 (仅当您没有PHP 5.5或更高版本时)与选项1相同,但要选择值,请使用: 选项3。 选项4。 如果您只需要一个

  • 问题内容: 给定NumPy矩阵(2D数组),返回数组中的最小值/最大值(及其索引)的有效方法是什么? 目前我有: 这比用于生成要在其上运行数组的图像模板匹配算法要长三倍,而我认为这很愚蠢。 问题答案: 从另一个答案开始,NumPy添加了和函数进行部分排序,使您可以及时执行此操作,或者如果您需要按排序顺序排列的元素。 返回一个数组的大小,其中第i个元素是这将是什么,如果该阵列被分选。所有较小的元素都