0

People コレクションがある場合。一人一人が複数の趣味を持っている場合があります。(例: ランニング、クライミング、水泳、ジャンピング ジャック)。

ファセットを適用できるように、これらすべての属性を持つ 1 人の人物をどのようにインデックス化すればよいでしょうか? 次の場合、誰かがデータのインデックスを作成する方法のサンプルを提供できますか:

Person | Hobbies
Joe | Chess, Jumping Jacks, Swimming

Person | Hobbies
Bob | Rowing

そして、「趣味」キーのファセットを取得するにはどうすればよいでしょうか? (「Jumping Jacks」は単一の値ですが、空白で区切られた単語であることに注意してください。

4

1 に答える 1

0

hobbiesフィールドを検索してファセットを作成したい場合は、multi_fieldを使用する必要があります。このようにして、同じフィールドにさまざまな方法でインデックスを付けることができます。通常、検索用のバージョンはトークン化して少なくとも小文字にする必要があり、必要に応じて言語依存の分析を行う必要がありますが、ファセット エントリはソース ドキュメントにあるものと同じである必要があるため、ファセット バージョンは分析する必要さえありません。 .

{
    "people" : {
        "properties" : {
            "hobbies" : {
                "type" : "multi_field",
                "fields" : {
                    "hobbies" : {"type" : "string", "index" : "analyzed"},
                    "facet" : {"type" : "string", "index" : "not_analyzed"}
                }
            }
        }
    }
}

上記のマッピングはhobbies、入力と同じフィールドに対して 2 つの異なるフィールドを作成します。最初のものは、デフォルトの標準アナライザーhobbiesを使用して名前を使用するだけでクエリで参照できます。2 番目のものは分析されず、ファセットに使用できます。として参照できます。hobbies.facet

その結果jumping、一致するものを検索して見つけることができますが、ファセットは次のようになります。

チェス (1)
ジャンピング ジャック (1)
水泳 (1)
趣味 (1)
ローイング (1)

于 2013-06-06T18:54:46.410 に答える