5

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

根据文档,我应该能够:

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

}

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

但是,这仍然只返回计数前 10 个方面。这是默认大小。唯一似乎影响返回面数的事情是通过实际设置将返回的面数"size" : N 在哪里N

我可以将其设置为一个非常高的数字,但这似乎有点骇人听闻。

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

4

2 回答 2

4

你没有做错什么。你猜对了!在 github 上有一个未解决的问题,使术语方面类似于术语统计方面,它允许您设置 size=0 以获取所有术语。现在你只需要使用一个高值,这有点棘手,我同意。另一方面,请注意不要返回太多条目!

于 2012-09-05T17:31:25.477 回答
3
{
    "query" : {
        "match_all" : {  }
    },
    "facets" : {
        "tag" : {
            "terms" : {
                "field" : "tag",
                "size" : 2147483647,
                "all_terms" : false
            }
        }
    }
}

删除“count: 0”的唯一方法是将“all_terms”设置为 false,并在 Elasticsearch 实例中将您的大小数字设置为尽可能高和不可能(上面的示例是整数中的最大有符号值) PHP 可以有)。

这可能不是最好的方法,但这是迄今为止唯一已知的方法。Facet 过滤器目前不适用于此功能(除非他们更新和改进了 Elasticsearch 来做到这一点)。

于 2012-12-14T08:43:40.893 回答