环境:
1、es 6.8
2、spring-boot-starter-data-elasticsearch 2.2.5 Release
之所以使用映射文件是因为@Field注解中的analyzer无效,跟踪了下代码发现使用spring-data-elasticsearch在创建es实体类对应的
elasticsearch映射时根本就没有使用@Field注解中的内容,包括名字!!!
最后的解决方案:
代码语言:javascript复制@Getter
@Setter
@Document(indexName="product",type="es-product",shards=3,replicas = 0)
@Mapping(mappingPath="mapping/es-product.json")
public class ESProduct {
@Field
String id;
@Field(name="mainTitle")
String mainTitle;
@Field(name="subTitle")
String subTitle;
@Field(name="brandName")
String brandName;
@Field(name="categoryName")
String categoryName;
}
es-product.json映射文件内容如下所示
代码语言:javascript复制{
"properties": {
"id": {
"type": "keyword"
},
"mainTitle": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"brandName": {
"type": "keyword"
},
"categoryName": {
"type": "keyword"
}
}
}
参考文章:
1、https://stackoverflow.com/questions/31992274/spring-data-elasticsearch-settings-spring-cant-find-config-file
2、https://docs.spring.io/spring-data/elasticsearch/docs/3.2.6.RELEASE/reference/html
3、https://www.elastic.co/guide/en/elasticsearch/reference/6.8/mapping.html