elasticsearch 注解(@Field、@MultiField)失效
********************************
相关说明
索引文档,需要对字段进行自定义映射
@Data
@Document(indexName = "people3",type = "_doc")
public class People {
@Id
private Integer id;
@Field(type = FieldType.Keyword)
private String name;
@Field(type = FieldType.Text,analyzer = "ik_smart")
private String description;
@Field(type = FieldType.Text,analyzer = "hanlp")
private String description2;
@Field(type = FieldType.Text,analyzer = "pinyin")
private String description3;
@MultiField(mainField = @Field(type = FieldType.Text,analyzer = "ik_smart"),
otherFields = @InnerField(suffix = "inner", type = FieldType.Text, analyzer = "pinyin"))
private String description4;
@MultiField(mainField = @Field(type = FieldType.Text,analyzer = "hanlp"),
otherFields = @InnerField(suffix = "inner",type = FieldType.Text,analyzer = "pinyin"))
private String description5;
}
默认情况下,springboot data elasticsearch使用如下映射方式,自定义映射不起作用
********************************
解决办法:使用elasticsearchRestTemplate手动添加映射
@Resource
private ElasticsearchRestTemplate elasticsearchRestTemplate;
@PostConstruct
public void start(){
elasticsearchRestTemplate.putMapping(People.class);
}
添加此操作后,自定义映射生效