Elasticsearch。数据更新并保留以前字段值的历史记录

时间:2016-02-27 15:58:27

标签: php elasticsearch

我的部分映射是:

"current_price"         => ["type" => "float"],
"price_history"         => [
    "type"       => "nested",
    "properties" => [
    "date"  => ["type" => "date"],
    "value" => ["type" => "float"]
]

正如您所看到的,我保留了商品的当前存储价格以及之前的所有价值。我首先要注意的是,当我第一次创造商品时,我当然没有历史。这就是为什么当我创造商品时,我根本不使用price_history,尽管它存在于我的映射中。

$params = [
    'index' => config('storesettings.esIndex'),
    'type'  => config('storesettings.esType'),
    'id'    => $id,
    'body'  => [

        ... 
        "current_price"         => $request->get('current_price'),
        ...

    ]
];

当我编辑商品时,我会改变价格。在这种情况下,我需要将当前价格移动到存档,将其移至price_history字段。然后我需要替换当前名称。问题是关于price_history字段。我得到以前的值($ goods ['_ source'] ['price_history'])然后我添加到这个数组current_name。我已经有了一些历史,一切都很好。但如果我没有,那么我得到错误'Undefined index:price_history'。在这种情况下,我应该检查:if(isset($ goods ['_ source'] ['price_history']))。这是正常的吗?在关系数据库中,我将有一个空数组,但在Elasticsearch中我没有,我必须做数组级别(可以这么说)检查。如何处理此类案件? Maby我应该在创建商品时为price_history添加一个epmty数组?

0 个答案:

没有答案