如何在spring-data-elasticsearch中使用norm:enabled:false配置使用@Field注释分析的

时间:2019-01-16 06:08:23

标签: spring-data-elasticsearch

@Field(索引= FieldIndex.analyzed,类型= FieldType.String)

如何在此处添加注释以禁用所分析字段的规范

1 个答案:

答案 0 :(得分:0)

由于无法在Java实体中将规范enable-false属性添加为@field批注的一部分,因此我们可以在mappings.json文件中添加所有映射(所有必需的类型,并将属性作为映射),然后在实体中引用此文件文件。如下图

@Document(indexName = "jobindex")
@Setting(settingPath = "/config/elasticsearch-settings.json")
@Mapping(mappingPath = "/config/mappings.json") //THIS ONE TO ADD
public class JobIndex implements Serializable {
}

和mappings.json看起来像

"mappings": {
    "_doc": { 
      "properties": {
        "title": {
          "type": "text",
          "norms": { "enabled": false } 
        }
      }
    }
  }

注意:当您将特定属性添加为mappings.json的一部分时,而Java @Field批注中不提供这些属性,则最好将json文件的所有字段批注添加到json文件中,而不是在java @ Field批注中。因此,结论是java实体应该没有字段注释,所有映射都应该在mappings.json文件中,并且该文件应该在实体标头中引用,如该答案的第一个代码块中所述。