【问题标题】:Elasticsearch + Spring boot: Query creation from method names for property with @InnerField/@MultiFieldElasticsearch + Spring boot:使用@InnerField/@MultiField 从属性的方法名称创建查询
【发布时间】:2019-12-27 01:54:08
【问题描述】:

我正在尝试使用方法名称构建一个 Elasticsearch 查询,并且只是好奇如果属性之一具有多个字段(如下所示),方法名称是什么

    @MultiField(
            mainField = @Field(type = Text, fielddata = true),
            otherFields = {
                    @InnerField(suffix = "keyword", type = Keyword)
            }
    )
    private String resourceType;

我需要“关键字”类型(未分析),因此我可以使用整个字符串进行搜索。

我试过了

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 构建整个查询,但如果我可以仅使用方法名称来实现它(更少代码 -> 更少单元测试:))

谢谢

【问题讨论】:

    标签: spring-boot elasticsearch spring-data-elasticsearch


    【解决方案1】:

    这不适用于存储库实现的方法名称。 Spring Data 中进行解析的逻辑使用 java 类的 - 可能是嵌套的 - 属性,而您需要有一个查询来搜索 resourceType.keyword Elasticsearch 字段。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      相关资源
      最近更新 更多