亚马逊索引中的映射如下所示。图书有嵌套作者,具有多字段“别名”。“别名”和"alias.raw“应该是作者中的有效字段。
{
mappings: {
book: {
properties: {
title: {
type: "string",
fields: {
raw: {type: "string", index: "not_analyzed"}
}
},
authors: {
type: "nested",
properties: {
alias: {
type: "string",
fields: {
raw : {
type: "string",
index: "not_analyzed"
}
}
},
alias_raw: {
type: "string",
index: "not_analyzed"
}
}
}
}
}
}
}样本数据:
{索引:{_id:"1",_type:"book"}} {标题:“Dummies Awesome",第100页,作者:{firstName:”阿波罗“,lastName:"Cabrera",别名:”for . Awesome“,alias_raw:"Mister Awesome"},{firstName:"Mark",lastName:"Twain",别名:"Julius恺撒”,alias_raw:"Julius恺撒“}
{索引:{_id:"2",_type:"book"}} {标题:“了解妇女”,第100000页,作者:{firstName:"Megyn",lastName:"Kelly",别名:“Wonder Women",alias_raw:"Wonder Women”},{firstName:"Donald",lastName:"Trump",别名:“Lone Ranger",alias_raw:"Lone Ranger"}}
{索引:{_id:"3",_type:"book"}} {标题:"Snap“,页面:"30",作者:{firstName:”希拉里“,lastName:”克林顿“,别名:”密码零“,alias_raw:”密码零“},{firstName:"Harry",lastName:"Houdini",别名:"Abra”,alias_raw:"Abra“}}
我的聚合查询看起来如下.
{
query: {
match_all: {}
},
aggs: {
authors: {
nested: {
path: "authors"
},
aggs: {
aliases: {
terms: {
field: "alias.raw"
}
}
}
}
}
}当我执行聚合查询时,完全没有聚合。如果我使用"alias_raw“(这是我添加的另一个单独的字段),我将得到预期的完整别名.
"aggregations" : {
"authors" : {
"doc_count" : 6,
"aliases" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "Abra Cadabra",
"doc_count" : 1
}, {
"key" : "Code Zero",
"doc_count" : 1
}, {
"key" : "Julius Caesar",
"doc_count" : 1
}, {
"key" : "Lone Ranger",
"doc_count" : 1
}, {
"key" : "Mister Awesome",
"doc_count" : 1
}, {
"key" : "Wonder Woman",
"doc_count" : 1
} ]
}
}
}还有另一种方法可以获得"alias.raw“来聚合多个字段吗?,如果只使用”别名“,就会得到解析的、标记化的、分析的、小写的字段。我要那个未经分析的原始化名。我真的不认为我需要也不想要多余的"alias_raw“字段。
(预先谢谢:)
发布于 2015-08-20 22:33:57
弄明白了。你必须使用完整的路径作为字段名..。
字段:"authors.alias.raw“
即
{
query: {
match_all: {}
},
aggs: {
authors: {
nested: {
path: "authors"
},
aggs: {
aliases: {
terms: {
field: "authors.alias.raw"
}
}
}
}
}
}欠债权利:)
https://stackoverflow.com/questions/32129152
复制相似问题