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
才能执行此操作。
我正在尝试使用方法名称构建一个 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
才能执行此操作。