首页 > 解决方案 > ElasticSearch 记录器,记录整个错误源

问题描述

我正在尝试从 ElasticSearch 的 MapperParsingException 记录器中获取额外信息。

错误消息看起来像

[logs-X][1] 未能执行批量项目(索引)索引 {[logs-X][logs][x],源 [n/a,实际长度:[2.9kb],最大长度:2kb]}

表明source[n/a..

有没有办法打印实际来源?

标签: elasticsearch

解决方案


这是不可能的,至少通过配置

有一个常量值集: https ://github.com/elastic/elasticsearch/blob/master/server/src/main/java/org/elasticsearch/action/index/IndexRequest.java#L87

static final int MAX_SOURCE_LENGTH_IN_TOSTRING = 2048;

并检查了 https://github.com/elastic/elasticsearch/blob/master/server/src/main/java/org/elasticsearch/action/index/IndexRequest.java#L673

@Override
    public String toString() {
        String sSource = "_na_";
        try {
            if (source.length() > MAX_SOURCE_LENGTH_IN_TOSTRING) {
                sSource = "n/a, actual length: [" + new ByteSizeValue(source.length()).toString() + "], max length: " +
                    new ByteSizeValue(MAX_SOURCE_LENGTH_IN_TOSTRING).toString();
            } else {
                sSource = XContentHelper.convertToJson(source, false);
            }
        } catch (Exception e) {
            // ignore
        }
        return "index {[" + index + "][" + id + "], source[" + sSource + "]}";
    }

推荐阅读