我想要一个自定义分析器,其行为与not_analyzed
完全相同,但不区分大小写。
我当前的自定义分析器是
"index": {
"analysis": {
"analyzer": { // Custom Analyzer with keyword tokenizer and lowercase filter, same as not_analyzed but case insensitive
"case_insensitive_keyword_analyzer": {
"tokenizer": "keyword",
"filter": "lowercase"
}
}
}
}
但是,当我尝试使用此自定义分析器对特定字符串进行术语聚合时,我得到了此异常。
{
"error" :"ClassCastException[org.elasticsearch.search.aggregations.bucket.terms.DoubleTerms$Bucket cannot be cast to org.elasticsearch.search.aggregations.bucket.terms.StringTerms$Bucket]",
"status" : 500
}
这是我的聚合查询:
{
"aggs": {
"unique-category-ids": {
"terms": {
"field": "categoryid"
}
}
}
}
简单地说,我需要的是一个自定义分析器,其行为与not_analyzed
完全相同,只是它不区分大小写。
我没有意识到我在映射double
的字段上进行了术语聚合。这就是造成这种错误的原因。
但我不明白的是,当我将strings
索引到已映射double
的字段时,Elasticsearch并没有抛出错误。非常奇怪。