如何按单个字段对 Elasticsearch 中的文档进行分组?

2024-04-17

如果我在elaticsearch中有一堆文档,我想按文档的一个字段分组返回,我该怎么做?我还需要它始终返回固定数量的结果(使用 set maxresults)

例如,如果我有一堆文档,每个文档代表一个人,并且文档的字段包含该人的属性。 假设每个人在文档中都有一个城市字段。 我想以返回 50 个按城市分组的结果的方式查询 Elasticsearch。通过 50 个结果,我想知道如何返回映射到这些城市中所有人的 50 个城市。

我在以下位置找到了一个实现:

http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html

但我也想对这些结果应用分页。我在 ES 中没有看到设置 Offset 和设置 Limit 的可能性。有想法吗?


如何返回 50 个城市的地图并显示这些城市中的所有人。

您正在寻找的查询如下所示:

curl -XGET 'http://localhost:9200/users/user/_search?pretty' -d '{
    "aggs": {
        "users-by-city": {
            "terms": {
                "field": "city",
                "size": 50
            },
            "aggs": {
                "top_tag_hits": {
                    "top_hits": {
                        "from": 0,
                        "size": 9000
                    }
                }
            }
        }
    }
}'

在 Elastica 中,可以通过以下方式创建等效查询:

$query = new Elastica\Query();
$qb = new Elastica\QueryBuilder();

$query->addAggregation(
    $qb->aggregation()->terms('users-by-city')
        ->setField('city')
        ->setSize(50)
        ->addAggregation(
            $qb->aggregation()->top_hits('top-hits-in-city')
                ->setFrom(0)
                ->setSize(9000)
        )
);

如果你想对结果进行分页,只需更改传递给的参数setFrom and setSize.

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

如何按单个字段对 Elasticsearch 中的文档进行分组? 的相关文章

随机推荐

  • 在.VS 2015 NET 4.5中使用字符串插值和nameof

    我正在使用类似的东西 hello person and nameof arg1 在我的代码中 但在检查项目属性时 我的目标是 NET 4 5 这个可以吗 我以为这些东西是4 6引入的 该项目在我的机器上构建并运行良好 但我担心部署时会出现问
  • C# 中“decimal”类型的有趣行为

    如果我们将填充声明为 const 小数 则填充不起作用 mymoney 1 2 而你的钱 1 20 如何解释这种行为 class Program static void Main string args decimal balance 1
  • sklearn - 如何在one-hot编码时合并丢失的数据

    我试图保留数据集中包含缺失数据的行 当使用 sklearn 对一列 或多列 进行 one hot 编码时 是否可以写一个规则if currentItem null or if currentItem 0然后将输出数组设置为全0 e g A
  • 反对网站开发公司使用 JavaScript 框架的理由是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们公司构建网站和网络应用程序 我们是一家小公司 我们的开发团队总是从头开始构建 JavaScript 函数 或者从我们构建的其他网站复制 每当
  • 数组中每个索引的函数调用之间的javascript延迟[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 目标 对数组中的每个元素执行逻辑 W
  • Highcharts - 图表回流功能的问题

    这是fiddle http jsfiddle net uBUv9 6 我有问题width图表与切换侧边栏 我在SO的帮助下解决了这个问题post https stackoverflow com questions 23602167 issu
  • 使用 Azure Devops API 创建构建定义

    我们尝试使用 Azure Devops Rest API 复制另一个构建定义信息来创建构建定义 但出现以下错误 HttpError BadRequest 值不能为空 参数名称 定义 Repository Mappings Mapping S
  • 使用acts_as_paranoid插件进行软删除-验证怎么样?

    我正在尝试使用acts as paranoid 插件来软删除记录 我之前使用数据库中的标志来管理它 我知道这个插件会从搜索中省略一条记录 并查找该记录是否被软删除 我想知道的是我是否在模型中进行了验证 例如validates uniquen
  • 处理 Kafka Broker 宕机时的故障

    我有一个 Kafka 代理正在运行 消息已成功消费 但我想处理 Kafka 代理在 Kafka 消费者端出现故障的情况 我读过了this https github com spring projects spring kafka issue
  • 加快保存图像的速度 - iOS

    我正在研究更多的小型项目 这些项目稍后将包含在一个新项目中 它基本上是一个测试单元 我正在做的是创建一个AVCaptureSession然后创建一个方法OutputSampleBufferDelegate 在该方法中 我将sampleBuf
  • zlib.gzip 对于不同操作系统上的相同输入产生不同的结果

    以下代码 在 Node js v0 10 28 上 var zlib require zlib var buf new Buffer uncompressed zlib gzip buf function err result consol
  • 使用 jQuery 更正“全选”复选框

    http briancray com tests checkboxes index html http briancray com tests checkboxes index html select all 的实现方式很简单 但并不完美
  • 如何让 Iscroll 和 Lazy Load jQuery 插件一起工作?

    有没有机会让这两个插件一起工作 现在 如果我在带有图像的 div 中使用 iscroll 延迟加载将不会检测图像何时可见 Thanks EDIT 正如评论之一所述 我尝试在滚动上应用延迟加载 如下所示 onScrollMove functi
  • “Windows.Media.SpeechSynthesis”和“System.Speech.Synthesis”有什么不同?

    我正在尝试确定这两个 API 中的哪一个具有更多功能 可以在用 C 开发的专业应用程序中执行文本到语音转换 操作系统在这里不是问题 问题只是两个命名空间如何提供更多功能 高质量的声音和稳定性 有谁掌握这两种技术并可以告诉我这两个命名空间的不
  • 在 android 中启用静音模式而不触发请勿打扰

    我在这个问题上有点困难 在我的音量控制应用程序中 我尝试将系统声音配置文件设置为仅静音而不触发请勿打扰 我的应用程序有权修改 DND 设置和通知访问权限 没有任何问题 系统设置有一个静音配置文件 可以关闭免打扰 但我找不到使用音频管理器来做
  • 命令提示符中树的输出

    我希望能够使用 tree F A gt desktop file txt 命令仅输出文本文件 目前 它输出每个文件扩展名 有谁知道有一个简单的方法可以做到这一点 Tree仅接受几个命令行参数 c gt Tree Graphically di
  • 是否有类似 ICollection 的接口,但专为排序集合而设计?

    或者我可以毫无问题地使用 ICollection 吗 我的意思是 我不认为 ICollection 是为排序集合设计的 因为这可能会破坏为排序或未插入 ICollection 对象设计的应用程序 但我不知道 我会说ICollection 接
  • 如何在反序列化之前验证对象

    在我的代码中 我从 JMS 队列接收的 ObjectMessage 对象调用 getObject 方法 Fortify 报告抱怨这个 getObject 方法 其错误名称如下Dynamic Code Evaluation Unsafe De
  • 使用 JQuery / Javascript 访问 iFrame URL

    我有一个这样的页面 div div 我想这样做 someButton live click function alert The URL That the Main Frame is ON 我找到了这个 mainFrame get 0 lo
  • 如何按单个字段对 Elasticsearch 中的文档进行分组?

    如果我在elaticsearch中有一堆文档 我想按文档的一个字段分组返回 我该怎么做 我还需要它始终返回固定数量的结果 使用 set maxresults 例如 如果我有一堆文档 每个文档代表一个人 并且文档的字段包含该人的属性 假设每个