5

私はelasticsearch0.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が持つことができます)。

これは最善の方法ではないかもしれませんが、これまでに知られている唯一のアプローチです。ファセットフィルターは現在これでは機能しません(Elasticsearchを更新して改善した場合を除きます)。

于 2012-12-14T08:43:40.893 に答える