我有一个聚合字段的以下映射:
"language" : {
"type" : "string",
"index": "analyzed",
"analyzer" : "standard"
}
Run Code Online (Sandbox Code Playgroud)
此属性中的示例文档的值可能如下所示:"en zh_CN"
除聚合外,此属性没有其他用途.我注意到当我在此属性上获得聚合结果时:
{
"query": {
"filtered" : {
"query": {
"match_all": {}
},
"filter" : {
...
}
}
},
"aggregations": {
"facets": {
"terms": {
"field": "language"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
存储桶键值为小写.
"aggregations" : {
"facets" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "zh_cn",
"doc_count" : 2
}, {
"key" : "en",
"doc_count" : 1
} ]
}
}
Run Code Online (Sandbox Code Playgroud)
如何在不让ES降低其值的情况下实现我的聚合目标.我觉得我可能需要更改此属性的映射,但不确定如何.
感谢致敬.
请在映射中尝试此操作:
"language" : {
"type" : "string",
"index": "not_analyzed"
}
Run Code Online (Sandbox Code Playgroud)
每个文档的该字段中的文本将被使用,未经修改,以创建令牌,这些令牌将由您的术语聚合返回.对于您提供的示例值,聚合将逐字返回:
"aggregations": {
"facets": {
"buckets": [
{
"key": "en zh_CN",
"doc_count": 1
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
如果您仍希望在空格上对文本进行标记,则可以尝试在映射中使用空白分析器:
"language": {
"type": "string",
"analyzer": "whitespace"
}
Run Code Online (Sandbox Code Playgroud)
然后你的聚合将返回:
"aggregations": {
"facets": {
"buckets": [
{
"key": "en",
"doc_count": 1
},
{
"key": "zh_CN",
"doc_count": 1
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
这是我用来测试这两个例子的代码:
http://sense.qbox.io/gist/a7b3c7d50c7012537c50d576d03940b28b5f8793
| 归档时间: |
|
| 查看次数: |
1973 次 |
| 最近记录: |