Elasticsearch count terms 忽略大小写
Elasticsearch count terms Ignore cases
以下是我的汇总。
{
"size": 0,
"aggs": {
"cities": {
"terms": {
"field": "city.raw"
}
}
}
映射
"properties": {
"state" : {
"type": "string",
"fields": {
"raw" : {
"type": "string",
"index": "not_analyzed"
}
}
}
效果很好。但它根据区分大小写对字段进行分组。
例如。
{
"key": "New York",
"doc_count": 45
},
{
"key": "new york",
"doc_count": 11
},
{
"key": "NEW YORK",
"doc_count": 44
}
我想要这样的结果
{
"key": "new york",
"doc_count": 100
}
我认为问题在于你使用了索引字符串的原始版本
city.raw
您没有提交的任何分析版本?
如果你把字段的映射也放到例子里就好了
更新:您应该根据需要使用自定义分析器。分词器应为关键字,过滤器应为小写。然后用这个分析器索引你的数据。然后应该工作。
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filter": "lowercase"
}
}
还有一些信息KeyWord Analyzer and Custom Analyzers
以下是我的汇总。
{
"size": 0,
"aggs": {
"cities": {
"terms": {
"field": "city.raw"
}
}
}
映射
"properties": {
"state" : {
"type": "string",
"fields": {
"raw" : {
"type": "string",
"index": "not_analyzed"
}
}
}
效果很好。但它根据区分大小写对字段进行分组。
例如。
{
"key": "New York",
"doc_count": 45
},
{
"key": "new york",
"doc_count": 11
},
{
"key": "NEW YORK",
"doc_count": 44
}
我想要这样的结果
{
"key": "new york",
"doc_count": 100
}
我认为问题在于你使用了索引字符串的原始版本
city.raw
您没有提交的任何分析版本? 如果你把字段的映射也放到例子里就好了
更新:您应该根据需要使用自定义分析器。分词器应为关键字,过滤器应为小写。然后用这个分析器索引你的数据。然后应该工作。
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filter": "lowercase"
}
}
还有一些信息KeyWord Analyzer and Custom Analyzers