我使用elasticsearch 0.19.9进行了多方面的查询。但是,我想返回所有具有计数>的方面。 0
根据文件,我应该能够:
{
"query" : {
"match_all" : { }
},
"facets" : {
"tag" : {
"terms" : {
"field" : "tag",
"all_terms" : true
}
}
}
}
据我了解,即使count为0,这也应该给我所有方面。
然而,这仍然只是按计数返回前10个方面。这是默认大小。唯一影响返回方面数的方法是实际设置"size" : N
,其中N
是将返回的构面数。
我可以将它设置为一个非常高的数字,但这似乎是黑客攻击。
关于我可能做错的任何想法?
答案 0 :(得分:4)
你没有做错任何事。你弄清楚了! github上有一个open issue来使术语facet类似于Terms Stats facet,它允许你设置size = 0以便获得所有术语。现在你只需要使用一个高值,这有点棘手,我同意。另一方面要注意不要返回太多条目!
答案 1 :(得分:3)
{
"query" : {
"match_all" : { }
},
"facets" : {
"tag" : {
"terms" : {
"field" : "tag",
"size" : 2147483647,
"all_terms" : false
}
}
}
}
删除“count:0”的唯一方法是将“all_terms”设置为false,并在Elasticsearch实例中将您的大小编号设置为高和不可能(上面的示例是最大的有符号值, PHP中的整数可以有。)
这可能不是最好的方法,但到目前为止这是唯一已知的方法。 Facet过滤器目前不能用于此(除非他们更新并改进了Elasticsearch来执行此操作)。