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

Rails Elasticsearch聚合

百里沛
2023-03-14
问题内容

我似乎无法以某种方式收到包含我的聚合的响应…

使用curl可以按预期工作:

HBZUMB01$ curl -XPOST "http://localhost:9200/contents/_search" -d '{
  "size": 0,
  "aggs": {
    "sport_count": {
      "value_count": {
        "field": "dwid"
      }
    }
  }
}'

我得到答复:

{
  "took": 4,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 90,
    "max_score": 0.0,
    "hits": []
  },
  "aggregations": {
    "sport_count": {
      "value": 399
    }
  }
}

但是在rails中使用代码:

query = '{
  "size": 0,
  "aggs": {
    "sport_count": {
      "value_count": {
        "field": "dwid"
      }
    }
  }
}'
@response = Content.search(query).to_json

并在浏览器中呈现

respond_to do |format|
  format.html do    
  render text: "#{@response}"   
end

我得到一个空的答复:

[  ]

如何在这里打印出卷曲的聚集体?


问题答案:

我也在为此而苦苦挣扎,但是现在我发现了如何获得聚合结果。

如果您将 elasticsearch-railselasticsearch-model gem一起使用,则在 模型上
运行聚合时,可以像以下示例一样获得存储桶:

 agg = Model.search( 
     query: { match: { param: 'value' } }, 
     aggs: {my_aggregation_name: { terms: { field: :my_field} }} 
 )

在您的RoR代码中:

agg.response["aggregations"]["my_aggregation_name"]["buckets"]

由此,您将得到如下结果:

[{"key"=>"banana",
  "doc_count"=>1963,
  "score"=>478.30920868573355,
  "bg_count"=>2152},
 {"key"=>"potato",
  "doc_count"=>1212,
  "score"=>315.68857496078505,
  "bg_count"=>1243}, ...]

然后,您可以做任何您想做的事!希望有帮助!



 类似资料:
  • Django数据库抽象API描述了使用Django查询来增删查改单个对象的方法。然而,你有时候会想要获取从一组对象导出的值或者是聚合一组对象。这份指南描述了通过Django查询来生成和返回聚合值的方法。 整篇指南我们都将引用以下模型。这些模型用来记录多个网上书店的库存。 from django.db import models class Author(models.Model): na

  • 在聚合中,两个实体之间的关系被视为单个实体。 在聚合中,与其对应实体的关系被聚合到更高级别的实体中。 例如:中心(Center)实体提供课程(Course)实体充当关系中的单个实体,该实体与另一个实体访问者处于关系中。 在现实世界中,如果访问者访问教练中心,那么他将永远不会询问有关课程或只是关于中心,而是他会询问有关两者的询问。

  • 框架集合由搜索查询选择的所有数据。框架中包含许多构建块,有助于构建复杂的数据描述或摘要。聚合的基本结构如下所示 - 有以下不同类型的聚合,每个都有自己的目的 - 指标聚合 这些聚合有助于从聚合文档的字段值计算矩阵,并且某些值可以从脚本生成。 数字矩阵或者是平均聚合的单值,或者是像一样的多值。 平均聚合 此聚合用于获取聚合文档中存在的任何数字字段的平均值。 例如, 请求正文 响应 如果该值不存在于一

  • 主要内容:聚合,继承和聚合的关系在实际的开发过程中,我们所接触的项目一般都由多个模块组成。在构建项目时,如果每次都按模块一个一个地进行构建会十分得麻烦,Maven 的聚合功能很好的解决了这个问题。 聚合 使用 Maven 聚合功能对项目进行构建时,需要在该项目中额外创建一个的聚合模块,然后通过这个模块构建整个项目的所有模块。聚合模块仅仅是帮助聚合其他模块的工具,其本身并无任何实质内容,因此聚合模块中只有一个 POM 文件,不像其

  • 如果你需要从一个模型中获取一些聚合值,你可以使用Model.aggregate()。下面通过一个例子来展示: Person.aggregate({ surname: "Doe" }).min("age").max("age").get(function (err, min, max) { console.log("The youngest Doe guy has %d years, whi

  • Leaflet.markercluster 是一个提供动态的标识聚类功能的 Leaflet 插件库。 引入插件 Leaflet.markercluster 包括两种方式: 下载 Leaflet.markercluster 1.进入 github 下载 Leaflet.markercluster,下载地址为: https://github.com/Leaflet/Leaflet.markerclus

  • 对于层次聚类法,我们不需要预先指定分类的数量,这个算方法会将每条数据都当作是一个分类,每次迭代的时候合并距离最近的两个分类,直到剩下一个分类为止。 因此聚类的结果是:顶层有一个大分类,这个分类下有两个子分类,每个子分类下又有两个子分类,依此类推,层次聚类也因此得命。 在合并的时候我们会计算两个分类之间的距离,可以采用不同的方法。如下图中的A、B、C三个分类,我们应该将哪两个分类合并起来呢? 单链聚

  • 我正在尝试设置一个搜索查询,该查询应通过多级嵌套字段复合聚合集合,并从该集合中提供一些子聚合指标。我能够按预期使用其存储桶获取复合聚合,但所有存储桶的子聚合指标都带有。我不确定我是否未能正确指出子聚合应考虑哪些字段,或者它是否应放置在查询的不同部分中。 我的收藏看起来类似于以下内容: 贝娄,你可以找到我已经尝试了。尽管所有文档都有一个设置的点击值,但所有存储桶都带有点击总数。 到目前为止,我的回应