使用elasticsearch中的自定义分析器对字符串字段的术语聚合失败

时间:2015-02-19 07:52:32

标签: elasticsearch tokenize aggregation analyzer

我想要一个自定义分析器,其行为与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并没有抛出错误。非常奇怪。

0 个答案:

没有答案