gpt4 book ai didi

ruby - Rails Elasticsearch 聚合

转载 作者:数据小太阳 更新时间:2023-10-29 07:10:40 24 4
gpt4 key购买 nike

不知何故,我似乎无法获得包含我的聚合的响应...

使用 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

我得到一个空响应:

[  ]

如何在这里打印我通过 curl 获得的聚合?

最佳答案

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

如果您将 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}, ...]

然后你就可以为所欲为了!希望对您有所帮助!

关于ruby - Rails Elasticsearch 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24981332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com