【问题标题】:Update restrictions on Elasticsearch Object type field更新 Elasticsearch 对象类型字段的限制
【发布时间】:2021-12-15 01:22:26
【问题描述】:

我必须存储包含单个 Json 对象的单个字段的文档。该对象具有可变深度和可变模式。 我像这样配置映射:

"mappings": {
    "properties": {
        "@timestamp": {
            "type": "date"
        },
        "message": {
            "type": "object"
        }
    }
}

它工作正常,Elasticsearch 使用收到的文档创建和更新映射。 问题是在映射中进行了一些更新后,它会拒绝新文档并且不再更新映射。此时我更改了该独立开发者的索引和映射更新。我期待知道正确的解决方案。

例如第一个文档是:

{
    personalInfo:{
        fistName: "tom"
    }
    moviesStatistics: {
        count: 100
    }
}

将更新 Elasticsearch 映射的第二个文档是:

{
    personalInfo:{
        fistName: "tom",
        lastName: "hanks"
    },
    moviesStatistics: {
        count: 100
    },
    education: {
        title: "a title..."
    }
}

Elasticsearch 使用 doc1 创建映射并使用 doc2、doc3、... 更新它,直到收到大量文档。之后,它开始拒绝与最后一个映射字段不匹配的每个文档。

【问题讨论】:

  • 映射有哪些更新?什么是拒绝响应消息?我的第一个猜测是你的字段类型有冲突。
  • 感谢您的回复。例如,一些文档的消息字段具有不同的内部字段但没有冲突。
  • 请用一些示例和响应消息更新您的问题
  • 请提供足够的代码,以便其他人更好地理解或重现问题。
  • 我正在使用 ELK 来监控一个自定义日志,该日志会随着应用程序的每次开发而变化。 Filebeats 将日志发送到 Logstash,Logstash 将其发送到 ElasticSearch,然后 kibana 在仪表板中监控它们。

标签: elasticsearch mapping elk


【解决方案1】:

毕竟我在Elasticsearch的主页https://www.elastic.co/guide/en/elasticsearch/reference/7.13//dynamic-field-mapping.html找到了解决办法 我们可以使用动态映射并简单地使用这个映射:

"mappings": {
        "dynamic": "true"
}

您还应该更改此处提到的一些默认限制: https://www.elastic.co/guide/en/elasticsearch/reference/7.13//mapping-settings-limit.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2021-09-21
    相关资源
    最近更新 更多