Elasticsearch Node客户端不区分大小写通配符查询报错排查
错误原因
当前Wildcard查询写法不符合Elasticsearch语法规范:case_insensitive参数与查询字段名被放在了wildcard节点的同一层级,ES解析时会将同级所有键识别为待查询字段,因此抛出「不支持多字段」的解析异常。
正确实现代码
带不区分大小写参数的通配符查询,需要将匹配值、扩展参数统一放在目标字段的配置对象内部,参考如下TypeScript写法:
const query: QueryDslQueryContainer = { wildcard: { 'fieldName.wildcard': { value: '*ing', case_insensitive: true } } }
补充说明
- 你之前使用的
'fieldName.wildcard': '*ing'是无额外参数时的简写语法,仅支持直接传入通配符值;只要需要配置case_insensitive这类扩展参数,就必须使用字段对应配置对象的完整写法。 case_insensitive参数接收原生布尔类型值,无需传入字符串格式的'true',避免触发类型校验问题。- Elasticsearch 7.17.0版本完整支持该参数,无需升级服务版本,调整语法后即可正常实现不区分大小写的通配符检索效果。
内容的提问来源于stack exchange,提问作者mojones101
相关产品推荐
相关产品推荐

