Elasticsearch + Spring 引导:使用@InnerField/@MultiField 从 属性 的方法名称查询创建

Elasticsearch + Spring boot: Query creation from method names for property with @InnerField/@MultiField

我正在尝试使用方法名称构建一个 Elasticsearch 查询,如果 属性 之一有多个字段,如以下

,我只是想知道方法名称是什么
    @MultiField(
            mainField = @Field(type = Text, fielddata = true),
            otherFields = {
                    @InnerField(suffix = "keyword", type = Keyword)
            }
    )
    private String resourceType;

我需要 "keyword" 类型(未分析)以便我可以用整个字符串搜索它。

我试过了

List<Event> findByResourceType_KeywordIsIn(Collection<String> list);

并出现以下错误

No property keyword found for type String! Traversed path: Event.resourceType.

无论如何我可以告诉 spring-data-elasticsearch 它是针对同一个 属性 但一个 InnerField 的吗?

P.S:我当然可以使用 @Query 或使用 NativeSearchQueryBuilder 构建整个查询,但好奇我是否可以只用一个方法名来实现它(更少的代码 -> 更少的单元测试 :))

谢谢

这不适用于 Repository 实现的方法名称。 Spring 数据中进行解析的逻辑使用 java class 的 - 可能嵌套 - 属性,而您需要查询搜索 resourceType.keyword Elasticsearch字段。

正如您已经写过的,您需要 @Query 才能执行此操作。