Elasticsearch,如何更新符合特定条件的特定嵌套数组字段文档?

时间:2016-08-30 21:33:31

标签: arrays api elasticsearch nested updates

我对Elasticsearch很新: 我有一个Elasticsearch映射,旨在容纳来自高度规范化的SQL Server数据库的数据。 每次我进行结构更改(映射更改)时,我都会完成数百万条记录。这有时会非常笨重而且需要数天才能完成。 我试图找到一种方法来部分更新嵌套数组和嵌套对象字段,而无需索引整个索引数据。

这就是我的映射的样子:

{
    "Product": {
        "dynamic": "strict",
        "properties": {
            "ProductID": {
                "type": "integer"
            },
            "ProductCategory": {
                "index": "not_analyzed",
                "type": "string"
            },
            "TotalNumberOfProduct": {
                "type": "float"
            },
            "MetalProduct": {
                "type": "nested",
                "properties": {
                    "MetalProductCategory": {
                        "index": "not_analyzed",
                        "type": "string"
                    },
                    "MetalProductDescription": {
                        "index": "not_analyzed",
                        "type": "string"
                    },
                    "MetalProductID": {
                        "type": "integer"
                    }
                }
            }
        }
    }
}

我可以在单个Product文档下拥有多个MetalProducts嵌套数组文档。 例如。在ProductID 001下,我可以使用MetalProductID = 222 MetalProductID = 333。如何在ProductID = 001下更新一个特定的嵌套文档(MetalProductID = 222)?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您需要_id之前插入的文档来更新它。弹性搜索无论如何都必须重新索引新数据,但这一次,它只能在分片中而不是整个数据中工作。 https://www.elastic.co/guide/en/elasticsearch/guide/current/partial-updates.html