【问题标题】:Spring Data Elasticsearch MultiField's Mainfield name attribute not workingSpring Data Elasticsearch MultiField 的 Mainfield 名称属性不起作用
【发布时间】:2020-09-02 16:55:34
【问题描述】:

我有一个带有 Spring Data Elasticsearch v4.0.1 的 Spring Boot 应用程序。如果我这样创建一个文档类:

@Document(indexName = "paystub")
public class PayStubEntity {

  @MultiField(
      mainField = @Field(type = Text, name = "account_number"),
      otherFields = {@InnerField(suffix = "keyword", type = Keyword)})
  private String acctNumber;

  @Field(type = Keyword, name = "ccy")
  private String currency;

 ...

生成的映射是:

{
    "paystub": {
        "mappings": {
            "properties": {
                "acctNumber": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword"
                        }
                    }
                },
                "ccy": {
                    "type": "keyword"
                },
                ...
             }
        }
    }
}

显然,货币字段注释中的名称属性值正在用于索引和映射创建,即“ccy”。但是对于字段 acctNumber 上的 MultiField 注释中的 mainField 的 name 属性,情况似乎并非如此。

文档here指出,Field注解的name属性将代表Elasticsearch文档的字段名称,如果没有设置name属性,则默认为注解字段的名称。

但是当在多字段注释中使用字段注释时,这似乎不起作用。

有解决办法吗?

感谢您的帮助!

【问题讨论】:

    标签: java spring elasticsearch spring-data spring-data-elasticsearch


    【解决方案1】:

    这已通过 this issue 修复,并在 4.0.3 和 4.1.M2 版本中发布

    【讨论】:

    • 谢谢@P.J。 Meisch,我更新到 4.0.3 版,一切正常。
    • 还检查了 spring-boot-starter-parent 版本并将其更新为 2.3.3。RELEASE 还包含所需的 spring-data-elasticsearch 版本 4.0.3。
    • 我对 spring-data-elasticsearch 3.2.10(2020 年 9 月发布)有同样的问题。我必须继续使用 4.0.x 吗?
    • @EricTan 我刚刚将它反向移植到 3.2.x 分支,将在下一个版本 (3.2.11) 中
    猜你喜欢
    • 2019-12-27
    • 1970-01-01
    • 2023-04-08
    • 2015-06-12
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2014-09-08
    • 2020-07-15
    相关资源
    最近更新 更多