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

落日映苍穹つ 2023-02-27 15:55 40阅读 0赞

本文目录

一、报错信息

二、错误原因

三、解决方案


一、报错信息

报错信息如下:

  1. Caused by: java.lang.IllegalArgumentException: mapper [sortNum] of different type, current_type [long], merged_type [keyword]
  2. at org.elasticsearch.index.mapper.FieldMapper.doMerge(FieldMapper.java:347)
  3. at org.elasticsearch.index.mapper.NumberFieldMapper.doMerge(NumberFieldMapper.java:1111)
  4. at org.elasticsearch.index.mapper.FieldMapper.merge(FieldMapper.java:333)
  5. at org.elasticsearch.index.mapper.FieldMapper.merge(FieldMapper.java:49)
  6. at org.elasticsearch.index.mapper.ObjectMapper.doMerge(ObjectMapper.java:476)
  7. at org.elasticsearch.index.mapper.RootObjectMapper.doMerge(RootObjectMapper.java:248)
  8. at org.elasticsearch.index.mapper.ObjectMapper.merge(ObjectMapper.java:448)
  9. at org.elasticsearch.index.mapper.RootObjectMapper.merge(RootObjectMapper.java:243)
  10. at org.elasticsearch.index.mapper.Mapping.merge(Mapping.java:88)
  11. at org.elasticsearch.index.mapper.DocumentMapper.merge(DocumentMapper.java:320)
  12. at org.elasticsearch.cluster.metadata.MetaDataMappingService$PutMappingExecutor.applyRequest(MetaDataMappingService.java:267)
  13. at org.elasticsearch.cluster.metadata.MetaDataMappingService$PutMappingExecutor.execute(MetaDataMappingService.java:230)
  14. at org.elasticsearch.cluster.service.ClusterService.executeTasks(ClusterService.java:634)
  15. at org.elasticsearch.cluster.service.ClusterService.calculateTaskOutputs(ClusterService.java:612)
  16. at org.elasticsearch.cluster.service.ClusterService.runTasks(ClusterService.java:571)
  17. at org.elasticsearch.cluster.service.ClusterService$ClusterServiceTaskBatcher.run(ClusterService.java:263)
  18. at org.elasticsearch.cluster.service.TaskBatcher.runIfNotProcessed(TaskBatcher.java:150)
  19. at org.elasticsearch.cluster.service.TaskBatcher$BatchedTask.run(TaskBatcher.java:188)
  20. at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:575)
  21. at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:247)
  22. at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:210)
  23. ... 3 more

二、错误原因

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

三、解决方案

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

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

  1. {
  2. "properties": {
  3. "title": {
  4. "type": "text",
  5. "analyzer": "ik_max_word",
  6. "search_analyzer": "ik_max_word"
  7. },
  8. "keywords": {
  9. "type": "text",
  10. "analyzer": "ik_max_word",
  11. "search_analyzer": "ik_max_word"
  12. },
  13. "description": {
  14. "type": "text",
  15. "analyzer": "ik_max_word",
  16. "search_analyzer": "ik_max_word"
  17. },
  18. "url": {
  19. "type": "keyword"
  20. },
  21. "imageUrl": {
  22. "type": "keyword"
  23. },
  24. "siteId": {
  25. "type": "long"
  26. },
  27. "siteType": {
  28. "type": "keyword"
  29. },
  30. "inputdate": {
  31. "type": "date"
  32. },
  33. "popularity": {
  34. "type": "long"
  35. },
  36. "district": {
  37. "type": "keyword"
  38. },
  39. "community": {
  40. "type": "text"
  41. },
  42. "sortNum": {
  43. "type": "long"
  44. }
  45. }
  46. }

对应的Java实体Document如下:

  1. @Data
  2. @Document(indexName = "hot_estate", type = "hot_estate")
  3. @Mapping(mappingPath = "hotEstateIndex.json")
  4. public class HotEstateDocument{
  5. @Id
  6. private String contentId;
  7. /**
  8. * 标题
  9. */
  10. private String title;
  11. /**
  12. * 关键字
  13. */
  14. private String keywords;
  15. /**
  16. * 描述
  17. */
  18. private String description;
  19. /**
  20. * 内容url
  21. */
  22. private String url;
  23. /**
  24. * 封面多图
  25. */
  26. private String imageUrl;
  27. /**
  28. * 发布时间
  29. */
  30. private Date inputdate;
  31. /**
  32. * 站点id
  33. */
  34. private Long siteId;
  35. /**
  36. * 站点类型
  37. */
  38. private String siteType;
  39. /**
  40. * 人气
  41. */
  42. private Integer popularity;
  43. /**
  44. * 排序号
  45. */
  46. private Integer sortNum;
  47. /**
  48. * 行政区
  49. */
  50. private String district;
  51. /**
  52. * 小区
  53. */
  54. private String community;
  55. public static HotEstateDocument content2Document(TCmsContentVo content) {
  56. HotEstateDocument hotEstateDocument=new HotEstateDocument();
  57. BeanUtils.copyProperties(content,hotEstateDocument);
  58. return hotEstateDocument;
  59. }
  60. }

完结!

发表评论

表情:
评论列表 (有 0 条评论,40人围观)

还没有评论,来说两句吧...

相关阅读