如何过滤 top_hits 指标聚合结果 [Elasticsearch]

2023-12-10

我想按地址分组,然后按日期获取最新地址,然后按状态过滤此结果。

ex
  {address: 'A', date: '10-10-1991', status: 'sold'}
  {address: 'A', date: '10-10-2016', status: 'active'}
  {address: 'A', date: '10-10-1981', status: 'sold'}

  {address: 'B', date: '10-10-2016', status: 'sold'}
  {address: 'B', date: '10-10-1771', status: 'sold'}
  {address: 'B', date: '10-10-1991', status: 'active'}

//Getting address with sold status should give me only this record {address: 'B', date: '10-10-2016', status: 'sold'} since most updated one in address A is an active status

我在弹性搜索中有这个查询,但它只能按地址分组并获取最新日期。我无法按状态过滤此结果。

 {
    "size": 0,
    "aggs": {
        "group": {
            "terms": {
                "field": "address"
            },
            "aggs": {
                "group_docs": {
                    "top_hits": {
                        "size": 1,
                        "sort": [
                            {
                                "updated_date": {
                                    "order": "desc"
                                }
                            }]
                    }

                }
            }
        }
    }
}

// This query gives me this records
{address: 'A', date: '10-10-2016', status: 'active'}
{address: 'B', date: '10-10-2016', status: 'sold'}

我想使用 elasticsearch 从结果中获取销售状态


这可以通过 ES 实现2.x using pipeline aggregations。首先我们需要聚合地址。然后我们使用两个聚合,一个获取latest_date,另一个获取销售状态的最新日期。然后我们检查两个日期是否匹配桶选择器聚合。这就是它的样子。

{
  "size": 0,
  "aggs": {
    "unique_address": {
      "terms": {
        "field": "address",
        "size": 10
      },
      "aggs": {
        "latest_date": {
          "max": {
            "field": "date"
          }
        },
        "filter_sold": {
          "filter": {
            "term": {
              "status": "sold"
            }
          },
          "aggs": {
            "latest_sold_date": {
              "max": {
                "field": "date"
              }
            }
          }
        },
        "should_we_consider": {
          "bucket_selector": {
            "buckets_path": {
              "my_var1": "latest_date",
              "my_var2": "filter_sold>latest_sold_date"
            },
            "script": "my_var1 == my_var2"
          }
        }
      }
    }
  }
}

希望这可以帮助!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何过滤 top_hits 指标聚合结果 [Elasticsearch] 的相关文章

随机推荐

  • 使用 h:commandButton 或等效项传递参数

    我在其他线程上读到这不起作用
  • 如何在没有“while True”循环的情况下绘制这个对数?

    我一直在尝试绘制十二音阶 从最低到最高可听音调 以赫兹为单位 我找到了一种方法来做到这一点 使用始终为真的 while 循环 然后在音高低于或高于人类可听范围时使用 Break 退出循环 我知道这种循环是不好的做法 但是作为一个新手程序员
  • 如何在 Visual Studio Code 中进行标签包装?

    我想将我选择的 HTML 内容包装在 Visual Studio Code 中的标签内 我怎么做 嵌入式Emmet可以做到这一点 选择文本 可选 Open command palette usually Ctrl Shift P Execu
  • 动态属性名称串联

    我正在寻找一种根据另一个变量的值分配给变量的简单方法 device slot2 clipList clipNumber singleClipDetails 我想做的是 用另一个变量替换 2 这样我就可以运行相同的操作 而只需更改 var s
  • C 中允许空宏定义吗?他们的行为如何?

    假设 空 宏定义 define FOO 标准 C 有效吗 如果是这样 那是什么FOO在这个定义之后 它只是一个扩展为空的宏 但是 既然已经定义了宏 您可以检查 if defined or ifdef 是否已定义 define FOO int
  • 自动刷新特定 div 博主 javascript

    我在博客站点上使用 Javascript 小部件 它包含一个带有一些 JavaScript 的 div 这些 JavaScript 从服务器获取一些 非静态 字符串并将其打印在页面上 直到这里一切正常 问题是我想每隔几秒更新一次该 div
  • Python PIL加载抛出AttributeError:'NoneType'对象没有属性'read'

    我已经为这个错误苦苦挣扎了好几天 但进展甚微 基本上 我试图读入图像文件 然后使用 PIL 对其执行特定操作 我的最终目标是执行 PIL 粘贴操作 然而 每当我加载图像 然后调用它的 load 方法 诸如 show paste resize
  • 如何让 Django 在 AWS S3 上将某些文件设为公开,将媒体文件设为私有(无 403 错误)?

    我在用着boto3 and Django 存储在我的 Django 应用程序中提供来自 AWS S3 的文件 我希望我的静态文件是公开的 但其他文件是私有的 我已经有点工作但不完全 我的静态文件就像私有文件一样使用预签名密钥 在我的模板文件
  • 将命名列表传递给 cols_only() [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 当我尝试做这样的事情时 data lt read csv blah csv n max 100 col types cols only list files c Error Some co
  • 为什么这个错误类型“String”不是类型“Map ”的子类型

    已经处于这种情况很长一段时间了 但没有解决该错误 String 不是 Map 类型的子类型 提出了很多相关问题也希望得到帮助 这是我的课程 class Provider Provider required this id required
  • 如何使用脚本生成 INTERVAL 1

    我们正在尝试找到一种语法来从日期函数的第三个参数生成 DAY WEEK MONTH 选项 DECLARE var date option STRING DEFAULT DAY select GENERATE DATE ARRAY 2019
  • 使用 Plupload HTML5 运行时直接上传到 Amazon S3 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我在之前的一篇文章中看到过如何让 Plupload 直接上传到 Amazon S
  • PHPUnit 模拟对象和静态方法

    我正在寻找测试以下静态方法的最佳方法 特别是使用 Doctrine 模型 class Model User extends Doctrine Record public static function create userData new
  • 模态弹出窗口在打开时淡入,在关闭时淡出

    我有一个相当简单的问题 我有删除按钮 可以打开模式弹出窗口以确认或拒绝删除 我希望这些模式弹出窗口在单击时淡入 在取消时淡出 我已经尝试了几种不同的方法 到目前为止还没有运气 我只需要一个简单的解决方案 提前致谢 这是我的代码
  • Google Play 应用签名和即时应用

    相当直接的问题 有人知道 Google Play 应用签名是否支持即时应用吗 我问的原因是 输入应用程序的签名配置 或选择密钥库文件 虽然可以在测试期间使用调试配置或密钥库 但生成的数字资产链接文件将与应用程序的发布版本不兼容 如果您确实上
  • 从 MVC 控制器创建/获取 DefaultHtmlGenerator

    我正在尝试在 MVC6 控制器方法内为 Microsoft AspNet Mvc Rendering DefaultHtmlGenerator 创建 或以某种方式获取它的实例 我想在我的 asp net mvc 控制器中生成用于验证我的模型
  • 生成正则表达式可以在 Python 中匹配的值列表

    我尝试使用正则表达式作为输入 并从那里生成正则表达式匹配的所有可能值 因此 例如 如果正则表达式是 以 a 开头 以 c 结尾的三个字母单词 则代码将生成一个包含值 aac abc acc adc a1c 的列表 是否有捷径可寻 我正在使用
  • 在Google云机器学习上部署Retrained inception模型

    我设法使用通用初始模型重新训练我的特定分类模型tutorial 我现在想将其部署在谷歌云机器学习上steps 我已经设法将其导出为 MetaGraph 但我无法获得正确的输入和输出 在本地使用它 我的图表入口点是DecodeJpeg con
  • OpenXML Sax 方法可将 100K+ 行快速导出到 Excel

    我一直在尝试提高写入 xlsx 的 SAX 方法的性能 我知道 Excel 中的行数限制为 1048576 行 我只达到过这个极限几次 在大多数情况下 我只写出大约 125K 到 250K 行 一个大数据集 我尝试过的代码似乎没有那么快 因
  • 如何过滤 top_hits 指标聚合结果 [Elasticsearch]

    我想按地址分组 然后按日期获取最新地址 然后按状态过滤此结果 ex address A date 10 10 1991 status sold address A date 10 10 2016 status active address