spring-data-elasticsearch @Field注解中analyzer无效的解决方案

2022-03-28 20:35:30 浏览数 (1)

环境:

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

0 人点赞