bna*_*ler 5 ruby elasticsearch ruby-on-rails-4
不知怎的,我似乎无法得到包含我的聚合的回复......
使用curl它按预期工作:
HBZUMB01$ curl -XPOST "http://localhost:9200/contents/_search" -d '{
"size": 0,
"aggs": {
"sport_count": {
"value_count": {
"field": "dwid"
}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
我收到了回复:
{
"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
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是使用rails中的代码:
query = '{
"size": 0,
"aggs": {
"sport_count": {
"value_count": {
"field": "dwid"
}
}
}
}'
@response = Content.search(query).to_json
Run Code Online (Sandbox Code Playgroud)
并在浏览器中呈现它
respond_to do |format|
format.html do
render text: "#{@response}"
end
Run Code Online (Sandbox Code Playgroud)
我得到一个空的回复:
[ ]
Run Code Online (Sandbox Code Playgroud)
如何在这里打印我的卷轴?
Mau*_*aes 13
我也在努力解决这个问题,但现在我发现了如何获得聚合结果.
如果您正在使用elasticsearch-rails和elasticsearch-model gems,那么当您在模型上运行聚合时,您可以获得如下示例中的桶:
agg = Model.search(
query: { match: { param: 'value' } },
aggs: {my_aggregation_name: { terms: { field: :my_field} }}
)
Run Code Online (Sandbox Code Playgroud)
在您的RoR代码中:
agg.response["aggregations"]["my_aggregation_name"]["buckets"]
Run Code Online (Sandbox Code Playgroud)
从那里,你会得到这样的结果:
[{"key"=>"banana",
"doc_count"=>1963,
"score"=>478.30920868573355,
"bg_count"=>2152},
{"key"=>"potato",
"doc_count"=>1212,
"score"=>315.68857496078505,
"bg_count"=>1243}, ...]
Run Code Online (Sandbox Code Playgroud)
然后你可以做任何你想做的事!希望有所帮助!
| 归档时间: |
|
| 查看次数: |
4068 次 |
| 最近记录: |