Spring Data Elasticsearch MultiField的Mainfield名称属性不起作用

问题描述

我有一个带有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"
                },...
             }
        }
    }
}

很明显,在索引和映射创建中使用的是货币字段注释中的name属性值,即“ ccy”。但这似乎不是acctNumber字段上的MultiField批注中的mainField的name属性的情况。

文档here声明Field批注的name属性将表示Elasticsearch文档的字段名称,如果未设置name属性,它将认为带注释的字段的名称

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

是否有解决方法

感谢您的帮助!

解决方法

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