elasticsearch “如何拒绝”;“无效”;ElasticSearch中的文档
我们目前正在使用Couchbase插件(transport Couchbase)将数据传输并索引到ElasticSearch()中 我在这里查看了ElasticSearch的映射文档: 我的理解是,如果您依赖ElasticSearch的默认值,那么一旦文档被索引,ElasticSearch将为该文档类型创建动态映射。这是我们默认的 我们遇到了这样的问题:在添加了一个特定的文档类型之后,当传输插件插入一个“无效”的文档(文档的字段类型现在不同了——从字符串->数组),ElasticSearch抛出一个异常,并从根本上中断了从Couchbase到ElasticSearch的复制。例外情况如下所示:elasticsearch “如何拒绝”;“无效”;ElasticSearch中的文档,elasticsearch,couchbase,elasticsearch,Couchbase,我们目前正在使用Couchbase插件(transport Couchbase)将数据传输并索引到ElasticSearch()中 我在这里查看了ElasticSearch的映射文档: 我的理解是,如果您依赖ElasticSearch的默认值,那么一旦文档被索引,ElasticSearch将为该文档类型创建动态映射。这是我们默认的 我们遇到了这样的问题:在添加了一个特定的文档类型之后,当传输插件插入一个“无效”的文档(文档的字段类型现在不同了——从字符串->数组),ElasticSearch抛
Caused by: org.elasticsearch.ElasticsearchIllegalArgumentException: unknown property
[xyz]
java.lang.RuntimeException: indexing error MapperParsingException[failed to parse
[doc.myfield]]; nested: ElasticsearchIllegalArgumentException[unknown property[xyz]]
是否有一种方法可以配置ElasticSearch,以便在不引发异常和破坏复制的情况下过滤“无效”文档
谢谢
{
"tweet" : {
"dynamic": "strict",
"properties" : {
"message" : {"type" : "string", "store" : true }
}
}
}
如果您不能按照自己的意愿定义文档的映射,请在
elasticsearch.yml
文件中设置index.mapper.dynamic:false
,理论上(未测试的)elasticsearch(在我看来)应该拒绝无效文档。只是想一想,映射太弱,无法正确检查文档。基本上,它只允许字段名和基本类型。没有词汇表、范围、查找等。如果可以定义自定义类型,它可能会工作。