对于映射为字符串的字段,我在ES索引中存储了字符串列表,例如:
subject: ["Scientific Research", "Numerical Analysis", "History of Art"]
我想查询此字段并检索具有频率计数的类别的全名。到目前为止我尝试过的方面:
"query":{
"match_all": {}
},
"facets":{
"tag":{
"terms":{
"field":"subject"}
}
}
没有按预期工作,因为它将我的主题字段拆分为令牌并返回最常见的停用词。如何根据分析字段的计数获得完整的条目,如果可能的话,不仅仅是前10名?谢谢!
答案 0 :(得分:1)
我会使用multi-field
定义您的映射,如此 -
{
.....
....
.....
"subject": {
"type": "multi_field",
"store": "yes",
"fields": {
"analyzed": {
"type": "string",
"analyzer": "standard"
},
"notanalyzed": {
"type": "string",
"index": "not_analyzed"
}
}
}
然后我会像{ - 1}那样在notanalyzed
字段上进行分区 -
"query":{
"match_all": {}
},
"facets":{
"tag":{
"terms":{
"field":"subject.notanalyzed",
"size": 50
}
}
}