elasticsearch返回的faceface数

时间:2012-09-05 15:57:09

标签: elasticsearch faceted-search

我使用elasticsearch 0.19.9进行了多方面的查询。但是,我想返回所有具有计数>的方面。 0

根据文件,我应该能够:

{
    "query" : {
        "match_all" : {  }
    },
    "facets" : {
        "tag" : {
            "terms" : {
                "field" : "tag",
                "all_terms" : true
            }
        }
    }

}

据我了解,即使count为0,这也应该给我所有方面。

然而,这仍然只是按计数返回前10个方面。这是默认大小。唯一影响返回方面数的方法是实际设置"size" : N,其中N是将返回的构面数。

我可以将它设置为一个非常高的数字,但这似乎是黑客攻击。

关于我可能做错的任何想法?

2 个答案:

答案 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来执行此操作)。