ネストされたオブジェクトでのファセット検索の実行に関して問題があります。
たとえば、次のドキュメントがあります。
tags: [
{
tag: "tag0",
tag_url: "http://xxxxxxx.com/tag/tag0/"
},
{
tag: "tag1",
tag_url: "http://xxxxxx.com/tag/tag1/"
}
],
categories: [
{
category: "cat0",
category_url: "http://xxxxxx.com/category/cat0/"
},
{
category: "cat1",
category_url: "http://xxxxxx.com/category/cat1/"
}
],
ファセットを実行しtags.tag
たいtags.tag_url
それでindex:not_analyzed
、ネストされたフィールドを作成するためにどのマッピングを使用しますか?
私はこのマッピングを試しました:
mapping_data[mapping_name]["properties"] = {
"tags.tag" : {
"type": "multi_field",
"fields" : {
"tags.tag": {"type" : "string", "index" : "analyzed", "store": "yes"},
"untouched" : {"type" : "string", "index" : "not_analyzed"}
}
},
"tags.tag_url" : {
"type": "multi_field",
"fields" : {
"tags.tag_url": {"type" : "string", "index" : "analyzed", "store": "yes"},
"untouched" : {"type" : "string", "index" : "not_analyzed"}
}
},
"categories.category" : {
"type": "multi_field",
"fields" : {
"categories.category": {"type" : "string", "index" : "analyzed", "store": "yes"},
"untouched" : {"type" : "string", "index" : "not_analyzed"}
}
},
"categories.category_url" : {
"type": "multi_field",
"fields" : {
"categories.category_url": {"type" : "string", "index" : "analyzed", "store": "yes"},
"untouched" : {"type" : "string", "index" : "not_analyzed"}
}
},
}
と
mapping_data[mapping_name]["properties"] = {
"tags" : {
"type": "nested"
},
"categories" : {
"type": "nested"
},
}
しかし、それは私に必要な結果を与えません。
を使用するtype:nested
と、ネストされたフィールドがトークン化されますtype: multi_field
が、ネストされたフィールドが であると表現することはできませんnot_analyzed
。tags.tag
(バリエーションで使用しましたmulti_field
が、役に立たなかったことに注意してください。)
では、ネストされたドキュメントのファセットを実現するためにマッピングを表現するにはどうすればよいですか?
PS: http://www.elasticsearch.org/guide/reference/mapping/nested-type/およびhttp://www.elasticsearch.org/guide/reference/mapping/nested-type/は、必要な結果を生成しませんでした私はvalue_fieldを持っていないので。