zoukankan      html  css  js  c++  java
  • 【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;
        }
    
    }

    完结!

  • 相关阅读:
    【模板】线段树(区间加)
    【模板】树状数组(区间修改+单点查询)
    【模板】并查集
    【模板】最小生成树
    LOJ #10130 点的距离
    【模板】最近公共祖先(LCA)
    【模板】树状数组
    【模板】堆
    LeetCode 242 Valid Anagram
    LeetCode 171 Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/no8g/p/13415461.html
Copyright © 2011-2022 走看看