【问题标题】:How to reject "invalid" documents in ElasticSearch如何拒绝 ElasticSearch 中的“无效”文档
【发布时间】:2014-06-12 08:09:57
【问题描述】:

我们目前正在使用 Couchbase 插件 (transport-couchbase) 将数据传输并索引到 ElasticSearch (http://docs.couchbase.com/couchbase-elastic-search/)

我在这里查看了 ElasticSearch 的映射文档: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping.html

我的理解是,如果您依赖 ElasticSearch 的默认设置,一旦文档被索引,ElasticSearch 将为该文档类型创建动态映射。这是我们默认的。

我们遇到了添加特定文档类型之后,以及当传输插件插入“无效”文档(文档的字段类型现在不同——从字符串 -> 数组)时, ElasticSearch 抛出一个异常并从本质上中断了从 Couchbase 到 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,以便简单地过滤“无效”文档而不会引发异常并破坏复制?

谢谢。

【问题讨论】:

  • 你不能定义你想要的文档的映射吗,在你的elasticsearch.yml文件中设置index.mapper.dynamic: false,理论上(未经测试的)elasticsearch(在我看来)应该拒绝无效的文件。只是一个想法。
  • @NathanSmith 映射太弱,无法正确检查文档。基本上它只允许字段名称和原始类型。没有词汇、范围、查找等。也许如果可以定义自定义类型,它会起作用。

标签: elasticsearch couchbase


【解决方案1】:
{
    "tweet" : {
        "dynamic": "strict",
        "properties" : {
            "message" : {"type" : "string", "store" : true }
        }
    }
}

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-dynamic-mapping.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2017-03-01
    • 2017-10-05
    • 2021-11-03
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多