如何为elasticsearch中的多面化索引以下内容?

时间:2013-06-06 13:41:57

标签: elasticsearch

如果我有人物收藏品。每个人可能有多种爱好。 (例如跑步,登山,游泳,跳跃杰克)。

我如何将所有这些attrubutes的单个人编入索引,以便我可以对他们应用一个方面?有人可以提供一个样本哦,如何在以下情况下索引数据:

Person | Hobbies
Joe | Chess, Jumping Jacks, Swimming

Person | Hobbies
Bob | Rowing

我如何才能获得“兴趣爱好”关键的方面? (请注意,“Jumping Jacks”是单个值,但是用空格分隔单词。

1 个答案:

答案 0 :(得分:0)

如果您想要搜索爱好字段并在其上制作一个方面,则需要使用multi_field。这就是你可以用不同方式索引相同字段的方法。通常,搜索版本需要进行标记化,至少是小写的,如果需要,还需要依赖于语言的分析,而facet版本甚至不需要进行分析,因为facet条目需要与源文档中的相同

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

上述映射会为输入相同的hobbies字段创建两个不同的字段。第一个,您可以使用默认standard analyzer使用hobbies名称在查询中引用;第二个没有被分析,可以用于方面。您可以将其称为hobbies.facet

因此,您可以搜索jumping并找到匹配项,但您的方面将如下所示:

国际象棋(1)
跳跃千斤顶(1)
游泳(1)
兴趣爱好(1)
划船(1)