0

配列の使用中にファセットカウントの問題が発生しました。私の実際のマッピングとインデックスを作成しているドキュメントを確認するために、皆さんが見ることができる要点があります:https ://gist.github.com/3607876 。

簡単に言うと、検索APIを介してこのクエリを送信しています。

curl -XPOST 'localhost:9200/org/_search?pretty=true' -d '
{
    "query" : {
        "term" : { "participating-org.role" : "leading" }
    },
    "filter" : {
        "term" : { "participating-org.role" : "leading" }
    },
    "facets" : {
        "organization_facets" : {
            "terms" : { "field" : "participating-org.name" }
        }
    }
}'

そして、私は次の側面を取り戻しています:

facets: {
    participating-org.name: {
        _type: "terms"
        missing: 0
        total: 8
        other: 0
        terms: [
            {
                term: "def"
                count: 4
            }
            {
                term: "abc"
                count: 4
            }
        ]
    }
}

参加組織オブジェクトには常に「先頭」の役割があり、これらのエントリを除外しようとしているため、ここでは「def」エントリは期待していません。「主役」ではない「abc」参加組織もなぜカウントされるのかわかりません。

何か提案はありますか?それは私のマッピングですか、それともファセットクエリの問題ですか?

4

2 に答える 2

0

この問題の解決策は、この要点にあります:
https ://gist.github.com/3616612

結果は次のようになります。



    facets: {
        participating-org.role.leading: {
            _type: "terms"
            missing: 0
            total: 4
            other: 0
            terms: [
                {
                    term: "def"
                    count: 4
                }
            ]
        }
    }

私にとっては素晴らしい解決策です。うまくいきますが、何か提案があれば、考えを書き留めてください。

于 2012-09-04T04:37:58.633 に答える
0

フィルタを削除できます

"filter" : {
    "term" : { "participating-org.role" : "leading" }
}

何の違いもないからです。ファセット数の計算時にフィルターは考慮されません。フィルターは、検索結果をフィルター処理するためにのみ考慮されます。

クエリ

"query" : {
    "term" : { "participating-org.role" : "leading" }
}

ドキュメントとファセットの両方に違いがありますが、実際には、elasticsearchに、participating-org.roleが先頭にあるすべてのドキュメントを提供し、それらの検索結果からファセットを計算するように求めています。適用しようとしているフィルターが返されたドキュメントに適用され、返されたドキュメントがファセットの作成に使用されます。ドキュメントには複数の参加組織内部オブジェクトがあり、そのうちの1つは常にロールリーディングであるため、そのクエリですべてのドキュメントを選択します。トップレベルのドキュメントをフィルタリングしています特定のファセットエントリのみを除外したい場合はそれを行うことができますが、ネストされたドキュメントのサポートにもっと興味があると思います。ネストされたタイプを見ることができます、これこのページの下部にある、ネストされたドキュメントに基づいてファセットを作成する方法についてのすばらしい記事です。

于 2012-09-03T10:57:48.983 に答える