Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Elasticsearch数据写入报错whose UTF8 encoding is longer than the max length 32766的解决方法

Elasticsearch数据写入报错whose UTF8 encoding is longer than the max length 32766的解决方法

原创
作者头像
空洞的盒子
修改于 2025-03-18 08:28:00
修改于 2025-03-18 08:28:00
24200
代码可运行
举报
文章被收录于专栏:JD的专栏JD的专栏
运行总次数:0
代码可运行

完整异常信息如下:

代码语言:txt
AI代码解释
复制
Document contains at least one immense term in field=\"output\"
 (whose UTF8 encoding is longer than the max length 32766), all of which were skipped. 
Please correct the analyzer to not produce such terms.  

报错原因:

在索引mapping中,该字段被动态推断为了keyword类型,而Elasticsearch限制了单个字段的最大UTF-8编码长度为32766字节,通过对比原始数据发现,output字段存储的数据为大段的日志文本内容。导致数据超过了该限制。

解决办法如下:

解决方案1:修改Filebeat配置,限制字段长度

方式1.1:使用truncate_fields进行字段截断

当前场景是通过Filebeat向Elasticsearch写入数据。在Filebeat中我们可以使用truncate_fields处理超长字段,可以在配置中添加以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
processors:
  - truncate_fields:
      fields: ["output"]
      max_bytes: 32000
      fail_on_error: false

参数解释:

参数

释义

fields: ["output"]

仅对output 字段生效。

max_bytes: 32000

限制output 的最大字节数。

fail_on_error: false

避免因截断失败导致日志丢失。

适用情况:如果业务允许接受截断数据,则可以采用该方案。

方式 1.2:使用drop_fields直接删除该字段

如果output不是必须存储的字段,可以选择舍弃该字段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
processors:
  - drop_fields:
      fields: ["output"]

适用情况:如果业务可以丢弃output字段数据,可以选择删除来保障主要数据的正常写入。

解决方案2:调整Elasticsearch的Mapping

如果我们需要让这条超长的日志文本进入Elasticsearch,我们可以通过修改索引Mapping的方式,调整output字段的类型。

方式2.1:将output设为keyword并启用ignore_above

修改索引的 Mapping,将output 设置为keyword,并添加ignore_above:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT indexname/_mapping
{
  "properties": {
    "output": {
      "type": "keyword",
      "ignore_above": 32000
    }
  }
}

解释:

参数

释义

type: "keyword"

字段类型,适用于日志类数据,防止分词导致过长。

ignore_above: 32000

让Elasticsearch自动忽略超过32000字节的值,避免写入报错。

适用情况:需要保存output字段,但可以接受超长数据被忽略。

方式 2.2:将output设为text并禁用indexing

如果只想存储output字段值,但不希望这个字段被Elasticsearch索引(避免超长字段问题),则可以按照一下方式修改mapping:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT indename/_mapping
{
  "properties": {
    "output": {
      "type": "text",
      "index": false
    }
  }
}

适用情况:只需要存储该字段数据,不需要对该字段进行搜索。

解决方案 3:使用Logstash的过滤器对该字段进行处理(Filebeat → Logstash → Elasticsearch)

需要先将Filebeat将数据发送至Logstash,然后通过logstash的过滤器处理后,在通过Logstash将数据发送至Elasticsearch,在Logstash中添加mutate过滤器进行处理:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filter {
  mutate {
    replace => { "output" => "[TRUNCATED]" }
  }
}

或者:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filter {
  ruby {
    code => "
      if event.get('output') && event.get('output').bytesize > 32000
        event.set('output', event.get('output')[0..31999])
      end
    "
  }
}

适用情况:使用Logstash作为中间处理层,通过Logstash的filter阶段超长字段。

方案选择建议

方案

适用场景

配置难度

影响

Filebeat truncate_fields

需要保留output字段,但可接受截断

超长字段会被截断

Filebeat drop_fields

output字段不重要

该字段会被删除

Elasticsearch ignore_above

需要索引但可忽略超长值

⭐⭐

超长数据会被忽略

Elasticsearch index: false

只存储但不搜索该字段

⭐⭐

不能搜索output字段数据

Logstash filter处理

使用Logstash作为数据中间层

⭐⭐

需要引入新的组件来处理问题字段,并需要修改Logstash规则

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
日志太多怎么搞?一套爬虫监控系统全搞定!
很多读者也咨询过我怎么去监控爬虫系统的日志?这里我们给出一个通用的轻量级监控系统架构方式---ELK+Filebeat+Docker,都知道分布式爬虫系统是由一个高可用的控制中心配合多个弹性工作节点组成,假定我们现在把各个工作节点封装成Docker镜像,那么我们通过监控Docker容器的状态来监控爬虫系统了。
云爬虫技术研究笔记
2019/11/05
1.1K0
日志太多怎么搞?一套爬虫监控系统全搞定!
Elasticsearch 实战案例(索引切分、模板、别名、数据迁移)
基于ELK搭建的日志平台,前期匆忙建设过程中一些参数和设计未做过多的考虑,上线后就需要不断根据实际情况做调整,而一些调整限于ELK的一些特性,一旦操作不当就会出现丢数据、数据写入异常、数据查不到等情况。
高广超
2019/02/25
2.8K0
Elasticsearch 实战案例(索引切分、模板、别名、数据迁移)
基于Filebeat、Logstash和Elasticsearch实现微服务日志采集与存储
日志标准化是指所有微服务日志组件的配置均基于一个模板,模板即Logback日志组件的配置文件logback-spring.xml。在该配置文件中你可以定义日志的输出格式、日志的翻滚策略和基于日志级别分离的日志输出策略等。下面基于以下特性给出参考配置模板:
程序猿杜小头
2022/12/01
1.8K0
Elasticsearch学习(五)Elasticsearch中的mapping问题,Search 搜索详解
Mapping在Elasticsearch中是非常重要的一个概念。决定了一个index中的field使用什么数据格式存储,使用什么分词器解析,是否有子字段等。
一写代码就开心
2021/03/02
1.9K0
Elasticsearch学习(五)Elasticsearch中的mapping问题,Search 搜索详解
Elasticsearch 5.x 版本升级到 6.x 版本,数据写入异常处理方案
某客户将云ES从5.6.4版本升级到6.8.2版本后出现数据写入异常,数据丢失的情况。需协助紧急协助处理
zjiekou
2022/11/30
1.2K0
Elasticsearch 5.x 版本升级到 6.x 版本,数据写入异常处理方案
干货 | 论Elasticsearch数据建模的重要性
数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,用图形化的形式去描述业务规则的过程,从而表示现实世界中事务的相互关系的一种映射。 核心概念:
铭毅天下
2018/10/09
2.9K0
干货 | 论Elasticsearch数据建模的重要性
深究|Elasticsearch单字段支持的最大字符数?
在业务系统中,遇到过两个问题: 问题1:设置为keyword类型的字段,插入很长的大段内容后,报字符超出异常,无法插入。 问题2:检索超过ignore_above设定长度的字段后,无法返回结果。 思考:Elasticsearch单字段支持的最大字符数? 本文是基于设置ignore_above之后引申的问题展开讨论与思考。 01 ignore_above的作用? ES中用于设置超过设定字符后,不被索引或者存储。 Strings longer than the ignore_above setting wil
铭毅天下
2018/03/20
4.6K0
深究|Elasticsearch单字段支持的最大字符数?
《Elasticsearch实战与原理解析》原文和代码下载
本文是牛冬的 《Elasticsearch实战与原理解析》的读书笔记。电子书还是看文字类的舒服,可以在PC上阅读,也可以在手机上阅读。看文章最后,提供原文链接和源代码链接。
辉哥
2020/06/29
3.3K0
《Elasticsearch实战与原理解析》原文和代码下载
Elasticsearch RESTful API 常用操作
ElasticSearch 是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
YP小站
2020/06/04
1.5K0
一起学 Elasticsearch 系列 -Mapping
本篇讲解Elasticsearch中非常重要的一个概念:Mapping,Mapping是索引必不可少的组成部分。
BookSea
2023/11/13
6050
一起学 Elasticsearch 系列 -Mapping
Elasticsearch Analyzer
Elasticsearch全文检索的核心是Text Analysis,而Text Analysis由Analyzer实现。
程序猿杜小头
2022/12/01
5950
第十三章·Kibana深入-使用地图统计客户端IP
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
1.3K0
第十三章·Kibana深入-使用地图统计客户端IP
学好Elasticsearch系列-Mapping
这篇讲解Elasticsearch中非常重要的一个概念Mapping,Mapping是索引必不可少的组成部分。
BookSea
2023/07/26
5250
学好Elasticsearch系列-Mapping
干货 | Elasticsearch 索引设计实战指南
随着 Elastic 的上市,ELK Stack 不仅在 BAT 的大公司得到长足的发展,而且在各个中小公司都得到非常广泛的应用,甚至连“婚庆网站”都开始使用 Elasticsearch 了。随之而来的是 Elasticsearch 相关部署、框架、性能优化的文章早已铺天盖地。
铭毅天下
2020/02/20
10.4K0
【升职加薪秘籍】我在服务监控方面的实践(4)-日志监控
在前一节,我们指标这种监控手段完成了机器层级的监控,通过它可以知道机器层面性能的瓶颈在哪里。后续本该讲讲应用层面监控,但是应用监控离不开日志打印,所以今天还是先介绍监控系统的另一种手段,日志监控。
蓝胖子的编程梦
2023/08/30
2440
【升职加薪秘籍】我在服务监控方面的实践(4)-日志监控
触类旁通Elasticsearch:原理
ES被设计为处理海量数据的高性能搜索场景。海量数据具体说至少应该是数亿文档,而高性能具体说就是从数亿文档中任意搜索需要的信息,应该在秒级返回结果。既然ES的一切都是为了性能而设计,从逻辑设计和物理设计两个角度考察ES的数据组织,对于理解ES的工作原理会有帮助。
用户1148526
2019/05/25
8090
开始使用Elasticsearch (2)
在上一篇文章中,我们已经介绍了如何使用 REST 接口来在 Elasticsearch 中创建 index ,文档以及对它们的操作。在今天的文章里,我们来介绍如何利用 Elasticsearch 来搜索我们的数据。Elasticsearch 是近实时的搜索。我们还是接着我们上次的练习“开始使用 Elasticsearch (1)”
腾讯云大数据
2020/07/08
1K0
开始使用Elasticsearch (2)
触类旁通Elasticsearch:关联
ES本身不支持SQL数据库的join操作,在ES中定义关系的方法有对象类型、嵌套文档、父子关系和反规范化。
用户1148526
2019/05/25
6.5K0
严选 | Elasticsearch中文社区201901错题本
马云演讲中曾经提到:很多时候少听成功专家的话。所有的创业者多花点时间学习别人是怎么失败的,因为成功的原因有千千万万,失败的原因就一两个点。
铭毅天下
2019/03/07
9910
Elasticsearch实战(六)-mapping映射
将该字段的值复制到目标字段,实现类似 _all 的作用,不会出现在 _source 中,只用来搜索
JavaEdge
2021/02/23
7840
Elasticsearch实战(六)-mapping映射
推荐阅读
相关推荐
日志太多怎么搞?一套爬虫监控系统全搞定!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验