【发布时间】: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