You need to enable JavaScript to run this app. Spring Data Elasticsearch命名查询类转换异常及InnerField查询问题
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data Elasticsearch命名查询类转换异常及InnerField查询问题

问题1解答

Spring Data Elasticsearch 4.0.3.RELEASE 版本完全支持通过下划线分隔的方法名指定MultiField的InnerField查询,你示例的命名写法仅需微调即可正常运行:

  • 方法名调整为 SearchPage<PlayerEntity> findPlayerEntityByPlayerNumber_KeywordIn(List<String> playerNumbers, Pageable pageable);
  • 原理是Spring Data的属性解析规则中,下划线用于明确字段路径层级,会自动映射到playerNumber.keyword字段执行查询,完全满足你用Keyword类型精确匹配的需求,不需要额外配置。

问题2解答

你遇到的类型转换异常是4.0.3.RELEASE版本的固有特性:该版本中@Query声明式查询默认返回的AggregatedPageImpl未实现SearchPage接口,不需要自定义Repository的解决方案有两种:

  1. 调整返回类型为Page<SearchHit<PlayerEntity>>,可以拿到包含相关性得分、字段高亮、原文档在内的所有搜索元数据,分页参数、总条数等分页属性也完整保留
  2. 若不需要搜索命中的附加元数据,仅需要分页信息,可以将返回类型改为Page<PlayerEntity>,可直接正常运行,Page接口自带的getTotalElements()、getTotalPages()等方法完全满足常规业务分页决策需求

注意:你的@Query方法第一个参数使用JSONArray类型存在序列化兼容风险,建议替换为List<String>类型传入参数,避免额外的类型转换异常。

内容的提问来源于stack exchange,提问作者FlatPenguin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 17:54:06