Elasticsearch:如何使聚合字段不改变值的大小写
Elasticsearch: how to make an aggregation field not change the case of values
我有聚合字段的以下映射:
"language" : {
"type" : "string",
"index": "analyzed",
"analyzer" : "standard"
}
此 属性 中示例文档的值可能如下所示:"en zh_CN"
这个属性除了聚合没有别的用处。我注意到当我得到这个 属性:
的聚合结果时
{
"query": {
"filtered" : {
"query": {
"match_all": {}
},
"filter" : {
...
}
}
},
"aggregations": {
"facets": {
"terms": {
"field": "language"
}
}
}
}
存储桶键值是小写的。
"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
} ]
}
}
如何在不让 ES 降低其值的情况下实现我的聚合目标。我觉得我可能需要为此 属性 更改映射,但不确定如何更改。
感谢和问候。
在您的映射中试试这个:
"language" : {
"type" : "string",
"index": "not_analyzed"
}
每个文档的该字段中的文本将未经修改地用于创建标记,这些标记将由您的术语聚合 return 编辑。对于您提供的示例值,聚合将 return 逐字记录:
"aggregations": {
"facets": {
"buckets": [
{
"key": "en zh_CN",
"doc_count": 1
}
]
}
}
如果您仍然希望文本在空白处被标记化,您可以尝试在映射中使用 whitespace analyzer:
"language": {
"type": "string",
"analyzer": "whitespace"
}
那么您的聚合将 return:
"aggregations": {
"facets": {
"buckets": [
{
"key": "en",
"doc_count": 1
},
{
"key": "zh_CN",
"doc_count": 1
}
]
}
}
这是我用来测试这两个例子的代码:
http://sense.qbox.io/gist/a7b3c7d50c7012537c50d576d03940b28b5f8793
我有聚合字段的以下映射:
"language" : {
"type" : "string",
"index": "analyzed",
"analyzer" : "standard"
}
此 属性 中示例文档的值可能如下所示:"en zh_CN"
这个属性除了聚合没有别的用处。我注意到当我得到这个 属性:
的聚合结果时{
"query": {
"filtered" : {
"query": {
"match_all": {}
},
"filter" : {
...
}
}
},
"aggregations": {
"facets": {
"terms": {
"field": "language"
}
}
}
}
存储桶键值是小写的。
"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
} ]
}
}
如何在不让 ES 降低其值的情况下实现我的聚合目标。我觉得我可能需要为此 属性 更改映射,但不确定如何更改。
感谢和问候。
在您的映射中试试这个:
"language" : {
"type" : "string",
"index": "not_analyzed"
}
每个文档的该字段中的文本将未经修改地用于创建标记,这些标记将由您的术语聚合 return 编辑。对于您提供的示例值,聚合将 return 逐字记录:
"aggregations": {
"facets": {
"buckets": [
{
"key": "en zh_CN",
"doc_count": 1
}
]
}
}
如果您仍然希望文本在空白处被标记化,您可以尝试在映射中使用 whitespace analyzer:
"language": {
"type": "string",
"analyzer": "whitespace"
}
那么您的聚合将 return:
"aggregations": {
"facets": {
"buckets": [
{
"key": "en",
"doc_count": 1
},
{
"key": "zh_CN",
"doc_count": 1
}
]
}
}
这是我用来测试这两个例子的代码:
http://sense.qbox.io/gist/a7b3c7d50c7012537c50d576d03940b28b5f8793