【发布时间】:2014-11-30 19:10:47
【问题描述】:
我使用这个查询来检索最重要的值:
keywords = Answer.search(
:size => 5,
:query => {
:match => {
:question_id => 32481
}
},
:aggregations => {
:keywords => {
:significant_terms => {
:field => 'text'
}
}
}
)
字段是:text,但它的值为零,所以答案总是:
2.1.2 :135 > keywords.map(&:text)
=> [nil, nil, nil, nil, nil]
我尝试添加一个过滤器,正如the documentation 建议的那样,但它给了我一个解析错误:
keywords = Answer.search(
:size => 5,
:query => {
:match => {
:question_id => 32481
},
:filtered => {
:filter => {
:exists => { :field => 'text' }
}
}
},
:aggregations => {
:keywords => {
:significant_terms => {
:field => 'text'
}
}
}
)
我尝试了很多组合,但都没有成功。我怎样才能只获得有效的文本答案?
【问题讨论】:
-
试试keywords.map(&:text).compact
-
我相信这不是解决方案。我使用后一个查询从弹性搜索中得到一个解析错误。第一个结果的紧凑方法只会返回一个空数组。
标签: ruby-on-rails elasticsearch filtering aggregation