你不会是程序猿吧?

ES7.8.1 检索时这个字段值太长,报错 This builder doesn't allow terms that are larger than 1,000 characters

Elasticsearch | 作者 dxyz | 发布于2021年07月19日 | 阅读数:1534

ES检索时这个字段值太长,报错 This builder doesn't allow terms that are larger than 1,000 characters
这有办法解决么大佬们?

超1000.png

 
已邀请:

Charele - Cisco4321

赞同来自:

这好像是这个自动机的硬性规定,没办法改变。
 
贴出你的查询语句看看。
 

Charele - Cisco4321

赞同来自:

match":{"ti.keyword":"Dental...
 
你用一个keyword类型的去做matchQuery,它又不分词,
这跟用一个termQuery有区别吗

yuechen323 - 晨儿哥

赞同来自:

用户会输入这么长的字符串吗 ?  建议看看主流搜索引擎大概截取多少长度, 一般是50个左右
你想想 50个左右会分成多少个 term,  这也是主流厂商的极限了, 再大没意义

Charele - Cisco4321

赞同来自:

按理来说,你的查询只是matchQuery(和重写后termQuery),
不会产生这样的自动机异常。
 
一直没有想明白是为什么,现在知道了。
是"highlight"高亮的原因。
解决办法:
1 去掉"ti.keyword"高亮
或者改下代码,看看能不能部分内容高亮(少于1k就不会报错了)
 2 改一下Lucene代码去掉这个限制,不过你可能不想搞这么麻烦。
 
这不是“match不支持超过1千字符”的缘故,
就算你把用短term搜出来,这么长的内容做高亮,还是报错。

要回复问题请先登录注册