0

如果我有一个 People 集合。每个人可能有多种爱好。(例如跑步、攀爬、游泳、千斤顶)。

我如何用所有这些属性索引一个人,以便我可以对他们应用一个方面?有人可以提供一个样本哦,应该如何索引数据:

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字段作为输入。第一个,您可以在查询中hobbies使用默认标准分析器的名称来引用它;第二个不分析,可用于刻面。您可以将其称为hobbies.facet.

结果,您可以搜索jumping并找到匹配项,但您的构面将如下所示:

国际象棋 (1)
Jumping Jacks (1)
游泳 (1)
爱好 (1)
赛艇 (1)

于 2013-06-06T18:54:46.410 回答