本文主要是介绍whose UTF8 encoding is longer than the max length 32766,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:java.lang.IllegalArgumentException: Document contains at least one immense term in field=“cf_jg.keyword” (whose UTF8 encoding is longer than the max length 32766)
原因:设置为keyword类型的字段,插入很长的大段内容后,报字符超出异常,无法插入。
详细说明:ES5.X版本以后,keyword支持的最大长度为32766个UTF-8字节数,text对字符长度没有限制。
设置ignore_above后,超过给定长度后的数据将不被索引,无法通过term精确匹配检索返回结果。
text类型:支持分词、全文检索,不支持聚合、排序操作。
适合大字段存储,如:文章详情、content字段等;
keyword类型:支持精确匹配,支持聚合、排序操作。
适合精准字段匹配,如:url、name、title等字段。
一般情况,text和keyword共存,设置如下:
“cf_xzjg”: {
“type”: “text”,
“fields”: {
“keyword”: {
“type”: “keyword”
}
},
“analyzer”: “hanlp_index”
},
参考:
https://blog.csdn.net/laoyang360/article/details/78207980
https://www.elastic.co/guide/en/elasticsearch/reference/5.5/ignore-above.html
这篇关于whose UTF8 encoding is longer than the max length 32766的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!