【ES异常】mapper [sortNum] of different type, current_type [long], merged_type [keyword]

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 【ES异常】mapper [sortNum] of different type, current_type [long], merged_type [keyword]

一、报错信息

报错信息如下:

Caused by: java.lang.IllegalArgumentException: mapper [sortNum] of different type, current_type [long], merged_type [keyword]
  at org.elasticsearch.index.mapper.FieldMapper.doMerge(FieldMapper.java:347)
  at org.elasticsearch.index.mapper.NumberFieldMapper.doMerge(NumberFieldMapper.java:1111)
  at org.elasticsearch.index.mapper.FieldMapper.merge(FieldMapper.java:333)
  at org.elasticsearch.index.mapper.FieldMapper.merge(FieldMapper.java:49)
  at org.elasticsearch.index.mapper.ObjectMapper.doMerge(ObjectMapper.java:476)
  at org.elasticsearch.index.mapper.RootObjectMapper.doMerge(RootObjectMapper.java:248)
  at org.elasticsearch.index.mapper.ObjectMapper.merge(ObjectMapper.java:448)
  at org.elasticsearch.index.mapper.RootObjectMapper.merge(RootObjectMapper.java:243)
  at org.elasticsearch.index.mapper.Mapping.merge(Mapping.java:88)
  at org.elasticsearch.index.mapper.DocumentMapper.merge(DocumentMapper.java:320)
  at org.elasticsearch.cluster.metadata.MetaDataMappingService$PutMappingExecutor.applyRequest(MetaDataMappingService.java:267)
  at org.elasticsearch.cluster.metadata.MetaDataMappingService$PutMappingExecutor.execute(MetaDataMappingService.java:230)
  at org.elasticsearch.cluster.service.ClusterService.executeTasks(ClusterService.java:634)
  at org.elasticsearch.cluster.service.ClusterService.calculateTaskOutputs(ClusterService.java:612)
  at org.elasticsearch.cluster.service.ClusterService.runTasks(ClusterService.java:571)
  at org.elasticsearch.cluster.service.ClusterService$ClusterServiceTaskBatcher.run(ClusterService.java:263)
  at org.elasticsearch.cluster.service.TaskBatcher.runIfNotProcessed(TaskBatcher.java:150)
  at org.elasticsearch.cluster.service.TaskBatcher$BatchedTask.run(TaskBatcher.java:188)
  at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:575)
  at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:247)
  at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:210)
  ... 3 more

二、错误原因

ES字段类型与Document实体类里的字段类型不一致

三、解决方案

把index.json文件里的ES字段类型与Java代码里的字段类型修改为一致即可。

例如我的index.json修改后的文件如下:

{
  "properties": {
    "title": {
      "type": "text",
      "analyzer": "ik_max_word",
      "search_analyzer": "ik_max_word"
    },
    "keywords": {
      "type": "text",
      "analyzer": "ik_max_word",
      "search_analyzer": "ik_max_word"
    },
    "description": {
      "type": "text",
      "analyzer": "ik_max_word",
      "search_analyzer": "ik_max_word"
    },
    "url": {
      "type": "keyword"
    },
    "imageUrl": {
      "type": "keyword"
    },
    "siteId": {
      "type": "long"
    },
    "siteType": {
      "type": "keyword"
    },
    "inputdate": {
      "type": "date"
    },
    "popularity": {
      "type": "long"
    },
    "district": {
      "type": "keyword"
    },
    "community": {
      "type": "text"
    },
    "sortNum": {
      "type": "long"
    }
  }
}

对应的Java实体Document如下:

@Data
@Document(indexName = "hot_estate", type = "hot_estate")
@Mapping(mappingPath = "hotEstateIndex.json")
public class HotEstateDocument{
    @Id
    private String contentId;
    /**
     * 标题
     */
    private String title;
    /**
     * 关键字
     */
    private String keywords;
    /**
     * 描述
     */
    private String description;
    /**
     * 内容url
     */
    private String url;
    /**
     * 封面多图
     */
    private String imageUrl;
    /**
     * 发布时间
     */
    private Date inputdate;
    /**
     * 站点id
     */
    private Long siteId;
    /**
     * 站点类型
     */
    private String siteType;
    /**
     * 人气
     */
    private Integer popularity;
    /**
     * 排序号
     */
    private Integer sortNum;
    /**
     * 行政区
     */
    private String district;
    /**
     * 小区
     */
    private String community;
    public static HotEstateDocument content2Document(TCmsContentVo content) {
        HotEstateDocument hotEstateDocument=new HotEstateDocument();
        BeanUtils.copyProperties(content,hotEstateDocument);
        return hotEstateDocument;
    }
}

 

完结!


相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
druid 网络协议 Java
Spring Boot集成Druid异常discard long time none received connection.
Spring Boot集成Druid异常discard long time none received connection.
3196 0
|
DataWorks 监控 安全
DataWorks产品使用合集之在从ES中抽取增量数据时,遇到long类型的时间戳,该怎么办
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
156 0
|
SQL 关系型数据库 MySQL
mysql异常java.math.BigInteger cannot be cast to java.lang.Long
mysql异常java.math.BigInteger cannot be cast to java.lang.Long
271 0
|
Java
【异常】SpringBoot报错Command line is too long.Shorten command line for Application or also for Applicatio
【异常】SpringBoot报错Command line is too long.Shorten command line for Application or also for Applicatio
2035 0
YOLO V5出现RuntimeError: result type Float can‘t be cast to the desired output type long int解决方法
YOLO V5出现RuntimeError: result type Float can‘t be cast to the desired output type long int解决方法
1155 0
|
关系型数据库 MySQL Java
Mysql 连接异常 java.math.BigInteger cannot be cast to java.lang.Long
项目启动失败,java.math.BigInteger cannot be cast to java.lang.Long
6039 0
|
JSON JavaScript 前端开发
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
1520 0
|
编译器 C语言
c语言中long的作用类型
c语言中long的作用类型
455 0

热门文章

最新文章