如果我有一个 People 集合。每个人可能有多种爱好。(例如跑步、攀爬、游泳、千斤顶)。
我如何用所有这些属性索引一个人,以便我可以对他们应用一个方面?有人可以提供一个样本哦,应该如何索引数据:
Person | Hobbies
Joe | Chess, Jumping Jacks, Swimming
Person | Hobbies
Bob | Rowing
以及如何才能获得“爱好”键的方面?(请注意,“Jumping Jacks”是单个值,但空格分隔的单词。
如果我有一个 People 集合。每个人可能有多种爱好。(例如跑步、攀爬、游泳、千斤顶)。
我如何用所有这些属性索引一个人,以便我可以对他们应用一个方面?有人可以提供一个样本哦,应该如何索引数据:
Person | Hobbies
Joe | Chess, Jumping Jacks, Swimming
Person | Hobbies
Bob | Rowing
以及如何才能获得“爱好”键的方面?(请注意,“Jumping Jacks”是单个值,但空格分隔的单词。
如果你们都想在 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)